diff --git a/src/frontend/apps/impress/src/pages/docs/[id]/index.tsx b/src/frontend/apps/impress/src/pages/docs/[id]/index.tsx index 01aae751d..8aa0090de 100644 --- a/src/frontend/apps/impress/src/pages/docs/[id]/index.tsx +++ b/src/frontend/apps/impress/src/pages/docs/[id]/index.tsx @@ -6,6 +6,7 @@ import { useEffect, useState } from 'react'; import { useTranslation } from 'react-i18next'; import { Box, Icon, TextErrors } from '@/components'; +import { DEFAULT_QUERY_RETRY } from '@/core'; import { DocEditor } from '@/docs/doc-editor'; import { Doc, @@ -14,7 +15,6 @@ import { useDoc, useDocStore, } from '@/docs/doc-management/'; -import { KEY_AUTH } from '@/features/auth'; import { MainLayout } from '@/layouts'; import { useBroadcastStore } from '@/stores'; import { NextPageWithLayout } from '@/types/next'; @@ -56,6 +56,14 @@ const DocPage = ({ id }: DocProps) => { { staleTime: 0, queryKey: [KEY_DOC, { id }], + retryDelay: 1000, + retry: (failureCount, error) => { + if (error.status == 403 || error.status == 401 || error.status == 404) { + return false; + } else { + return failureCount < DEFAULT_QUERY_RETRY; + } + }, }, ); @@ -101,24 +109,17 @@ const DocPage = ({ id }: DocProps) => { }, [addTask, doc?.id, queryClient]); if (isError && error) { - if (error.status === 403) { - void replace(`/403`); - return null; - } - - if (error.status === 404) { - void replace(`/404`); - return null; - } - - if (error.status === 401) { - void queryClient.resetQueries({ - queryKey: [KEY_AUTH], - }); + if ([403, 404, 401].includes(error.status)) { void replace( - `/401?returnTo=${encodeURIComponent(window.location.pathname)}`, + error.status === 401 + ? `/${error.status}?returnTo=${encodeURIComponent(window.location.pathname)}` + : `/${error.status}`, + ); + return ( + + + ); - return null; } return (