diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index 2a35f81bd..f5ca38748 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -1,4 +1,3 @@ -/* eslint-disable max-lines */ import './editPage.less'; // Common imports @@ -12,22 +11,12 @@ import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefau import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; import Nav from '@navbar/nav.jsx'; -import Navbar from '@navbar/navbar.jsx'; -import NewBrewItem from '@navbar/newbrew.navitem.jsx'; -import AccountNavItem from '@navbar/account.navitem.jsx'; -import ErrorNavItem from '@navbar/error-navitem.jsx'; -import HelpNavItem from '@navbar/help.navitem.jsx'; -import VaultNavItem from '@navbar/vault.navitem.jsx'; -import PrintNavItem from '@navbar/print.navitem.jsx'; -import RecentNavItems from '@navbar/recent.navitem.jsx'; -const { both: RecentNavItem } = RecentNavItems; // Page specific imports import { md5 } from 'hash-wasm'; import { gzipSync, strToU8 } from 'fflate'; import { makePatches, stringifyPatches } from '@sanity/diff-match-patch'; -import ShareNavItem from '@navbar/share.navitem.jsx'; import { updateHistory, versionHistoryGarbageCollection } from '../../utils/versionHistory.js'; import googleDriveIcon from '../../googleDrive.svg'; @@ -182,47 +171,12 @@ const EditPage = (props)=>{ ); - const renderAutoSaveButton = ()=>( - - Autosave - - ); - - const renderNavbar = ()=>{ - return - - {currentBrew.title} - - - - {renderGoogleDriveIcon()} - {error - ? - : - {renderSaveButton()} - {renderAutoSaveButton()} - } - - - - - - - - - ; - }; - const { - toggleAutoSave, - clearError, - renderSaveButton, renderPanels, - autoSaveEnabled, trySave, - currentBrewRendererPageNum } = useCommonEditPageFunctions({ saveGoogle, + error, setError, currentBrew, setCurrentBrew, @@ -236,9 +190,9 @@ const EditPage = (props)=>{ showFloatingButtons, lastSavedBrew, save, - renderNavbar, pageName, showEditorButtons, + renderGoogleDriveIcon, userThemes: props.userThemes }); diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index f3b734bfb..3a0590889 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -1,4 +1,3 @@ - import './homePage.less'; // Common imports @@ -11,21 +10,7 @@ import { DEFAULT_BREW } from '../../../../server/brewDefau import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; -import Nav from '@navbar/nav.jsx'; -import Navbar from '@navbar/navbar.jsx'; -import NewBrewItem from '@navbar/newbrew.navitem.jsx'; -import AccountNavItem from '@navbar/account.navitem.jsx'; -import ErrorNavItem from '@navbar/error-navitem.jsx'; -import HelpNavItem from '@navbar/help.navitem.jsx'; -import VaultNavItem from '@navbar/vault.navitem.jsx'; -import PrintNavItem from '@navbar/print.navitem.jsx'; -import RecentNavItems from '@navbar/recent.navitem.jsx'; -const { both: RecentNavItem } = RecentNavItems; - - // Page specific imports - - const BREWKEY = 'HB_newPage_content'; const STYLEKEY = 'HB_newPage_style'; const SNIPKEY = 'HB_newPage_snippets'; @@ -64,28 +49,11 @@ const HomePage =(props)=>{ window.location = `/edit/${saved.editId}`; }; - const renderNavbar = ()=>{ - return - - {error - ? - : renderSaveButton()} - - - - - - - - ; - }; - const { - clearError, - renderSaveButton, renderPanels } = useCommonEditPageFunctions({ saveGoogle, + error, setError, currentBrew, setCurrentBrew, @@ -99,7 +67,6 @@ const HomePage =(props)=>{ showFloatingButtons, lastSavedBrew, save, - renderNavbar, pageName, showEditorButtons, userThemes: {} diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index ca65c17bb..951b0a4e0 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -1,4 +1,3 @@ - import './newPage.less'; // Common imports @@ -8,21 +7,9 @@ import { hbfm } from 'marked-hbfm'; import _ from 'lodash'; import { DEFAULT_BREW } from '../../../../server/brewDefaults.js'; -import { printCurrentBrew, fetchThemeBundle, splitTextStyleAndMetadata } from '@shared/helpers.js'; import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; -import Nav from '@navbar/nav.jsx'; -import Navbar from '@navbar/navbar.jsx'; -import NewBrewItem from '@navbar/newbrew.navitem.jsx'; -import AccountNavItem from '@navbar/account.navitem.jsx'; -import ErrorNavItem from '@navbar/error-navitem.jsx'; -import HelpNavItem from '@navbar/help.navitem.jsx'; -import VaultNavItem from '@navbar/vault.navitem.jsx'; -import PrintNavItem from '@navbar/print.navitem.jsx'; -import RecentNavItems from '@navbar/recent.navitem.jsx'; -const { both: RecentNavItem } = RecentNavItems; - // Page specific imports const BREWKEY = 'HB_newPage_content'; const STYLEKEY = 'HB_newPage_style'; @@ -109,32 +96,11 @@ const NewPage = (props)=>{ window.location = `/edit/${savedBrew.editId}`; }; - const renderNavbar = ()=>( - - - {currentBrew.title} - - - - {error - ? - : renderSaveButton()} - - - - - - - - - ); - const { - clearError, - renderSaveButton, renderPanels } = useCommonEditPageFunctions({ saveGoogle, + error, setError, currentBrew, setCurrentBrew, @@ -148,7 +114,6 @@ const NewPage = (props)=>{ showFloatingButtons, lastSavedBrew, save, - renderNavbar, pageName, showEditorButtons, userThemes: props.userThemes diff --git a/client/homebrew/utils/commonEditPageFunctions.jsx b/client/homebrew/utils/commonEditPageFunctions.jsx index ac7d804bc..f92bf9b4d 100644 --- a/client/homebrew/utils/commonEditPageFunctions.jsx +++ b/client/homebrew/utils/commonEditPageFunctions.jsx @@ -1,7 +1,6 @@ import React, { useState, useEffect, useEffectEvent, useRef } from 'react'; import { printCurrentBrew, fetchThemeBundle } from '@shared/helpers.js'; import _ from 'lodash'; -import Nav from '@navbar/nav.jsx'; import Headtags from '@vitreum/headtags.js'; import SplitPane from '@components/splitPane/splitPane.jsx'; @@ -10,6 +9,19 @@ import BrewRenderer from '../brewRenderer/brewRenderer.jsx'; import LockNotification from '../pages/editPage/lockNotification/lockNotification.jsx'; const Meta = Headtags.Meta; +//===---- Navbar +import Nav from '@navbar/nav.jsx'; +import Navbar from '@navbar/navbar.jsx'; +import NewBrewItem from '@navbar/newbrew.navitem.jsx'; +import AccountNavItem from '@navbar/account.navitem.jsx'; +import ErrorNavItem from '@navbar/error-navitem.jsx'; +import HelpNavItem from '@navbar/help.navitem.jsx'; +import VaultNavItem from '@navbar/vault.navitem.jsx'; +import PrintNavItem from '@navbar/print.navitem.jsx'; +import ShareNavItem from '@navbar/share.navitem.jsx'; +import RecentNavItems from '@navbar/recent.navitem.jsx'; +const { both: RecentNavItem } = RecentNavItems; + const AUTOSAVE_KEY = 'HB_editor_autoSaveOn'; const SAVE_TIMEOUT = 10000; //Autosave 10 seconds after last change @@ -19,6 +31,7 @@ const UNSAVED_WARNING_POPUP_TIMEOUT = 4000; //Show the warning for 4 seconds export default function useCommonEditPageFunctions(dependencies) { const { saveGoogle, + error, setError, currentBrew, setCurrentBrew, @@ -32,8 +45,8 @@ export default function useCommonEditPageFunctions(dependencies) { showFloatingButtons, lastSavedBrew, save, - renderNavbar, pageName, + renderGoogleDriveIcon = ()=>{}, showEditorButtons, userThemes = {} } = dependencies; @@ -78,7 +91,7 @@ export default function useCommonEditPageFunctions(dependencies) { }; return ()=>{ document.removeEventListener('keydown', handleControlKeys); - window.onBeforeUnload = null; + window.onbeforeunload = null; }; }, []); @@ -148,9 +161,7 @@ export default function useCommonEditPageFunctions(dependencies) { setError(null); setHTMLErrors(hbfm.validate(currentBrew.text)); await save(currentBrew, saveToGoogle) - .catch((err)=>{ - setError(err); - }); + .catch((err)=>{setError(err);}); setIsSaving(false); setLastSavedTime(new Date()); if(!autoSaveEnabled) resetWarnUnsavedTimer(); @@ -186,7 +197,7 @@ export default function useCommonEditPageFunctions(dependencies) { return saved; }; - //TODO: Candidate for removal; only used in editPage, so may not be necessary + //TODO: Candidate for refactor/rename; used with history tool to load previous verion; may overlap with snippet injection or handleBrewChange const updateBrew = (newData)=>setCurrentBrew((prevBrew)=>({ ...prevBrew, style : newData.style, @@ -194,12 +205,41 @@ export default function useCommonEditPageFunctions(dependencies) { snippets : newData.snippets })); + const renderNavbar = ()=>( + + + {currentBrew.title} + + + {renderGoogleDriveIcon()} + {error + ? + : + {renderSaveButton()} + {pageName == "editPage" && renderAutoSaveButton()} + } + + + + + {(pageName == "editPage") && } + + + + + ); + + const renderAutoSaveButton = ()=>( + + Autosave + + ); + const renderFloatingSaveButtons = ()=>( <>
trySave(true, true, saveGoogle)}> Save current
- Create your own @@ -239,7 +279,7 @@ export default function useCommonEditPageFunctions(dependencies) { errors={HTMLErrors} onPageChange={setCurrentBrewRendererPageNum} currentEditorCursorPageNum={currentEditorCursorPageNum} - allowPrint={true} //TODO: candidate for cleanup. Homepage only place where allowPrint = false. Vote OK to allow print everywhere + allowPrint={true} //TODO: candidate for cleanup in brewRenderer. Homepage only place where allowPrint = false. Vote OK to allow print everywhere /> @@ -248,15 +288,7 @@ export default function useCommonEditPageFunctions(dependencies) { ); return { - handleSplitMove, - handleBrewChange, - toggleAutoSave, - clearError, trySave, - renderSaveButton, - renderPanels, - autoSaveEnabled, - unsavedChanges, - currentBrewRendererPageNum + renderPanels }; } \ No newline at end of file