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

resolve conflict to pass optionsToSave props

kaori 3 лет назад
Родитель
Сommit
8bc2606714

+ 6 - 6
packages/app/src/client/services/PageContainer.js

@@ -7,9 +7,6 @@ import { Container } from 'unstated';
 import { EditorMode } from '~/stores/ui';
 import loggerFactory from '~/utils/logger';
 
-import { toastError } from '../util/apiNotification';
-import { apiPost } from '../util/apiv1-client';
-import { apiv3Post } from '../util/apiv3-client';
 import {
   DetachCodeBlockInterceptor,
   RestoreCodeBlockInterceptor,
@@ -17,6 +14,9 @@ import {
 import {
   DrawioInterceptor,
 } from '../../services/renderer/interceptor/drawio-interceptor';
+import { toastError } from '../util/apiNotification';
+import { apiPost } from '../util/apiv1-client';
+import { apiv3Post } from '../util/apiv3-client';
 
 const { isTrashPage } = pagePathUtils;
 
@@ -423,12 +423,12 @@ export default class PageContainer extends Container {
   retrieveMyBookmarkList() {
   }
 
-  async resolveConflict(markdown, editorMode) {
+  async resolveConflict(markdown, editorMode, optionsToSave) {
 
     const { pageId, remoteRevisionId, path } = this.state;
     const editorContainer = this.appContainer.getContainer('EditorContainer');
-    const options = editorContainer.getCurrentOptionsToSave();
-    const optionsToSave = Object.assign({}, options);
+    // const options = editorContainer.getCurrentOptionsToSave();
+    // const optionsToSave = Object.assign({}, options);
 
     const res = await this.updatePage(pageId, remoteRevisionId, markdown, optionsToSave);
 

+ 12 - 9
packages/app/src/components/PageEditor.tsx

@@ -107,6 +107,16 @@ const PageEditor = (props: Props): JSX.Element => {
   const editorRef = useRef<EditorRef>(null);
   const previewRef = useRef<HTMLDivElement>(null);
 
+
+  const optionsToSave = useMemo(() => {
+    // if (grant == null) {
+    //   return;
+    // }
+    const slackChannels = slackChannelsData ? slackChannelsData.toString() : '';
+    const optionsToSave = getOptionsToSave(isSlackEnabled ?? false, slackChannels, grant || 1, grantGroupId, grantGroupName, pageTags || []);
+    return optionsToSave;
+  }, [grant, grantGroupId, grantGroupName, isSlackEnabled, pageTags, slackChannelsData]);
+
   const setMarkdownWithDebounce = useMemo(() => debounce(50, throttle(100, value => setMarkdown(value))), []);
   const saveDraftWithDebounce = useMemo(() => debounce(800, () => {
     editorContainer.saveDraft(pageContainer.state.path, markdown);
@@ -122,14 +132,6 @@ const PageEditor = (props: Props): JSX.Element => {
 
 
   const saveWithShortcut = useCallback(async() => {
-    if (grant == null) {
-      return;
-    }
-
-    const slackChannels = slackChannelsData ? slackChannelsData.toString() : '';
-
-    const optionsToSave = getOptionsToSave(isSlackEnabled ?? false, slackChannels, grant, grantGroupId, grantGroupName, pageTags || []);
-
     try {
       // disable unsaved warning
       editorContainer.disableUnsavedWarning();
@@ -147,7 +149,7 @@ const PageEditor = (props: Props): JSX.Element => {
       logger.error('failed to save', error);
       pageContainer.showErrorToastr(error);
     }
-  }, [editorContainer, editorMode, grant, grantGroupId, grantGroupName, isSlackEnabled, slackChannelsData, markdown, pageContainer, pageTags]);
+  }, [editorContainer, pageContainer, markdown, editorMode, optionsToSave]);
 
 
   /**
@@ -430,6 +432,7 @@ const PageEditor = (props: Props): JSX.Element => {
         onClose={() => pageContainer.setState({ isConflictDiffModalOpen: false })}
         pageContainer={pageContainer}
         markdownOnEdit={markdown}
+        optionsToSave={optionsToSave}
       />
     </div>
   );

+ 4 - 2
packages/app/src/components/PageEditor/ConflictDiffModal.tsx

@@ -10,6 +10,7 @@ import {
   Modal, ModalHeader, ModalBody, ModalFooter,
 } from 'reactstrap';
 
+import { OptionsToSave } from '~/client/util/editor';
 import { IUser } from '~/interfaces/user';
 import { useCurrentUser } from '~/stores/context';
 import { useEditorMode } from '~/stores/ui';
@@ -31,6 +32,7 @@ type ConflictDiffModalProps = {
   onClose?: (() => void);
   pageContainer: PageContainer;
   markdownOnEdit: string;
+  optionsToSave: OptionsToSave;
 };
 
 type IRevisionOnConflictWithStringDate = Omit<IRevisionOnConflict, 'createdAt'> & {
@@ -101,7 +103,7 @@ const ConflictDiffModalCore = (props: ConflictDiffModalProps & { currentUser: IU
     const codeMirrorVal = uncontrolledRef.current?.editor.doc.getValue();
 
     try {
-      await pageContainer.resolveConflict(codeMirrorVal, editorMode);
+      await pageContainer.resolveConflict(codeMirrorVal, editorMode, props.optionsToSave);
       close();
       pageContainer.showSuccessToastr();
     }
@@ -109,7 +111,7 @@ const ConflictDiffModalCore = (props: ConflictDiffModalProps & { currentUser: IU
       pageContainer.showErrorToastr(error);
     }
 
-  }, [editorMode, close, pageContainer]);
+  }, [pageContainer, editorMode, props.optionsToSave, close]);
 
   const resizeAndCloseButtons = useMemo(() => (
     <div className="d-flex flex-nowrap">

+ 13 - 13
packages/app/src/server/crowi/dev.js

@@ -109,19 +109,19 @@ class CrowiDev {
   }
 
   setupBrowserSync(app) {
-    logger.debug('setupBrowserSync');
-
-    const browserSync = require('browser-sync');
-    const bs = browserSync.create().init({
-      logSnippet: false,
-      notify: false,
-      files: [
-        `${this.crowi.viewsDir}/**/*.html`,
-        `${this.crowi.publicDir}/**/*.js`,
-        `${this.crowi.publicDir}/**/*.css`,
-      ],
-    });
-    app.use(require('connect-browser-sync')(bs));
+    // logger.debug('setupBrowserSync');
+
+    // const browserSync = require('browser-sync');
+    // const bs = browserSync.create().init({
+    //   logSnippet: false,
+    //   notify: false,
+    //   files: [
+    //     `${this.crowi.viewsDir}/**/*.html`,
+    //     `${this.crowi.publicDir}/**/*.js`,
+    //     `${this.crowi.publicDir}/**/*.css`,
+    //   ],
+    // });
+    // app.use(require('connect-browser-sync')(bs));
   }
 
 }