1- import { autorun , makeAutoObservable } from 'mobx' ;
2-
1+ import { autorun , makeAutoObservable , observable } from 'mobx' ;
2+ import { v4 as uuid } from 'uuid' ;
33import TaskService from './TaskService' ;
44import TaskModel , { ITimeRangeModel } from './models/TaskModel' ;
55import {
@@ -23,6 +23,7 @@ import { ITreeItemWithParent } from '../../types/ITreeItem';
2323export default class TaskStore {
2424 tasks : TasksByProject = { } ;
2525 activeTask : TaskModel | undefined ;
26+ versionHash = uuid ( ) ;
2627 private tasksService = new TaskService ( ) ;
2728 private interval : NodeJS . Timeout | undefined ;
2829
@@ -37,13 +38,14 @@ export default class TaskStore {
3738 }
3839
3940 set ( projectId : string , tasksInProject : TaskModel [ ] ) {
40- this . tasks [ projectId ] = tasksInProject ;
41+ this . tasks [ projectId ] = observable . array ( tasksInProject ) ;
4142 this . tasksService . save ( this . tasks ) ;
4243 }
4344
4445 setTime ( task : TaskModel , timeIndex : number , timeRange : ITimeRangeModel ) {
4546 task . time [ timeIndex ] = timeRange ;
4647 this . tasksService . save ( this . tasks ) ;
48+ this . updateVersion ( ) ;
4749 GaService . event ( EEventCategory . TimeRange , ETimeRangeEvents . Update ) ;
4850 }
4951
@@ -54,6 +56,7 @@ export default class TaskStore {
5456
5557 task . time . splice ( timeIndex , 1 ) ;
5658 this . tasksService . save ( this . tasks ) ;
59+ this . updateVersion ( ) ;
5760 GaService . event ( EEventCategory . TimeRange , ETimeRangeEvents . Delete ) ;
5861 }
5962
@@ -92,10 +95,10 @@ export default class TaskStore {
9295 add ( task : TaskModel ) {
9396 const { projectId } = task ;
9497 if ( ! Array . isArray ( this . tasks [ projectId ] ) ) {
95- this . tasks [ projectId ] = [ ] ;
98+ this . tasks [ projectId ] = observable . array ( ) ; // TODO this.set()
9699 }
97100 this . tasks [ projectId ] . push ( task ) ;
98- this . tasks [ projectId ] = this . tasks [ projectId ] . slice ( ) ;
101+ this . updateVersion ( ) ;
99102 this . tasksService . save ( this . tasks ) ;
100103 GaService . event ( EEventCategory . Tasks , ETasksEvents . Create ) ;
101104 }
@@ -130,12 +133,14 @@ export default class TaskStore {
130133 }
131134 }
132135 this . tasksService . save ( this . tasks ) ;
136+ this . updateVersion ( ) ;
133137 GaService . event ( EEventCategory . Tasks , ETasksEvents . Delete ) ;
134138 }
135139
136140 deleteProjectTasks ( projectKey : string ) {
137141 delete this . tasks [ projectKey ] ;
138142 this . tasksService . save ( this . tasks ) ;
143+ this . updateVersion ( ) ;
139144 }
140145
141146 startTimer ( task : TaskModel ) {
@@ -144,6 +149,7 @@ export default class TaskStore {
144149 task . start ( ) ;
145150 this . setupReminder ( task ) ;
146151 this . tasksService . save ( this . tasks ) ;
152+ this . updateVersion ( ) ;
147153 }
148154
149155 stopTimer ( silent ?: boolean ) {
@@ -155,6 +161,7 @@ export default class TaskStore {
155161 if ( ! silent ) {
156162 this . setupReminder ( ) ;
157163 this . tasksService . save ( this . tasks ) ;
164+ this . updateVersion ( ) ;
158165 }
159166 }
160167
@@ -188,7 +195,7 @@ export default class TaskStore {
188195 checkTaskFn
189196 ) ;
190197
191- this . set ( projectId , this . tasks [ projectId ] . slice ( ) ) ;
198+ this . set ( projectId , this . tasks [ projectId ] ) ;
192199 }
193200 GaService . event ( EEventCategory . Tasks , ETasksEvents . Check ) ;
194201 }
@@ -207,7 +214,7 @@ export default class TaskStore {
207214 markExpanded
208215 ) ;
209216
210- this . set ( projectId , this . tasks [ projectId ] . slice ( ) ) ;
217+ this . set ( projectId , this . tasks [ projectId ] ) ;
211218 }
212219 }
213220
@@ -275,4 +282,8 @@ export default class TaskStore {
275282 clearInterval ( this . interval ) ;
276283 }
277284 }
285+
286+ private updateVersion ( ) {
287+ this . versionHash = uuid ( ) ;
288+ }
278289}
0 commit comments