diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index e71c610c2..ab614b39d 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -1,34 +1,22 @@ import './editPage.less'; // Common imports -import React, { useState } from 'react'; -import request from '../../utils/request-middleware.js'; - -import _ from 'lodash'; - -import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js'; - +import React from 'react'; +import request from '../../utils/request-middleware.js'; +import _ from 'lodash'; import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; +import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefaults.js'; // Page specific imports import { gzipSync, strToU8 } from 'fflate'; import { updateHistory, versionHistoryGarbageCollection } from '../../utils/versionHistory.js'; -const useLocalStorage = false; -const sandbox = false; -const showFloatingButtons = false; -const showEditorButtons = true; -const pageName = 'editPage'; - const EditPage = (props)=>{ props = { brew : DEFAULT_BREW_LOAD, ...props }; - const [currentBrew, setCurrentBrew] = useState(props.brew); - const [error, setError] = useState(null); - const save = async (brew, saveToGoogle)=>{ await updateHistory(brew).catch(console.error); await versionHistoryGarbageCollection().catch(console.error); @@ -41,12 +29,7 @@ const EditPage = (props)=>{ .put(`/api/update/${brew.editId}${params}`) .set('Content-Encoding', 'gzip') .set('Content-Type', 'application/json') - .send(compressedBrew) - .catch((err)=>{ - console.error('Error Updating Local Brew'); - setError(err); - }); - if(!res) return; + .send(compressedBrew); const updatedFields = { googleId : res.body.googleId ?? null, //TODO: investigate if we can set googleId:null in server/update instead of undefined @@ -65,18 +48,15 @@ const EditPage = (props)=>{ const { renderPanels, } = useCommonEditPageFunctions({ - error, - setError, - currentBrew, - setCurrentBrew, - useLocalStorage, - sandbox, - showFloatingButtons, + useLocalStorage : false, + sandbox : false, + showFloatingButtons : false, + showEditorButtons : true, + pageName : 'newPage', + brew : props.brew, + userThemes : props.userThemes, save, onSaveSuccess, - pageName, - showEditorButtons, - userThemes : props.userThemes }); return renderPanels(); diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 94f824fd5..014cc8e42 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -1,20 +1,11 @@ import './homePage.less'; // Common imports -import React, { useState } from 'react'; -import request from '../../utils/request-middleware.js'; -import _ from 'lodash'; - -import { DEFAULT_BREW } from '../../../../server/brewDefaults.js'; - +import React from 'react'; +import request from '../../utils/request-middleware.js'; +import _ from 'lodash'; import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; - -// Page specific imports -const useLocalStorage = false; -const sandbox = true; -const showFloatingButtons = true; -const showEditorButtons = false; -const pageName = 'homePage'; +import { DEFAULT_BREW } from '../../../../server/brewDefaults.js'; const HomePage =(props)=>{ props = { @@ -22,18 +13,10 @@ const HomePage =(props)=>{ ...props }; - const [currentBrew, setCurrentBrew] = useState(props.brew); - const [error, setError] = useState(undefined); - const save = async (brew, saveToGoogle)=>{ const res = await request .post(`/api${saveToGoogle ? '?saveToGoogle=true' : ''}`) - .send(brew) - .catch((err)=>{ - console.error('Error Updating Local Brew'); - setError(err); - }); - if(!res) return; + .send(brew); return res.body; }; @@ -46,18 +29,15 @@ const HomePage =(props)=>{ const { renderPanels } = useCommonEditPageFunctions({ - error, - setError, - currentBrew, - setCurrentBrew, - useLocalStorage, - sandbox, - showFloatingButtons, + useLocalStorage : false, + sandbox : true, + showFloatingButtons : true, + showEditorButtons : false, + pageName : 'homePage', + brew : props.brew, + userThemes : {}, save, onSaveSuccess, - pageName, - showEditorButtons, - userThemes : {} }); return renderPanels(); diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index 238ac3965..9ce022d0d 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -1,20 +1,11 @@ import './newPage.less'; // Common imports -import React, { useState } from 'react'; -import request from '../../utils/request-middleware.js'; -import _ from 'lodash'; - -import { DEFAULT_BREW } from '../../../../server/brewDefaults.js'; - +import React from 'react'; +import request from '../../utils/request-middleware.js'; +import _ from 'lodash'; import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; - -// Page specific imports -const useLocalStorage = true; -const sandbox = true; -const showFloatingButtons = false; -const showEditorButtons = true; -const pageName = 'newPage'; +import { DEFAULT_BREW } from '../../../../server/brewDefaults.js'; const NewPage = (props)=>{ props = { @@ -22,18 +13,10 @@ const NewPage = (props)=>{ ...props }; - const [currentBrew, setCurrentBrew] = useState(props.brew); - const [error, setError] = useState(null); - const save = async (brew, saveToGoogle)=>{ const res = await request .post(`/api${saveToGoogle ? '?saveToGoogle=true' : ''}`) - .send(brew) - .catch((err)=>{ - console.error('Error Updating Local Brew'); - setError(err); - }); - if(!res) return; + .send(brew); return res.body; }; @@ -46,18 +29,15 @@ const NewPage = (props)=>{ const { renderPanels } = useCommonEditPageFunctions({ - error, - setError, - currentBrew, - setCurrentBrew, - useLocalStorage, - sandbox, - showFloatingButtons, + useLocalStorage : true, + sandbox : true, + showFloatingButtons : false, + showEditorButtons : true, + pageName : 'newPage', + brew : props.brew, + userThemes : props.userThemes, save, onSaveSuccess, - pageName, - showEditorButtons, - userThemes : props.userThemes }); return renderPanels(); diff --git a/client/homebrew/utils/commonEditPageFunctions.jsx b/client/homebrew/utils/commonEditPageFunctions.jsx index af9ac370d..b65ce34c1 100644 --- a/client/homebrew/utils/commonEditPageFunctions.jsx +++ b/client/homebrew/utils/commonEditPageFunctions.jsx @@ -39,10 +39,7 @@ const UNSAVED_WARNING_POPUP_TIMEOUT = 4000; //Show the warning for 4 seconds export default function useCommonEditPageFunctions(dependencies) { const { - error, - setError, - currentBrew, - setCurrentBrew, + brew, useLocalStorage, sandbox, showFloatingButtons, @@ -53,6 +50,7 @@ export default function useCommonEditPageFunctions(dependencies) { userThemes = {} } = dependencies; + const [currentBrew, setCurrentBrew] = useState(brew); const [isSaving, setIsSaving] = useState(false); const [lastSavedTime, setLastSavedTime] = useState(new Date()); const [autoSaveEnabled, setAutoSaveEnabled] = useState(!sandbox); @@ -61,6 +59,7 @@ export default function useCommonEditPageFunctions(dependencies) { const [themeBundle, setThemeBundle] = useState({}); const [HTMLErrors, setHTMLErrors] = useState(hbfm.validate(currentBrew.text)); const [saveGoogle, setSaveGoogle] = useState(currentBrew.googleId); + const [error, setError] = useState(null); const [alertTrashedGoogleBrew, setAlertTrashedGoogleBrew] = useState(currentBrew.trashed); const [alertNoGoogleToTransfer, setAlertNoGoogleToTransfer] = useState(false); @@ -222,7 +221,10 @@ export default function useCommonEditPageFunctions(dependencies) { }; const savedBrew = await save(brewToSave, saveToGoogle) - .catch((err)=>{setError(err);}); + .catch((err)=>{ + console.error('Error Updating Local Brew'); + setError(err); + }); if(savedBrew) { lastSavedBrew.current = { ...snapshotBrewBeforeSave, @@ -235,11 +237,11 @@ export default function useCommonEditPageFunctions(dependencies) { })); if(useLocalStorage) clearLocalStorage(); + setLastSavedTime(new Date()); + if(!autoSaveEnabled) resetWarnUnsavedTimer(); onSaveSuccess(savedBrew); } setIsSaving(false); - setLastSavedTime(new Date()); - if(!autoSaveEnabled) resetWarnUnsavedTimer(); }, newTimeout); });