فهرست منبع

refactor PageContainer.updateStateAfterSave

Yuki Takei 6 سال پیش
والد
کامیت
4ecca57791

+ 1 - 3
src/client/js/components/PageEditor.jsx

@@ -117,7 +117,7 @@ class PageEditor extends React.Component {
    * save and update state of containers
    */
   async onSaveWithShortcut() {
-    const { appContainer, pageContainer, editorContainer } = this.props;
+    const { pageContainer, editorContainer } = this.props;
     const optionsToSave = editorContainer.getCurrentOptionsToSave();
 
     try {
@@ -129,8 +129,6 @@ class PageEditor extends React.Component {
 
       // update state of EditorContainer
       editorContainer.setState({ tags });
-
-      appContainer.setIsDocSaved(true);
     }
     catch (error) {
       logger.error('failed to save', error);

+ 1 - 3
src/client/js/components/PageEditorByHackmd.jsx

@@ -125,7 +125,7 @@ class PageEditorByHackmd extends React.Component {
    * @param {string} markdown
    */
   async onSaveWithShortcut(markdown) {
-    const { appContainer, pageContainer, editorContainer } = this.props;
+    const { pageContainer, editorContainer } = this.props;
     const optionsToSave = editorContainer.getCurrentOptionsToSave();
 
     try {
@@ -137,8 +137,6 @@ class PageEditorByHackmd extends React.Component {
 
       // update state of EditorContainer
       editorContainer.setState({ tags });
-
-      appContainer.setIsDocSaved(true);
     }
     catch (error) {
       logger.error('failed to save', error);

+ 7 - 2
src/client/js/services/PageContainer.js

@@ -110,6 +110,9 @@ export default class PageContainer extends Container {
    * @param {Array[Tag]} tags Array of Tag
    */
   updateStateAfterSave(page, tags) {
+    // mark that the document is not editing
+    this.appContainer.setIsDocSaved(true);
+
     const { editorMode } = this.appContainer.state;
 
     // update state of PageContainer
@@ -121,8 +124,10 @@ export default class PageContainer extends Container {
       revisionIdHackmdSynced: page.revisionHackmdSynced,
       hasDraftOnHackmd: page.hasDraftOnHackmd,
       markdown: page.revision.body,
-      tags,
     };
+    if (tags != null) {
+      newState.tags = tags;
+    }
     this.setState(newState);
 
     // PageEditor component
@@ -151,7 +156,7 @@ export default class PageContainer extends Container {
    * @param {object} optionsToSave
    * @return {object} { page: Page, tags: Tag[] }
    */
-  async save(markdown, optionsToSave) {
+  async save(markdown, optionsToSave = {}) {
     const { editorMode } = this.appContainer.state;
 
     const { pageId, path } = this.state;