Просмотр исходного кода

ensure to toggle drawer when switching editor mode

Yuki Takei 5 лет назад
Родитель
Сommit
643bdcaf9e
2 измененных файлов с 18 добавлено и 3 удалено
  1. 3 3
      src/client/js/legacy/crowi.js
  2. 15 0
      src/client/js/services/AppContainer.js

+ 3 - 3
src/client/js/legacy/crowi.js

@@ -250,10 +250,10 @@ $(() => {
 
   // tab changing handling
   $('a[href="#revision-body"]').on('show.bs.tab', () => {
-    appContainer.setState({ editorMode: null });
+    appContainer.setEditorMode(null);
   });
   $('a[href="#edit"]').on('show.bs.tab', () => {
-    appContainer.setState({ editorMode: 'builtin' });
+    appContainer.setEditorMode('builtin');
     $('body').addClass('on-edit');
     $('body').addClass('builtin-editor');
   });
@@ -262,7 +262,7 @@ $(() => {
     $('body').removeClass('builtin-editor');
   });
   $('a[href="#hackmd"]').on('show.bs.tab', () => {
-    appContainer.setState({ editorMode: 'hackmd' });
+    appContainer.setEditorMode('hackmd');
     $('body').addClass('on-edit');
     $('body').addClass('hackmd');
   });

+ 15 - 0
src/client/js/services/AppContainer.js

@@ -382,6 +382,11 @@ export default class AppContainer extends Container {
     return users;
   }
 
+  setEditorMode(editorMode) {
+    this.setState({ editorMode });
+    this.updateDrawerMode({ ...this.state, editorMode }); // generate newest state object
+  }
+
   toggleDrawer() {
     const { isDrawerOpened } = this.state;
     this.setState({ isDrawerOpened: !isDrawerOpened });
@@ -433,6 +438,16 @@ export default class AppContainer extends Container {
     localStorage.preferDrawerModeOnEditByUser = bool;
   }
 
+  /**
+   * Update drawer related state by specified 'newState' object
+   * @param {object} newState A newest state object
+   *
+   * Specify 'newState' like following code:
+   *
+   *   { ...this.state, overwriteParam: overwriteValue }
+   *
+   * because updating state of unstated container will be delayed unless you use await
+   */
   updateDrawerMode(newState) {
     const {
       editorMode, isDeviceSmallerThanMd, preferDrawerModeByUser, preferDrawerModeOnEditByUser,