Move remaining state to common hook

This commit is contained in:
Trevor Buckner
2026-10-07 19:24:52 +00:00
parent c282d5e5bc
commit 9fb7a79047
4 changed files with 45 additions and 103 deletions
+12 -32
View File
@@ -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();
+12 -32
View File
@@ -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();
+12 -32
View File
@@ -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();
@@ -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);
});