From 3b935e3a2fdcbdcdff48f35e6d3c93657a2304d2 Mon Sep 17 00:00:00 2001 From: Tibor Postek Date: Mon, 10 Feb 2020 08:02:22 +0100 Subject: [PATCH] #2 add load project from snapshot --- .../projects/redux/dispatchActions.js | 8 +++++++- .../session/redux/dispatchActions.js | 20 ++++++++----------- js/reducers/ngl/dispatchActions.js | 4 ++-- 3 files changed, 17 insertions(+), 15 deletions(-) diff --git a/js/components/projects/redux/dispatchActions.js b/js/components/projects/redux/dispatchActions.js index 2c4a169d7..cc0ad06f0 100644 --- a/js/components/projects/redux/dispatchActions.js +++ b/js/components/projects/redux/dispatchActions.js @@ -1,12 +1,18 @@ import { setProjectSnapshot } from './actions'; import { api } from '../../../utils/api'; import { base_url } from '../../routes/constants'; +import { reloadNglViewFromSnapshot } from '../../../reducers/ngl/dispatchActions'; export const saveCurrentSnapshot = (snapshot, snapshotDetail) => (dispatch, getState) => { dispatch(setProjectSnapshot(snapshot, snapshotDetail)); }; -export const addSnapshotToProject = (snapshot, snapshotDetail, projectId) => (dispatch, getState) => { +export const storeSnapshotToProject = (snapshot, snapshotDetail, projectId) => (dispatch, getState) => { // TODO store snapshot to BE return api({ url: `${base_url}/api/project/${projectId}`, data: { snapshot, snapshotDetail } }); }; + +export const loadProjectFromSnapshot = (stage, stageId, snapshotData) => (dispatch, getState) => { + dispatch(reloadNglViewFromSnapshot(stage, stageId, snapshotData)); + dispatch(setProjectSnapshot(snapshotData.snapshot, snapshotData.snapshotDetail)); +}; diff --git a/js/components/session/redux/dispatchActions.js b/js/components/session/redux/dispatchActions.js index 72b1e9467..aa962674f 100644 --- a/js/components/session/redux/dispatchActions.js +++ b/js/components/session/redux/dispatchActions.js @@ -15,6 +15,7 @@ import { savingStateConst, savingTypeConst } from '../constants'; import { setLoadedSession, setNewSessionFlag, setNextUUID, setSaveType } from './actions'; import { getStore } from '../../helpers/globalStore'; import { DJANGO_CONTEXT } from '../../../utils/djangoContext'; +import { loadProjectFromSnapshot } from '../../projects/redux/dispatchActions'; export const handleVector = json => dispatch => { let objList = generateObjectList(json['3d']); @@ -27,31 +28,26 @@ export const redeployVectorsLocal = url => dispatch => { return api({ url }).then(response => dispatch(handleVector(response.data['vectors']))); }; +// TODO: fix reload session method export const reloadSession = (myJson, nglViewList) => dispatch => { - let jsonOfView = JSON.parse(JSON.parse(JSON.parse(myJson.scene)).state); - dispatch(reloadApiState(jsonOfView.apiReducers)); + let snapshotData = JSON.parse(JSON.parse(JSON.parse(myJson.scene)).state); + dispatch(reloadApiState(snapshotData.apiReducers)); dispatch(setSessionId(myJson.id)); dispatch(setSessionTitle(myJson.title)); if (nglViewList.length > 0) { - dispatch(reloadSelectionReducer(jsonOfView.selectionReducers)); + dispatch(reloadSelectionReducer(snapshotData.selectionReducers)); nglViewList.forEach(nglView => { - // TODO change this loading - dispatch( - reloadNglViewFromSnapshot( - nglView.stage, - nglView.id //, jsonOfView - ) - ); + dispatch(loadProjectFromSnapshot(nglView.stage, nglView.id, snapshotData)); }); - if (jsonOfView.selectionReducers.vectorOnList.length !== 0) { + if (snapshotData.selectionReducers.vectorOnList.length !== 0) { let url = window.location.protocol + '//' + window.location.host + '/api/vector/' + - jsonOfView.selectionReducers.vectorOnList[JSON.stringify(0)] + + snapshotData.selectionReducers.vectorOnList[JSON.stringify(0)] + '/'; dispatch(redeployVectorsLocal(url)).catch(error => { throw new Error(error); diff --git a/js/reducers/ngl/dispatchActions.js b/js/reducers/ngl/dispatchActions.js index fac8594fc..f179f34f1 100644 --- a/js/reducers/ngl/dispatchActions.js +++ b/js/reducers/ngl/dispatchActions.js @@ -16,7 +16,7 @@ import { createRepresentationsArray } from '../../components/nglView/generatingO import { SELECTION_TYPE } from '../../components/nglView/constants'; import { removeFromComplexList, removeFromFragmentDisplayList, removeFromVectorOnList } from '../selection/actions'; import { nglObjectDictionary } from '../../components/nglView/renderingObjects'; -import { addSnapshotToProject, saveCurrentSnapshot } from '../../components/projects/redux/dispatchActions'; +import { storeSnapshotToProject, saveCurrentSnapshot } from '../../components/projects/redux/dispatchActions'; import { DJANGO_CONTEXT } from '../../utils/djangoContext'; import { SnapshotType } from '../../components/projects/redux/constants'; import moment from 'moment'; @@ -73,7 +73,7 @@ const createInitialSnapshot = projectId => async (dispatch, getState) => { // TODO condition to check if project exists and if is open target or project dispatch(saveCurrentSnapshot(snapshot, snapshotDetail)); if (projectId) { - dispatch(addSnapshotToProject(snapshot, snapshotDetail, projectId)); + dispatch(storeSnapshotToProject(snapshot, snapshotDetail, projectId)); } };