Procházet zdrojové kódy

add status to error and handling in useSWRxPage

yuken před 3 roky
rodič
revize
a4aaefccab

+ 1 - 1
packages/app/src/server/routes/apiv3/response.js

@@ -27,7 +27,7 @@ const addCustomFunctionToResponse = (express, crowi) => {
         return new ErrorV3(e.message, null, e.stack);
         return new ErrorV3(e.message, null, e.stack);
       }
       }
       if (typeof e === 'string') {
       if (typeof e === 'string') {
-        return { message: e };
+        return { message: e, status };
       }
       }
 
 
       throw new Error('invalid error supplied to res.apiv3Err');
       throw new Error('invalid error supplied to res.apiv3Err');

+ 8 - 2
packages/app/src/stores/page.tsx

@@ -14,10 +14,16 @@ import { IPageTagsInfo } from '../interfaces/tag';
 
 
 import { useCurrentPageId } from './context';
 import { useCurrentPageId } from './context';
 
 
-export const useSWRxPage = (pageId?: string|null, shareLinkId?: string): SWRResponse<IPagePopulatedToShowRevision, Error> => {
-  return useSWR<IPagePopulatedToShowRevision, Error>(
+export const useSWRxPage = (pageId?: string|null, shareLinkId?: string): SWRResponse<IPagePopulatedToShowRevision, any> => {
+  return useSWR<IPagePopulatedToShowRevision, any>(
     pageId != null ? ['/page', pageId, shareLinkId] : null,
     pageId != null ? ['/page', pageId, shareLinkId] : null,
     (endpoint, pageId, shareLinkId) => apiv3Get<{ page: IPagePopulatedToShowRevision }>(endpoint, { pageId, shareLinkId }).then(result => result.data.page),
     (endpoint, pageId, shareLinkId) => apiv3Get<{ page: IPagePopulatedToShowRevision }>(endpoint, { pageId, shareLinkId }).then(result => result.data.page),
+    {
+      onErrorRetry: (error) => {
+        // for empty page
+        if (error[0].status === 404) return;
+      },
+    },
   );
   );
 };
 };