4
4
setIsTrackingCompoundsRestoring ,
5
5
setIsUndoRedoAction ,
6
6
setProjectActionListLoaded ,
7
- setIsSnapshotDirty
7
+ setIsSnapshotDirty ,
8
+ setSnapshotActionsDownloaded
8
9
} from './actions' ;
9
10
import { createInitAction } from './trackingActions' ;
10
11
import { actionType , actionObjectType , NUM_OF_SECONDS_TO_IGNORE_MERGE , mapTypesStrings } from './constants' ;
@@ -169,6 +170,7 @@ import {
169
170
import { turnSide } from '../../components/preview/viewerControls/redux/actions' ;
170
171
import { getQualityOffActions } from './utils' ;
171
172
import { compoundsColors } from '../../components/preview/compounds/redux/constants' ;
173
+ import { isEqual , uniqWith } from 'lodash' ;
172
174
173
175
export const addCurrentActionsListToSnapshot = ( snapshot , project , nglViewList ) => async ( dispatch , getState ) => {
174
176
let projectID = project && project . projectID ;
@@ -177,19 +179,27 @@ export const addCurrentActionsListToSnapshot = (snapshot, project, nglViewList)
177
179
await dispatch ( setSnapshotToActions ( actionList , snapshot , projectID , project , nglViewList , true ) ) ;
178
180
} ;
179
181
180
- export const saveCurrentActionsList = ( snapshot , project , nglViewList , all = false ) => async ( dispatch , getState ) => {
182
+ export const saveCurrentActionsList = ( snapshot , project , nglViewList , all , isAnonymousSnapshot = false ) => async (
183
+ dispatch ,
184
+ getState
185
+ ) => {
181
186
let projectID = project && project . projectID ;
182
- let actionList = await dispatch ( getTrackingActions ( projectID ) ) ;
187
+ let actionList = await dispatch ( getTrackingActions ( isAnonymousSnapshot ? null : projectID ) ) ;
183
188
184
- if ( all === false ) {
185
- dispatch ( setSnapshotToActions ( actionList , snapshot , projectID , project , nglViewList , false ) ) ;
186
- } else {
187
- dispatch ( setSnapshotToAllActions ( actionList , snapshot , projectID ) ) ;
189
+ if ( ! isAnonymousSnapshot ) {
190
+ if ( all === false ) {
191
+ dispatch ( setSnapshotToActions ( actionList , snapshot , projectID , project , nglViewList , false ) ) ;
192
+ } else {
193
+ dispatch ( setSnapshotToAllActions ( actionList , snapshot , projectID ) ) ;
194
+ }
188
195
}
189
- await dispatch ( saveActionsList ( project , snapshot , actionList , nglViewList ) ) ;
196
+ await dispatch ( saveActionsList ( project , snapshot , actionList , nglViewList /*, isAnonymousSnapshot*/ ) ) ;
190
197
} ;
191
198
192
- const saveActionsList = ( project , snapshot , actionList , nglViewList ) => async ( dispatch , getState ) => {
199
+ const saveActionsList = ( project , snapshot , actionList , nglViewList , isAnonymousSnapshot = false ) => async (
200
+ dispatch ,
201
+ getState
202
+ ) => {
193
203
const state = getState ( ) ;
194
204
const snapshotID = snapshot && snapshot . id ;
195
205
if ( snapshotID ) {
@@ -526,7 +536,9 @@ const saveActionsList = (project, snapshot, actionList, nglViewList) => async (d
526
536
currentActions . push ( Object . assign ( { ...trackAction } ) ) ;
527
537
}
528
538
529
- await dispatch ( saveSnapshotAction ( snapshot , project , currentActions ) ) ;
539
+ if ( ! isAnonymousSnapshot ) {
540
+ await dispatch ( saveSnapshotAction ( snapshot , project , currentActions ) ) ;
541
+ }
530
542
await dispatch ( saveTrackingActions ( currentActions , snapshotID ) ) ;
531
543
dispatch ( setCurrentActionsList ( currentActions ) ) ;
532
544
}
@@ -905,8 +917,10 @@ export const restoreCurrentActionsList = snapshotID => async (dispatch, getState
905
917
} ;
906
918
907
919
const restoreTrackingActions = snapshotID => async ( dispatch , getState ) => {
920
+ const state = getState ( ) ;
921
+ const areSnapshotActionsDownloaded = state . trackingReducers . areSnapshotActionsDownloaded ;
908
922
// console.log(`snapshotDebug - restoreTrackingActions - start`);
909
- if ( snapshotID ) {
923
+ if ( snapshotID && ! areSnapshotActionsDownloaded ) {
910
924
try {
911
925
// console.log(`snapshotDebug - restoreTrackingActions - before getting actions`);
912
926
return api ( {
@@ -923,6 +937,7 @@ const restoreTrackingActions = snapshotID => async (dispatch, getState) => {
923
937
924
938
let snapshotActions = [ ...listToSet ] ;
925
939
dispatch ( setCurrentActionsList ( snapshotActions ) ) ;
940
+ dispatch ( setSnapshotActionsDownloaded ( true ) ) ;
926
941
// console.log(`snapshotDebug - restoreTrackingActions - end - success`);
927
942
return Promise . resolve ( snapshotActions ) ;
928
943
// return Promise.resolve();
@@ -969,10 +984,16 @@ const restoreTargetActions = orderedActionList => (dispatch, getState) => {
969
984
} ;
970
985
971
986
export const restoreAfterTargetActions = ( stages , projectId , snapshotId ) => async ( dispatch , getState ) => {
972
- const currentActionList = await dispatch ( restoreTrackingActions ( snapshotId ) ) ;
973
-
974
987
const state = getState ( ) ;
975
988
989
+ const areSnapshotActionsDownloaded = state . trackingReducers . areSnapshotActionsDownloaded ;
990
+ let currentActionList = [ ] ;
991
+ if ( ! areSnapshotActionsDownloaded ) {
992
+ currentActionList = await dispatch ( restoreTrackingActions ( snapshotId ) ) ;
993
+ } else {
994
+ currentActionList = state . trackingReducers . current_actions_list ;
995
+ }
996
+
976
997
// const currentActionList = state.trackingReducers.current_actions_list;
977
998
const orderedActionList = currentActionList . sort ( ( a , b ) => a . timestamp - b . timestamp ) ;
978
999
// console.log(`snapshotDebug - restoreAfterTargetActions - no. of actions: ${orderedActionList.length}`);
@@ -3739,7 +3760,7 @@ export const checkSendTrackingActions = (save = false) => async (dispatch, getSt
3739
3760
const sendActions = state . trackingReducers . send_actions_list ;
3740
3761
const length = sendActions . length ;
3741
3762
3742
- if ( length >= CONSTANTS . COUNT_SEND_TRACK_ACTIONS || save ) {
3763
+ if ( /* length >= CONSTANTS.COUNT_SEND_TRACK_ACTIONS || */ save ) {
3743
3764
await dispatch ( sendTrackingActions ( sendActions , currentProject , true ) ) ;
3744
3765
}
3745
3766
} ;
@@ -3797,6 +3818,8 @@ const getTrackingActions = (projectID, withTreeSeparation) => (dispatch, getStat
3797
3818
const currentProject = state . projectReducers . currentProject ;
3798
3819
const currentProjectID = currentProject && currentProject . projectID ;
3799
3820
const sendActions = state . trackingReducers . send_actions_list ;
3821
+ const currentActionList = state . trackingReducers . current_actions_list ;
3822
+ const trackActionsList = state . trackingReducers . track_actions_list ;
3800
3823
3801
3824
if ( projectID ) {
3802
3825
dispatch ( setIsActionsLoading ( true ) ) ;
@@ -3837,7 +3860,10 @@ const getTrackingActions = (projectID, withTreeSeparation) => (dispatch, getStat
3837
3860
dispatch ( setIsActionsLoading ( false ) ) ;
3838
3861
} ) ;
3839
3862
} else {
3840
- let projectActions = [ ...sendActions ] ;
3863
+ // let projectActions = [...sendActions];
3864
+ // const projectActions = [];
3865
+ let projectActions = [ ...currentActionList , ...sendActions , ...trackActionsList ] ;
3866
+ projectActions = uniqWith ( projectActions , isEqual ) ;
3841
3867
dispatch ( setProjectActionList ( projectActions ) ) ;
3842
3868
return Promise . resolve ( projectActions ) ;
3843
3869
}
@@ -3906,14 +3932,14 @@ const copyActionsToProject = (toProject, setActionList = true, clear = false) =>
3906
3932
}
3907
3933
} ;
3908
3934
3909
- export const sendTrackingActionsByProjectId = ( projectID , authorID ) => async ( dispatch , getState ) => {
3935
+ export const sendTrackingActionsByProjectId = ( projectID , authorID , offline = false ) => async ( dispatch , getState ) => {
3910
3936
const state = getState ( ) ;
3911
3937
const currentProject = state . projectReducers . currentProject ;
3912
3938
const currentProjectID = currentProject && currentProject . projectID ;
3913
3939
3914
3940
const project = { projectID, authorID } ;
3915
3941
3916
- await dispatch ( getTrackingActions ( currentProjectID ) ) ;
3942
+ await dispatch ( getTrackingActions ( offline ? null : currentProjectID ) ) ;
3917
3943
await dispatch ( copyActionsToProject ( project , false , currentProjectID && currentProjectID != null ? true : false ) ) ;
3918
3944
} ;
3919
3945
0 commit comments