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

Merge pull request #4217 from weseek/imprv/fetch-is-textlint-enabled

fetch 'isTexlintEnabled' from DB
cao 4 лет назад
Родитель
Сommit
468ece210c

+ 14 - 0
packages/app/src/client/services/EditorContainer.js

@@ -35,6 +35,8 @@ export default class EditorContainer extends Container {
 
       editorOptions: {},
       previewOptions: {},
+      isTextlintEnabled: false,
+
       indentSize: this.appContainer.config.adminPreferredIndentSize || 4,
     };
 
@@ -195,4 +197,16 @@ export default class EditorContainer extends Container {
     return null;
   }
 
+
+  /**
+   * Retrieve Editor Settings
+   */
+  async retrieveEditorSettings() {
+    const res = await this.appContainer.apiv3.get('/personal-setting');
+    const isTextlintEnabled = res.data.currentUser.editorCurrentSettings?.isTextlintEnabled;
+    this.setState({
+      isTextlintEnabled,
+    });
+  }
+
 }

+ 13 - 5
packages/app/src/components/PageEditor/OptionsSelector.jsx

@@ -34,7 +34,6 @@ class OptionsSelector extends React.Component {
     this.state = {
       isCddMenuOpened: false,
       isMathJaxEnabled,
-      isTextlintEnabled: false,
     };
 
     this.availableThemes = [
@@ -59,6 +58,13 @@ class OptionsSelector extends React.Component {
     this.onChangeIndentSize = this.onChangeIndentSize.bind(this);
   }
 
+
+  async componentDidMount() {
+    const { editorContainer } = this.props;
+    await editorContainer.retrieveEditorSettings();
+  }
+
+
   onChangeTheme(newValue) {
     const { editorContainer } = this.props;
 
@@ -118,9 +124,9 @@ class OptionsSelector extends React.Component {
   }
 
   async updateIsTextlintEnabledToDB() {
-    const { appContainer } = this.props;
+    const { appContainer, editorContainer } = this.props;
     try {
-      await appContainer.apiv3Put('/personal-setting/editor-settings', { isTextlintEnabled: this.state.isTextlintEnabled });
+      await appContainer.apiv3Put('/personal-setting/editor-settings', { isTextlintEnabled: editorContainer.state.isTextlintEnabled });
     }
     catch (err) {
       toastError(err);
@@ -129,7 +135,8 @@ class OptionsSelector extends React.Component {
   }
 
   async switchTextlintEnabledHandler() {
-    this.setState({ isTextlintEnabled: !this.state.isTextlintEnabled });
+    const { editorContainer } = this.props;
+    editorContainer.setState({ isTextlintEnabled: !editorContainer.state.isTextlintEnabled });
     this.updateIsTextlintEnabledToDB();
   }
 
@@ -310,7 +317,8 @@ class OptionsSelector extends React.Component {
   }
 
   renderIsTextlintEnabledMenuItem() {
-    const isActive = this.state.isTextlintEnabled;
+    const { editorContainer } = this.props;
+    const isActive = editorContainer.state.isTextlintEnabled;
 
     const iconClasses = ['text-info'];
     if (isActive) {