소스 검색

add status to error and handling in useSWRxPage

yuken 3 년 전
부모
커밋
a4aaefccab
2개의 변경된 파일9개의 추가작업 그리고 3개의 파일을 삭제
  1. 1 1
      packages/app/src/server/routes/apiv3/response.js
  2. 8 2
      packages/app/src/stores/page.tsx

+ 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);
       }
       if (typeof e === 'string') {
-        return { message: e };
+        return { message: e, status };
       }
 
       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';
 
-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,
     (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;
+      },
+    },
   );
 };