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