Răsfoiți Sursa

get config from db

Steven Fukase 4 ani în urmă
părinte
comite
8b5f75de76

+ 6 - 3
packages/app/src/client/services/EditorContainer.js

@@ -15,6 +15,7 @@ export default class EditorContainer extends Container {
 
     this.appContainer = appContainer;
     this.appContainer.registerContainer(this);
+    this.retrieveEditorSettings = this.retrieveEditorSettings.bind(this);
 
     const mainContent = document.querySelector('#content-main');
 
@@ -36,6 +37,7 @@ export default class EditorContainer extends Container {
       editorOptions: {},
       previewOptions: {},
       isTextlintEnabled: false,
+      textlintRules: [],
 
       indentSize: this.appContainer.config.adminPreferredIndentSize || 4,
     };
@@ -202,12 +204,13 @@ export default class EditorContainer extends Container {
    * Retrieve Editor Settings
    */
   async retrieveEditorSettings() {
-    const res = await this.appContainer.apiv3.get('/personal-setting');
-    const isTextlintEnabled = res.data.currentUser.editorCurrentSettings?.isTextlintEnabled;
+    const { data } = await this.appContainer.apiv3Get('/personal-setting/editor-settings');
+    const isTextlintEnabled = data?.textlintSettings?.isTextlintEnabled;
+    const textlintRules = data?.textlintSettings?.textlintRules;
     this.setState({
       isTextlintEnabled,
+      textlintRules,
     });
-    return isTextlintEnabled;
   }
 
 }

+ 9 - 7
packages/app/src/components/PageEditor/CodeMirrorEditor.jsx

@@ -158,10 +158,6 @@ export default class CodeMirrorEditor extends AbstractEditor {
       ? { dicPath: '/static/dict/cdn' }
       : { dicPath: 'https://cdn.jsdelivr.net/npm/kuromoji@0.1.2/dict' };
 
-    // TODO: Get configs from db
-    this.isTextlintEnabled = true;
-    // this.textlintConfig = [];
-
     this.interceptorManager = new InterceptorManager();
     this.interceptorManager.addInterceptors([
       new PreventMarkdownListInterceptor(),
@@ -204,8 +200,11 @@ export default class CodeMirrorEditor extends AbstractEditor {
     this.setKeymapMode(keymapMode);
   }
 
-  initTextlintSettings() {
-    this.textlintValidator = createValidator(this.textlintConfig);
+  async initTextlintSettings() {
+    await this.props.retrieveEditorSettings();
+    // If database has empty array, pass null instead to enable all default rules
+    const rulesForValidator = this.props.textlintRules?.length !== 0 ? this.props.textlintRules : null;
+    this.textlintValidator = createValidator(rulesForValidator);
     this.codemirrorLintConfig = { getAnnotations: this.textlintValidator, async: true };
   }
 
@@ -984,12 +983,15 @@ export default class CodeMirrorEditor extends AbstractEditor {
 
 CodeMirrorEditor.propTypes = Object.assign({
   editorOptions: PropTypes.object.isRequired,
-  isTextlintEnabled: PropTypes.bool.isRequired,
+  isTextlintEnabled: PropTypes.bool,
+  lintRules: PropTypes.array,
   emojiStrategy: PropTypes.object,
   lineNumbers: PropTypes.bool,
   onMarkdownHelpButtonClicked: PropTypes.func,
   onAddAttachmentButtonClicked: PropTypes.func,
 }, AbstractEditor.propTypes);
+
 CodeMirrorEditor.defaultProps = {
   lineNumbers: true,
+  isTextlintEnabled: false,
 };