From 9663852f1e640000c971495008a08d9181230ad5 Mon Sep 17 00:00:00 2001 From: Xiao Yijun Date: Thu, 30 Mar 2023 17:44:46 +0800 Subject: [PATCH] refactor(console): hide native preview when no social target supports native (#3626) --- packages/console/src/consts/connectors.ts | 3 ++ .../console/src/hooks/use-connector-groups.ts | 7 +++++ .../components/Preview/index.tsx | 29 +++++++++++-------- .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ .../admin-console/sign-in-exp/index.ts | 2 ++ 16 files changed, 53 insertions(+), 12 deletions(-) diff --git a/packages/console/src/consts/connectors.ts b/packages/console/src/consts/connectors.ts index 2a347490b..653e53ed7 100644 --- a/packages/console/src/consts/connectors.ts +++ b/packages/console/src/consts/connectors.ts @@ -55,3 +55,6 @@ export const defaultEmailConnectorGroup: ConnectorGroup = { logoDark: null, target: '', }; + +// Note: these connector targets will need a native connector to support the native platform +export const supportNativePlatformTargets = ['wechat', 'alipay']; diff --git a/packages/console/src/hooks/use-connector-groups.ts b/packages/console/src/hooks/use-connector-groups.ts index 7e021133d..7df8ab288 100644 --- a/packages/console/src/hooks/use-connector-groups.ts +++ b/packages/console/src/hooks/use-connector-groups.ts @@ -2,6 +2,7 @@ import type { ConnectorResponse } from '@logto/schemas'; import { useMemo } from 'react'; import useSWR from 'swr'; +import { supportNativePlatformTargets } from '@/consts'; import type { RequestError } from '@/hooks/use-api'; import { getConnectorGroups } from '@/pages/Connectors/utils'; @@ -17,10 +18,16 @@ const useConnectorGroups = () => { return getConnectorGroups(data); }, [data]); + const hasSupportNativePlatformTarget = useMemo( + () => groups?.some(({ target }) => supportNativePlatformTargets.includes(target)) ?? false, + [groups] + ); + return { ...rest, data: groups, connectors: data, + hasSupportNativePlatformTarget, }; }; diff --git a/packages/console/src/pages/SignInExperience/components/Preview/index.tsx b/packages/console/src/pages/SignInExperience/components/Preview/index.tsx index 06e1a3fc5..c3234e73a 100644 --- a/packages/console/src/pages/SignInExperience/components/Preview/index.tsx +++ b/packages/console/src/pages/SignInExperience/components/Preview/index.tsx @@ -1,7 +1,6 @@ import type { LanguageTag } from '@logto/language-kit'; import { languages as uiLanguageNameMapping } from '@logto/language-kit'; -import type { SignInExperience } from '@logto/schemas'; -import { Theme } from '@logto/schemas'; +import { type SignInExperience, Theme } from '@logto/schemas'; import classNames from 'classnames'; import { useEffect, useMemo, useState } from 'react'; import { useTranslation } from 'react-i18next'; @@ -11,6 +10,7 @@ import Select from '@/components/Select'; import SignInExperiencePreview, { ToggleUiThemeButton } from '@/components/SignInExperiencePreview'; import { PreviewPlatform } from '@/components/SignInExperiencePreview/types'; import TabNav, { TabNavItem } from '@/components/TabNav'; +import useConnectorGroups from '@/hooks/use-connector-groups'; import useUiLanguages from '@/hooks/use-ui-languages'; import * as styles from './index.module.scss'; @@ -29,6 +29,7 @@ function Preview({ className, }: Props) { const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); + const { hasSupportNativePlatformTarget: isNativeTabEnabled } = useConnectorGroups(); const [language, setLanguage] = useState('en'); const [mode, setMode] = useState(Theme.Light); const [platform, setPlatform] = useState(PreviewPlatform.DesktopWeb); @@ -95,7 +96,9 @@ function Preview({ setPlatform(PreviewPlatform.DesktopWeb); }} > - {t('sign_in_exp.preview.desktop_web')} + {t( + isNativeTabEnabled ? 'sign_in_exp.preview.desktop_web' : 'sign_in_exp.preview.desktop' + )} - {t('sign_in_exp.preview.mobile_web')} - - { - setPlatform(PreviewPlatform.Mobile); - }} - > - {t('sign_in_exp.preview.native')} + {t(isNativeTabEnabled ? 'sign_in_exp.preview.mobile_web' : 'sign_in_exp.preview.mobile')} + {isNativeTabEnabled && ( + { + setPlatform(PreviewPlatform.Mobile); + }} + > + {t('sign_in_exp.preview.native')} + + )}