Parcourir la source

Alert client side if yjs data is corrupt

Shun Miyazawa il y a 1 an
Parent
commit
9947f2fa6b

+ 9 - 1
apps/app/src/client/components/Navbar/GrowiContextualSubNavigation.tsx

@@ -87,7 +87,15 @@ const PageOperationMenuItems = (props: PageOperationMenuItemsProps): JSX.Element
     if (answer) {
       try {
         const editingMarkdownLength = codeMirrorEditor?.getDoc().length;
-        await syncLatestRevisionBody(pageId, editingMarkdownLength);
+        const res = await syncLatestRevisionBody(pageId, editingMarkdownLength);
+
+        if (res?.isYjsDataCorrupted) {
+          // TODO: i18n
+          // eslint-disable-next-line no-alert
+          window.alert('Please reload the page');
+          return;
+        }
+
         toastSuccess(t('sync-latest-reevision-body.success-toaster'));
       }
       catch {

+ 3 - 3
apps/app/src/client/services/page-operation.ts

@@ -175,7 +175,7 @@ export const unpublish = async(pageId: string): Promise<IPageHasId> => {
   return res.data;
 };
 
-export const syncLatestRevisionBody = async(pageId: string, editingMarkdownLength?: number): Promise<void> => {
-  await apiv3Put(`/page/${pageId}/sync-latest-revision-body-to-yjs-draft`, { editingMarkdownLength });
-  return;
+export const syncLatestRevisionBody = async(pageId: string, editingMarkdownLength?: number): Promise<{ isYjsDataCorrupted?: boolean } | void> => {
+  const res = await apiv3Put(`/page/${pageId}/sync-latest-revision-body-to-yjs-draft`, { editingMarkdownLength });
+  return res.data;
 };