Просмотр исходного кода

improve swr hook to ensure retuened data is not undefined

Yuki Takei 1 год назад
Родитель
Сommit
f1d56618d5

+ 1 - 1
apps/app/src/client/components/Admin/G2GDataTransfer.tsx

@@ -282,7 +282,7 @@ const G2GDataTransfer = (): JSX.Element => {
           className="mb-0"
           // eslint-disable-next-line react/no-danger
           dangerouslySetInnerHTML={{
-            __html: t('commons:g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl: documentationUrl || 'https://docs.growi.org' }),
+            __html: t('commons:g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl }),
           }}
         />
       </div>

+ 1 - 1
apps/app/src/client/components/DataTransferForm.tsx

@@ -39,7 +39,7 @@ const DataTransferForm = (): JSX.Element => {
           className="mb-0"
           // eslint-disable-next-line react/no-danger
           dangerouslySetInnerHTML={{
-            __html: t('g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl: documentationUrl || 'https://docs.growi.org' }),
+            __html: t('g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl }),
           }}
         />
       </div>

+ 14 - 11
apps/app/src/stores-universal/context.tsx

@@ -1,5 +1,3 @@
-import { useCallback, useEffect } from 'react';
-
 import type EventEmitter from 'events';
 
 import { AcceptedUploadFileType } from '@growi/core';
@@ -286,17 +284,22 @@ export const useAcceptedUploadFileType = (): SWRResponse<AcceptedUploadFileType,
   );
 };
 
-export const useGrowiDocumentationUrl = (): SWRResponse<'https://growi.cloud/help' | 'https://docs.growi.org', Error> => {
+// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
+export const useGrowiDocumentationUrl = () => {
   const { data: growiCloudUri } = useGrowiCloudUri();
-  const { data: growiAppIdForGrowiCloud } = useGrowiAppIdForGrowiCloud();
 
-  return useSWRImmutable(
-    ['documentationUrl', growiCloudUri, growiAppIdForGrowiCloud],
-    ([growiCloudUri, growiAppIdForGrowiCloud]) => {
-      if (growiCloudUri != null && growiAppIdForGrowiCloud != null) {
-        return 'https://growi.cloud/help';
-      }
-      return 'https://docs.growi.org';
+  return useSWR(
+    ['documentationUrl', growiCloudUri],
+    ([, growiCloudUri]) => {
+      const url = growiCloudUri != null
+        ? new URL('/help', growiCloudUri)
+        : new URL('https://docs.growi.org');
+      return url.toString();
+    },
+    {
+      fallbackData: 'https://docs.growi.org',
+      revalidateOnFocus: false,
+      revalidateOnReconnect: false,
     },
   );
 };