Skip to content
This repository was archived by the owner on Dec 26, 2022. It is now read-only.

Commit 5d3fb21

Browse files
author
Dmitry Yadrikhinsky
committed
Refactoring Stores
1 parent ea2bc90 commit 5d3fb21

File tree

3 files changed

+21
-39
lines changed

3 files changed

+21
-39
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { ITreeItem } from '../types/ITreeItem';
22

3-
export default abstract class AbstractTreeModelStore<T extends ITreeItem<any>> {
4-
protected getItemRecursive(
3+
export default abstract class TreeModelStoreHelper {
4+
static getItemRecursive<T extends ITreeItem<any>>(
55
tasks: T[],
66
condition: (task: T) => boolean
77
): T | undefined {
@@ -19,7 +19,7 @@ export default abstract class AbstractTreeModelStore<T extends ITreeItem<any>> {
1919
return undefined;
2020
}
2121

22-
protected getItemsRecursive(
22+
static getItemsRecursive<T extends ITreeItem<any>>(
2323
tasks: T[],
2424
condition: (task: T) => boolean,
2525
result: T[]

src/services/projects/ProjectStore.ts

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,17 @@
1-
import { action, makeObservable, observable } from 'mobx';
1+
import { makeAutoObservable } from 'mobx';
22

33
import ProjectModel from '../../models/ProjectModel';
44
import ProjectService from './ProjectService';
5-
import AbstractTreeModelStore from '../../base/AbstractTreeModelStore';
5+
import TreeModelStoreHelper from '../../base/TreeModelStoreHelper';
66

7-
export default class ProjectStore extends AbstractTreeModelStore<ProjectModel> {
7+
export default class ProjectStore {
88
projects: ProjectModel[] = [];
99
activeProject: string = '';
1010

1111
private projectService = new ProjectService();
1212

1313
constructor() {
14-
super();
15-
makeObservable(this, {
16-
projects: observable,
17-
activeProject: observable,
18-
set: action,
19-
get: action,
20-
add: action,
21-
setActiveProject: action,
22-
restore: action,
23-
});
14+
makeAutoObservable(this);
2415
}
2516

2617
set(projects: ProjectModel[]) {
@@ -32,7 +23,7 @@ export default class ProjectStore extends AbstractTreeModelStore<ProjectModel> {
3223
function compare(project: ProjectModel) {
3324
return project.key === projectKey;
3425
}
35-
return this.getItemRecursive(this.projects, compare);
26+
return TreeModelStoreHelper.getItemRecursive(this.projects, compare);
3627
}
3728

3829
add(project: ProjectModel) {

src/services/tasks/TaskStore.ts

Lines changed: 13 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,17 @@
1-
import { action, makeObservable, observable } from 'mobx';
1+
import { makeAutoObservable } from 'mobx';
22

33
import TaskService from './TaskService';
44
import TaskModel from '../../models/TaskModel';
55
import TasksByProject from '../../models/TasksByProject';
6-
import AbstractTreeModelStore from '../../base/AbstractTreeModelStore';
6+
import TreeModelStoreHelper from '../../base/TreeModelStoreHelper';
77

8-
export default class TaskStore extends AbstractTreeModelStore<TaskModel> {
8+
export default class TaskStore {
99
tasks: TasksByProject = {};
1010
activeTask: TaskModel | undefined;
1111
private tasksService = new TaskService();
1212

1313
constructor() {
14-
super();
15-
makeObservable(this, {
16-
tasks: observable,
17-
activeTask: observable,
18-
set: action,
19-
getTasks: action,
20-
getTaskByKey: action,
21-
getTaskByDate: action,
22-
add: action,
23-
startTimer: action,
24-
endTimer: action,
25-
restore: action,
26-
getCheckedKeys: action,
27-
checkTasks: action,
28-
});
14+
makeAutoObservable(this);
2915
}
3016

3117
set(projectId: string, tasks: TaskModel[]) {
@@ -43,7 +29,7 @@ export default class TaskStore extends AbstractTreeModelStore<TaskModel> {
4329
}
4430

4531
for (const tasks of Object.values(this.tasks)) {
46-
const found = this.getItemRecursive(tasks, condition);
32+
const found = TreeModelStoreHelper.getItemRecursive(tasks, condition);
4733
if (found) {
4834
return found;
4935
}
@@ -59,7 +45,7 @@ export default class TaskStore extends AbstractTreeModelStore<TaskModel> {
5945
}
6046

6147
for (const tasks of Object.values(this.tasks)) {
62-
this.getItemsRecursive(tasks, condition, result);
48+
TreeModelStoreHelper.getItemsRecursive(tasks, condition, result);
6349
}
6450
return result;
6551
}
@@ -98,9 +84,14 @@ export default class TaskStore extends AbstractTreeModelStore<TaskModel> {
9884
function condition(task: TaskModel): boolean {
9985
return task.checked;
10086
}
87+
10188
if (Array.isArray(this.tasks[projectId])) {
10289
const found: TaskModel[] = [];
103-
this.getItemsRecursive(this.tasks[projectId], condition, found);
90+
TreeModelStoreHelper.getItemsRecursive(
91+
this.tasks[projectId],
92+
condition,
93+
found
94+
);
10495
return found.map((f) => f.key);
10596
}
10697
return [];
@@ -129,7 +120,7 @@ export default class TaskStore extends AbstractTreeModelStore<TaskModel> {
129120
return task.active;
130121
}
131122

132-
return this.getItemRecursive(tasks, condition);
123+
return TreeModelStoreHelper.getItemRecursive(tasks, condition);
133124
}
134125

135126
private checkTasksRecursive(tasks: TaskModel[], taskIds: string[]) {

0 commit comments

Comments
 (0)