diff --git a/shared/naturalcrit/codeEditor/autocompleteEmoji.js b/client/components/codeEditor/autocompleteEmoji.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/autocompleteEmoji.js
rename to client/components/codeEditor/autocompleteEmoji.js
diff --git a/shared/naturalcrit/codeEditor/close-tag.js b/client/components/codeEditor/close-tag.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/close-tag.js
rename to client/components/codeEditor/close-tag.js
diff --git a/shared/naturalcrit/codeEditor/codeEditor.jsx b/client/components/codeEditor/codeEditor.jsx
similarity index 100%
rename from shared/naturalcrit/codeEditor/codeEditor.jsx
rename to client/components/codeEditor/codeEditor.jsx
diff --git a/shared/naturalcrit/codeEditor/codeEditor.less b/client/components/codeEditor/codeEditor.less
similarity index 100%
rename from shared/naturalcrit/codeEditor/codeEditor.less
rename to client/components/codeEditor/codeEditor.less
diff --git a/shared/naturalcrit/codeEditor/fold-css.js b/client/components/codeEditor/fold-css.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/fold-css.js
rename to client/components/codeEditor/fold-css.js
diff --git a/shared/naturalcrit/codeEditor/fold-pages.js b/client/components/codeEditor/fold-pages.js
similarity index 100%
rename from shared/naturalcrit/codeEditor/fold-pages.js
rename to client/components/codeEditor/fold-pages.js
diff --git a/client/homebrew/editor/editor.jsx b/client/homebrew/editor/editor.jsx
index 2f38d41aa..a00c47403 100644
--- a/client/homebrew/editor/editor.jsx
+++ b/client/homebrew/editor/editor.jsx
@@ -6,7 +6,7 @@ const _ = require('lodash');
const dedent = require('dedent-tabs').default;
import Markdown from '../../../shared/markdown.js';
-const CodeEditor = require('naturalcrit/codeEditor/codeEditor.jsx');
+const CodeEditor = require('client/components/codeEditor/codeEditor.jsx');
const SnippetBar = require('./snippetbar/snippetbar.jsx');
const MetadataEditor = require('./metadataEditor/metadataEditor.jsx');
diff --git a/client/homebrew/pages/newPage/newPage.jsx b/client/homebrew/pages/newPage/newPage.jsx
index 3ecfe073c..83eaeda45 100644
--- a/client/homebrew/pages/newPage/newPage.jsx
+++ b/client/homebrew/pages/newPage/newPage.jsx
@@ -56,6 +56,10 @@ const NewPage = (props)=>{
const editorRef = useRef(null);
const lastSavedBrew = useRef(_.cloneDeep(props.brew));
+ // const saveTimeout = useRef(null);
+ // const warnUnsavedTimeout = useRef(null);
+ const trySaveRef = useRef(trySave); // CTRL+S listener lives outside React and needs ref to use trySave with latest copy of brew
+ const unsavedChangesRef = useRef(unsavedChanges); // Similarly, onBeforeUnload lives outside React and needs ref to unsavedChanges
useEffect(()=>{
loadBrew();
@@ -114,6 +118,11 @@ const NewPage = (props)=>{
if(autoSaveEnabled) trySave(false, hasChange);
}, [currentBrew]);
+ useEffect(()=>{
+ trySaveRef.current = trySave;
+ unsavedChangesRef.current = unsavedChanges;
+ });
+
const handleSplitMove = ()=>{
editorRef.current.update();
};
@@ -141,7 +150,7 @@ const NewPage = (props)=>{
}
};
- const save = async ()=>{
+ const trySave = async ()=>{
setIsSaving(true);
const updatedBrew = { ...currentBrew };
@@ -190,7 +199,7 @@ const NewPage = (props)=>{
// #3 - Unsaved changes exist, click to save, show SAVE NOW
if(unsavedChanges)
- return save now;
+ return save now;
// #4 - No unsaved changes, autosave is ON, show AUTO-SAVED
if(autoSaveEnabled)