Shun Miyazawa 2 лет назад
Родитель
Сommit
d1bea7a8a1

+ 16 - 20
apps/app/src/client/services/update-page/conflict.tsx

@@ -25,20 +25,6 @@ export type ConflictHandler = (
   saveOptions?: SaveOptions,
   saveOptions?: SaveOptions,
 ) => void;
 ) => void;
 
 
-type GenerateResolveConflicthandler = () => (
-  revisionId: string,
-  save: Save,
-  saveOptions?: SaveOptions,
-  onConflict?: () => void
-) => (newMarkdown: string) => Promise<void>
-
-type ConflictResolver = () => (
-  remoteRevisionData: RemoteRevisionData,
-  requestMarkdown: string,
-  save: Save,
-  saveOptions?: SaveOptions,
-) => void;
-
 export const extractRemoteRevisionDataFromErrorObj = (errors: Array<ErrorV3>): RemoteRevisionData | undefined => {
 export const extractRemoteRevisionDataFromErrorObj = (errors: Array<ErrorV3>): RemoteRevisionData | undefined => {
   for (const error of errors) {
   for (const error of errors) {
     if (error.code === PageUpdateErrorCode.CONFLICT) {
     if (error.code === PageUpdateErrorCode.CONFLICT) {
@@ -57,6 +43,13 @@ export const extractRemoteRevisionDataFromErrorObj = (errors: Array<ErrorV3>): R
   }
   }
 };
 };
 
 
+type GenerateResolveConflicthandler = () => (
+  revisionId: string,
+  save: Save,
+  saveOptions?: SaveOptions,
+  onConflict?: () => void
+) => (newMarkdown: string) => Promise<void>
+
 export const useGenerateResolveConflictHandler: GenerateResolveConflicthandler = () => {
 export const useGenerateResolveConflictHandler: GenerateResolveConflicthandler = () => {
   const { t } = useTranslation();
   const { t } = useTranslation();
 
 
@@ -85,6 +78,9 @@ export const useGenerateResolveConflictHandler: GenerateResolveConflicthandler =
   }, [closeConflictDiffModal, closePageStatusAlert, codeMirrorEditor, t, updateStateAfterSave]);
   }, [closeConflictDiffModal, closePageStatusAlert, codeMirrorEditor, t, updateStateAfterSave]);
 };
 };
 
 
+
+type ConflictResolver = () => ConflictHandler;
+
 export const useConflictResolver: ConflictResolver = () => {
 export const useConflictResolver: ConflictResolver = () => {
   const { open: openPageStatusAlert } = usePageStatusAlert();
   const { open: openPageStatusAlert } = usePageStatusAlert();
   const { open: openConflictDiffModal } = useConflictDiffModal();
   const { open: openConflictDiffModal } = useConflictDiffModal();
@@ -92,13 +88,13 @@ export const useConflictResolver: ConflictResolver = () => {
   const generateResolveConflictHandler = useGenerateResolveConflictHandler();
   const generateResolveConflictHandler = useGenerateResolveConflictHandler();
 
 
   return useCallback((remoteRevidsionData, requestMarkdown, save, saveOptions) => {
   return useCallback((remoteRevidsionData, requestMarkdown, save, saveOptions) => {
-    const onConflict = () => {
-      const resolveConflictHandler = generateResolveConflictHandler(remoteRevidsionData.remoteRevisionId, save, saveOptions, onConflict);
+    const conflictHandler = () => {
+      const resolveConflictHandler = generateResolveConflictHandler(remoteRevidsionData.remoteRevisionId, save, saveOptions, conflictHandler);
       openPageStatusAlert({ onResolveConflict: () => openConflictDiffModal(requestMarkdown, resolveConflictHandler) });
       openPageStatusAlert({ onResolveConflict: () => openConflictDiffModal(requestMarkdown, resolveConflictHandler) });
       setRemoteLatestPageData(remoteRevidsionData);
       setRemoteLatestPageData(remoteRevidsionData);
     };
     };
 
 
-    onConflict();
+    conflictHandler();
   }, [generateResolveConflictHandler, openConflictDiffModal, openPageStatusAlert, setRemoteLatestPageData]);
   }, [generateResolveConflictHandler, openConflictDiffModal, openPageStatusAlert, setRemoteLatestPageData]);
 };
 };
 
 
@@ -112,7 +108,7 @@ export const useConflictEffect = (): void => {
   const { data: socket } = useGlobalSocket();
   const { data: socket } = useGlobalSocket();
   const { data: editorMode } = useEditorMode();
   const { data: editorMode } = useEditorMode();
 
 
-  const onConflictHandler = useCallback(() => {
+  const conflictHandler = useCallback(() => {
     const onResolveConflict = () => {
     const onResolveConflict = () => {
       const resolveConflictHandler = (newMarkdown: string) => {
       const resolveConflictHandler = (newMarkdown: string) => {
         codeMirrorEditor?.initDoc(newMarkdown);
         codeMirrorEditor?.initDoc(newMarkdown);
@@ -137,14 +133,14 @@ export const useConflictEffect = (): void => {
 
 
     // !!CAUTION!! Timing of calling openPageStatusAlert may clash with client/services/side-effects/page-updated.ts
     // !!CAUTION!! Timing of calling openPageStatusAlert may clash with client/services/side-effects/page-updated.ts
     if (isRevisionOutdated && editorMode === EditorMode.Editor && (remoteRevisionOrigin === Origin.View || remoteRevisionOrigin === undefined)) {
     if (isRevisionOutdated && editorMode === EditorMode.Editor && (remoteRevisionOrigin === Origin.View || remoteRevisionOrigin === undefined)) {
-      onConflictHandler();
+      conflictHandler();
     }
     }
 
 
     // Clear cache
     // Clear cache
     if (!isRevisionOutdated) {
     if (!isRevisionOutdated) {
       closePageStatusAlert();
       closePageStatusAlert();
     }
     }
-  }, [closePageStatusAlert, currentPage?.revision?._id, editorMode, onConflictHandler]);
+  }, [closePageStatusAlert, currentPage?.revision?._id, editorMode, conflictHandler]);
 
 
   useEffect(() => {
   useEffect(() => {
     if (socket == null) { return }
     if (socket == null) { return }

+ 0 - 1
apps/app/src/components/PageEditor/PageEditor.tsx

@@ -45,7 +45,6 @@ import {
   useCurrentPagePath, useSWRxCurrentPage, useCurrentPageId, useIsNotFound, useTemplateBodyData,
   useCurrentPagePath, useSWRxCurrentPage, useCurrentPageId, useIsNotFound, useTemplateBodyData,
 } from '~/stores/page';
 } from '~/stores/page';
 import { mutatePageTree } from '~/stores/page-listing';
 import { mutatePageTree } from '~/stores/page-listing';
-import type { RemoteRevisionData } from '~/stores/remote-latest-page';
 import { usePreviewOptions } from '~/stores/renderer';
 import { usePreviewOptions } from '~/stores/renderer';
 import {
 import {
   EditorMode,
   EditorMode,