diff --git a/apps/app/public/static/locales/en_US/commons.json b/apps/app/public/static/locales/en_US/commons.json
index 3c4a41f028f..75292103da5 100644
--- a/apps/app/public/static/locales/en_US/commons.json
+++ b/apps/app/public/static/locales/en_US/commons.json
@@ -157,6 +157,6 @@
"publish_transfer_key": "Publish transfer key",
"transfer_key_limit": "Transfer keys are valid for 1 hour after issuance.",
"once_transfer_key_used": "Once the transfer key is used for transfer, it cannot be used for any other transfer.",
- "transfer_to_growi_cloud": "For more details, please click here."
+ "transfer_to_growi_cloud": "For more details, please click here."
}
}
diff --git a/apps/app/public/static/locales/fr_FR/commons.json b/apps/app/public/static/locales/fr_FR/commons.json
index 32a394618e6..fe4ba0dc668 100644
--- a/apps/app/public/static/locales/fr_FR/commons.json
+++ b/apps/app/public/static/locales/fr_FR/commons.json
@@ -157,6 +157,6 @@
"publish_transfer_key": "Publier la clé de transfert",
"transfer_key_limit": "Les clés de transfert sont valides durant une heure.",
"once_transfer_key_used": "Les clés de transfert sont à usage unique.",
- "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici."
+ "transfer_to_growi_cloud": "Pour plus de détails, veuillez cliquer ici."
}
}
diff --git a/apps/app/public/static/locales/ja_JP/commons.json b/apps/app/public/static/locales/ja_JP/commons.json
index 5ef93538604..fe569c6301c 100644
--- a/apps/app/public/static/locales/ja_JP/commons.json
+++ b/apps/app/public/static/locales/ja_JP/commons.json
@@ -159,6 +159,6 @@
"publish_transfer_key": "移行キーを発行する",
"transfer_key_limit": "※ 移行キーの有効期限は発行から1時間となります。",
"once_transfer_key_used": "※ 移行キーは一度移行に利用するとそれ以降はご利用いただけなくなります。",
- "transfer_to_growi_cloud": "※ 詳しくは GROWI お引越し機能をご確認ください。"
+ "transfer_to_growi_cloud": "※ 詳しくは GROWI お引越し機能をご確認ください。"
}
}
diff --git a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx b/apps/app/src/client/components/Admin/G2GDataTransfer.tsx
index 53653080973..8f1e1a12f6b 100644
--- a/apps/app/src/client/components/Admin/G2GDataTransfer.tsx
+++ b/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 || 'docs.growi.org' }),
+ __html: t('commons:g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl }),
}}
/>
diff --git a/apps/app/src/client/components/DataTransferForm.tsx b/apps/app/src/client/components/DataTransferForm.tsx
index 73980650223..80a72052689 100644
--- a/apps/app/src/client/components/DataTransferForm.tsx
+++ b/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 || 'docs.growi.org' }),
+ __html: t('g2g_data_transfer.transfer_to_growi_cloud', { documentationUrl }),
}}
/>
diff --git a/apps/app/src/pages/admin/data-transfer.page.tsx b/apps/app/src/pages/admin/data-transfer.page.tsx
index bb208cb428b..982757f9dd8 100644
--- a/apps/app/src/pages/admin/data-transfer.page.tsx
+++ b/apps/app/src/pages/admin/data-transfer.page.tsx
@@ -9,8 +9,9 @@ import Head from 'next/head';
import type { Container } from 'unstated';
import { Provider } from 'unstated';
+import type { CrowiRequest } from '~/interfaces/crowi-request';
import type { CommonProps } from '~/pages/utils/commons';
-import { useCurrentUser } from '~/stores-universal/context';
+import { useCurrentUser, useGrowiCloudUri } from '~/stores-universal/context';
import { retrieveServerSideProps } from '../../utils/admin-page-util';
@@ -25,6 +26,7 @@ type Props = CommonProps;
const DataTransferPage: NextPage = (props) => {
const { t } = useTranslation('commons');
useCurrentUser(props.currentUser ?? null);
+ useGrowiCloudUri(props.growiCloudUri);
const title = t('g2g_data_transfer.data_transfer');
@@ -54,9 +56,15 @@ const DataTransferPage: NextPage = (props) => {
);
};
+const injectServerConfigurations = async(context: GetServerSidePropsContext, props: Props): Promise => {
+ const req: CrowiRequest = context.req as CrowiRequest;
+ const { crowi } = req;
+
+ props.growiCloudUri = await crowi.configManager.getConfig('crowi', 'app:growiCloudUri');
+};
export const getServerSideProps: GetServerSideProps = async(context: GetServerSidePropsContext) => {
- const props = await retrieveServerSideProps(context);
+ const props = await retrieveServerSideProps(context, injectServerConfigurations);
return props;
};
diff --git a/apps/app/src/pages/installer.page.tsx b/apps/app/src/pages/installer.page.tsx
index 957059dfe75..72b3da418a2 100644
--- a/apps/app/src/pages/installer.page.tsx
+++ b/apps/app/src/pages/installer.page.tsx
@@ -11,7 +11,7 @@ import Head from 'next/head';
import { NoLoginLayout } from '~/components/Layout/NoLoginLayout';
import type { CrowiRequest } from '~/interfaces/crowi-request';
import {
- useCsrfToken, useAppTitle, useSiteUrl, useConfidential,
+ useCsrfToken, useAppTitle, useSiteUrl, useConfidential, useGrowiCloudUri,
} from '~/stores-universal/context';
import type { CommonProps } from './utils/commons';
@@ -57,6 +57,7 @@ const InstallerPage: NextPage = (props: Props) => {
useSiteUrl(props.siteUrl);
useConfidential(props.confidential);
useCsrfToken(props.csrfToken);
+ useGrowiCloudUri(props.growiCloudUri);
const title = generateCustomTitle(props, t('installer.title'));
const classNames: string[] = [];
diff --git a/apps/app/src/stores-universal/context.tsx b/apps/app/src/stores-universal/context.tsx
index bdf619940ec..c32045ddd20 100644
--- a/apps/app/src/stores-universal/context.tsx
+++ b/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 => {
+// 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 'growi.cloud/help';
- }
- return '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,
},
);
};