From 0281e4e309609fcb17b55bd31911e01456d5851d Mon Sep 17 00:00:00 2001 From: Trevor Buckner Date: Wed, 7 Oct 2026 17:58:04 +0000 Subject: [PATCH] Move googleDrive button into common hook --- client/homebrew/pages/editPage/editPage.jsx | 87 ------------------ client/homebrew/pages/homePage/homePage.jsx | 5 +- client/homebrew/pages/newPage/newPage.jsx | 5 +- .../utils/commonEditPageFunctions.jsx | 88 ++++++++++++++++++- 4 files changed, 86 insertions(+), 99 deletions(-) diff --git a/client/homebrew/pages/editPage/editPage.jsx b/client/homebrew/pages/editPage/editPage.jsx index d3ffbbb34..e71c610c2 100644 --- a/client/homebrew/pages/editPage/editPage.jsx +++ b/client/homebrew/pages/editPage/editPage.jsx @@ -10,13 +10,9 @@ import { DEFAULT_BREW_LOAD } from '../../../../server/brewDefau import useCommonEditPageFunctions from '../../utils/commonEditPageFunctions.jsx'; -import Nav from '@navbar/nav.jsx'; - // Page specific imports import { gzipSync, strToU8 } from 'fflate'; - import { updateHistory, versionHistoryGarbageCollection } from '../../utils/versionHistory.js'; -import googleDriveIcon from '../../googleDrive.svg'; const useLocalStorage = false; const sandbox = false; @@ -31,42 +27,7 @@ const EditPage = (props)=>{ }; const [currentBrew, setCurrentBrew] = useState(props.brew); - const [saveGoogle, setSaveGoogle] = useState(!!props.brew.googleId); const [error, setError] = useState(null); - const [alertTrashedGoogleBrew, setAlertTrashedGoogleBrew] = useState(props.brew.trashed); - const [alertNoGoogleToTransfer, setAlertNoGoogleToTransfer] = useState(false); - const [alertOwnershipToTransfer, setAlertOwnershipToTransfer] = useState(false); - const [confirmGoogleTransfer, setConfirmGoogleTransfer] = useState(false); - - const handleGoogleClick = ()=>{ - if(currentBrew.authors.length > 0 && global.account?.username !== currentBrew.authors[0]) { - setAlertOwnershipToTransfer(true); - return; - } - if(!global.account?.googleId) { - setAlertNoGoogleToTransfer(true); - return; - } - - setConfirmGoogleTransfer((prev)=>!prev); - setError(null); - }; - - const closeAlerts = (e)=>{ - e.stopPropagation(); //Only handle click once so alert doesn't reopen - setAlertTrashedGoogleBrew(false); - setAlertNoGoogleToTransfer(false); - setConfirmGoogleTransfer(false); - setAlertOwnershipToTransfer(false); - }; - - const toggleGoogleStorage = (e)=>{ - closeAlerts(e); - const newSaveGoogle = !saveGoogle; - setSaveGoogle((prev)=>!prev); - setError(null); - trySave(true, true, newSaveGoogle); - }; const save = async (brew, saveToGoogle)=>{ await updateHistory(brew).catch(console.error); @@ -101,56 +62,9 @@ const EditPage = (props)=>{ history.replaceState(null, null, `/edit/${savedBrew.editId}`);; }; - const renderGoogleDriveIcon = ()=>( - - Google Drive icon - - {alertOwnershipToTransfer && ( -
- You must be the Owner to transfer between the Homebrewery and Google Drive! - The owner of this file is {currentBrew.authors[0]}. -

-
Okay
-
- )} - - {alertNoGoogleToTransfer && ( -
- You must be signed in to a Google account to transfer between the Homebrewery and Google Drive! - -
Sign In
-
-
Not Now
-
- )} - - {alertTrashedGoogleBrew && ( -
- This brew is currently in your Trash folder on Google Drive!
- If you want to keep it, make sure to move it before it is deleted permanently!
-
Save my brew
-
- )} - - {confirmGoogleTransfer && ( -
- {saveGoogle - ? 'Would you like to transfer this brew from your Google Drive storage back to the Homebrewery?' - : 'Would you like to transfer this brew from the Homebrewery to your personal Google Drive storage?'} -
-
Yes
-
No
-
- )} -
- ); - const { renderPanels, - trySave, } = useCommonEditPageFunctions({ - saveGoogle, - setSaveGoogle, error, setError, currentBrew, @@ -162,7 +76,6 @@ const EditPage = (props)=>{ onSaveSuccess, pageName, showEditorButtons, - renderGoogleDriveIcon, userThemes : props.userThemes }); diff --git a/client/homebrew/pages/homePage/homePage.jsx b/client/homebrew/pages/homePage/homePage.jsx index 85552bfd3..94f824fd5 100644 --- a/client/homebrew/pages/homePage/homePage.jsx +++ b/client/homebrew/pages/homePage/homePage.jsx @@ -23,12 +23,11 @@ const HomePage =(props)=>{ }; const [currentBrew, setCurrentBrew] = useState(props.brew); - const [saveGoogle, setSaveGoogle] = useState(global.account?.googleId ? true : false); const [error, setError] = useState(undefined); const save = async (brew, saveToGoogle)=>{ const res = await request - .post(`/api${saveGoogle ? '?saveToGoogle=true' : ''}`) + .post(`/api${saveToGoogle ? '?saveToGoogle=true' : ''}`) .send(brew) .catch((err)=>{ console.error('Error Updating Local Brew'); @@ -47,8 +46,6 @@ const HomePage =(props)=>{ const { renderPanels } = useCommonEditPageFunctions({ - saveGoogle, - setSaveGoogle, error, setError, currentBrew, diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx index ba272507e..238ac3965 100644 --- a/client/homebrew/pages/newPage/newPage.jsx +++ b/client/homebrew/pages/newPage/newPage.jsx @@ -23,12 +23,11 @@ const NewPage = (props)=>{ }; const [currentBrew, setCurrentBrew] = useState(props.brew); - const [saveGoogle, setSaveGoogle] = useState(global.account?.googleId ? true : false); const [error, setError] = useState(null); const save = async (brew, saveToGoogle)=>{ const res = await request - .post(`/api${saveGoogle ? '?saveToGoogle=true' : ''}`) + .post(`/api${saveToGoogle ? '?saveToGoogle=true' : ''}`) .send(brew) .catch((err)=>{ console.error('Error Updating Local Brew'); @@ -47,8 +46,6 @@ const NewPage = (props)=>{ const { renderPanels } = useCommonEditPageFunctions({ - saveGoogle, - setSaveGoogle, error, setError, currentBrew, diff --git a/client/homebrew/utils/commonEditPageFunctions.jsx b/client/homebrew/utils/commonEditPageFunctions.jsx index 48048c619..1a37a2a23 100644 --- a/client/homebrew/utils/commonEditPageFunctions.jsx +++ b/client/homebrew/utils/commonEditPageFunctions.jsx @@ -24,6 +24,7 @@ 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; +import googleDriveIcon from '../../googleDrive.svg'; const AUTOSAVE_KEY = 'HB_editor_autoSaveOn'; const BREWKEY = 'HB_newPage_content'; @@ -38,8 +39,6 @@ const UNSAVED_WARNING_POPUP_TIMEOUT = 4000; //Show the warning for 4 seconds export default function useCommonEditPageFunctions(dependencies) { const { - saveGoogle, - setSaveGoogle, error, setError, currentBrew, @@ -50,7 +49,6 @@ export default function useCommonEditPageFunctions(dependencies) { save, onSaveSuccess, pageName, - renderGoogleDriveIcon = ()=>{}, showEditorButtons, userThemes = {} } = dependencies; @@ -62,6 +60,12 @@ export default function useCommonEditPageFunctions(dependencies) { const [unsavedChanges, setUnsavedChanges] = useState(false); const [themeBundle, setThemeBundle] = useState({}); const [HTMLErrors, setHTMLErrors] = useState(hbfm.validate(currentBrew.text)); + const [saveGoogle, setSaveGoogle] = useState(currentBrew.googleId); + + const [alertTrashedGoogleBrew, setAlertTrashedGoogleBrew] = useState(currentBrew.trashed); + const [alertNoGoogleToTransfer, setAlertNoGoogleToTransfer] = useState(false); + const [alertOwnershipToTransfer, setAlertOwnershipToTransfer] = useState(false); + const [confirmGoogleTransfer, setConfirmGoogleTransfer] = useState(false); const [currentEditorViewPageNum, setCurrentEditorViewPageNum] = useState(1); const [currentEditorCursorPageNum, setCurrentEditorCursorPageNum] = useState(1); @@ -276,13 +280,89 @@ export default function useCommonEditPageFunctions(dependencies) { snippets : newData.snippets })); + //======----- Google Toggle Button -----====== + const closeAlerts = (e)=>{ + e.stopPropagation(); //Only handle click once so alert doesn't reopen + setAlertTrashedGoogleBrew(false); + setAlertNoGoogleToTransfer(false); + setConfirmGoogleTransfer(false); + setAlertOwnershipToTransfer(false); + }; + + const handleGoogleClick = ()=>{ + if(currentBrew.authors.length > 0 && global.account?.username !== currentBrew.authors[0]) { + setAlertOwnershipToTransfer(true); + return; + } + if(!global.account?.googleId) { + setAlertNoGoogleToTransfer(true); + return; + } + + setConfirmGoogleTransfer((prev)=>!prev); + setError(null); + }; + + const toggleGoogleStorage = (e)=>{ + closeAlerts(e); + const newSaveGoogle = !saveGoogle; + setSaveGoogle((prev)=>!prev); + setError(null); + trySave(true, true, newSaveGoogle); + }; + + const renderGoogleDriveIcon = ()=>( + + Google Drive icon + + {alertOwnershipToTransfer && ( +
+ You must be the Owner to transfer between the Homebrewery and Google Drive! + The owner of this file is {currentBrew.authors[0]}. +

+
Okay
+
+ )} + + {alertNoGoogleToTransfer && ( +
+ You must be signed in to a Google account to transfer between the Homebrewery and Google Drive! + +
Sign In
+
+
Not Now
+
+ )} + + {alertTrashedGoogleBrew && ( +
+ This brew is currently in your Trash folder on Google Drive!
+ If you want to keep it, make sure to move it before it is deleted permanently!
+
Save my brew
+
+ )} + + {confirmGoogleTransfer && ( +
+ {saveGoogle + ? 'Would you like to transfer this brew from your Google Drive storage back to the Homebrewery?' + : 'Would you like to transfer this brew from the Homebrewery to your personal Google Drive storage?'} +
+
Yes
+
No
+
+ )} +
+ ); + + //======----- Navbar -----====== const renderNavbar = ()=>( {currentBrew.title} - {renderGoogleDriveIcon()} + {(pageName = 'editPage') && renderGoogleDriveIcon()} {error ? :