diff --git a/client/modules/IDE/actions/project.js b/client/modules/IDE/actions/project.js index b57cacd2..9c15112a 100644 --- a/client/modules/IDE/actions/project.js +++ b/client/modules/IDE/actions/project.js @@ -126,7 +126,7 @@ function getSynchedProject(currentState, responseProject) { }; } -export function saveProject(selectedFile = null, autosave = false) { +export function saveProject(selectedFile = null, autosave = false, mobile = false) { return (dispatch, getState) => { const state = getState(); if (state.project.isSaving) { @@ -185,16 +185,15 @@ export function saveProject(selectedFile = null, autosave = false) { .then((response) => { dispatch(endSavingProject()); const { hasChanges, synchedProject } = getSynchedProject(getState(), response.data); + + dispatch(setNewProject(synchedProject)); + dispatch(setUnsavedChanges(false)); + browserHistory.push(`${mobile ? '/mobile' : ''}/${response.data.user.username}/sketches/${response.data.id}`); + if (hasChanges) { - dispatch(setNewProject(synchedProject)); - dispatch(setUnsavedChanges(false)); - browserHistory.push(`/${response.data.user.username}/sketches/${response.data.id}`); dispatch(setUnsavedChanges(true)); - } else { - dispatch(setNewProject(synchedProject)); - dispatch(setUnsavedChanges(false)); - browserHistory.push(`/${response.data.user.username}/sketches/${response.data.id}`); } + dispatch(projectSaveSuccess()); if (!autosave) { if (state.preferences.autosave) { @@ -222,9 +221,9 @@ export function saveProject(selectedFile = null, autosave = false) { }; } -export function autosaveProject() { +export function autosaveProject(mobile = false) { return (dispatch, getState) => { - saveProject(null, true)(dispatch, getState); + saveProject(null, true, mobile)(dispatch, getState); }; } diff --git a/client/modules/IDE/pages/MobileIDEView.jsx b/client/modules/IDE/pages/MobileIDEView.jsx index 0ecdfc14..293159d1 100644 --- a/client/modules/IDE/pages/MobileIDEView.jsx +++ b/client/modules/IDE/pages/MobileIDEView.jsx @@ -116,7 +116,7 @@ const handleGlobalKeydown = (props, cmController) => (e) => { // 83 === s e.preventDefault(); e.stopPropagation(); - if (canSaveProject(props)) saveProject(cmController.getContent()); + if (canSaveProject(project, user)) saveProject(cmController.getContent(), false, true); else if (user.authenticated) cloneProject(); else showErrorModal('forceAuthentication'); @@ -145,6 +145,10 @@ const autosave = (autosaveInterval, setAutosaveInterval) => (props, prevProps) = const { selectedFile: oldFile } = prevProps; + const doAutosave = () => autosaveProject(true); + + console.log(isUserOwner(props), project); + if (isUserOwner(props) && project.id) { if (preferences.autosave && ide.unsavedChanges && !ide.justOpenedProject) { if (file.name === oldFile.name && file.content !== oldFile.content) { @@ -152,7 +156,7 @@ const autosave = (autosaveInterval, setAutosaveInterval) => (props, prevProps) = clearTimeout(autosaveInterval); } console.log('will save project in 20 seconds'); - setAutosaveInterval(setTimeout(autosaveProject, 20000)); + setAutosaveInterval(setTimeout(doAutosave, 20000)); } } else if (autosaveInterval && !preferences.autosave) { clearTimeout(autosaveInterval);