mirror of
https://github.com/naturalcrit/homebrewery.git
synced 2026-11-04 20:29:01 +00:00
Merge pull request #5100 from naturalcrit/new/edit/home-more-cleanup
New/edit/home Move remaining state to common hook
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
|
||||
Reference in New Issue
Block a user