0
Fork 0
mirror of https://github.com/logto-io/logto.git synced 2025-01-27 21:39:16 -05:00

chore: check connector related types and eliminate redundancy (#1925)

This commit is contained in:
Darcy Ye 2022-09-15 14:28:19 +08:00 committed by GitHub
parent 14cb0439e3
commit 31ecfd0b96
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 28 additions and 29 deletions

View file

@ -1,10 +1,10 @@
import { ConnectorMetadata } from '@logto/schemas';
import { fireEvent } from '@testing-library/react'; import { fireEvent } from '@testing-library/react';
import { MemoryRouter } from 'react-router-dom'; import { MemoryRouter } from 'react-router-dom';
import renderWithPageContext from '@/__mocks__/RenderWithPageContext'; import renderWithPageContext from '@/__mocks__/RenderWithPageContext';
import SettingsProvider from '@/__mocks__/RenderWithPageContext/SettingsProvider'; import SettingsProvider from '@/__mocks__/RenderWithPageContext/SettingsProvider';
import { socialConnectors } from '@/__mocks__/logto'; import { socialConnectors } from '@/__mocks__/logto';
import { ConnectorData } from '@/types';
import SocialSignInDropdown from '.'; import SocialSignInDropdown from '.';
@ -12,7 +12,7 @@ const mockInvokeSocialSignIn = jest.fn();
// eslint-disable-next-line unicorn/consistent-function-scoping // eslint-disable-next-line unicorn/consistent-function-scoping
jest.mock('@/hooks/use-social', () => () => ({ jest.mock('@/hooks/use-social', () => () => ({
invokeSocialSignIn: (connector: ConnectorData) => { invokeSocialSignIn: (connector: ConnectorMetadata) => {
mockInvokeSocialSignIn(connector); mockInvokeSocialSignIn(connector);
}, },
})); }));

View file

@ -1,10 +1,10 @@
import { ConnectorMetadata } from '@logto/schemas';
import { getDefaultLanguage } from '@logto/shared'; import { getDefaultLanguage } from '@logto/shared';
import { useState, useCallback } from 'react'; import { useState, useCallback } from 'react';
import { useTranslation } from 'react-i18next'; import { useTranslation } from 'react-i18next';
import Dropdown, { DropdownItem } from '@/components/Dropdown'; import Dropdown, { DropdownItem } from '@/components/Dropdown';
import useSocial from '@/hooks/use-social'; import useSocial from '@/hooks/use-social';
import { ConnectorData } from '@/types';
import * as styles from './index.module.scss'; import * as styles from './index.module.scss';
@ -12,7 +12,7 @@ type Props = {
anchorRef?: React.RefObject<HTMLElement>; anchorRef?: React.RefObject<HTMLElement>;
isOpen: boolean; isOpen: boolean;
onClose: () => void; onClose: () => void;
connectors: ConnectorData[]; connectors: ConnectorMetadata[];
}; };
const SocialSignInDropdown = ({ isOpen, onClose, connectors, anchorRef }: Props) => { const SocialSignInDropdown = ({ isOpen, onClose, connectors, anchorRef }: Props) => {

View file

@ -1,17 +1,17 @@
import { ConnectorMetadata } from '@logto/schemas';
import classNames from 'classnames'; import classNames from 'classnames';
import MoreSocialIcon from '@/assets/icons/more-social-icon.svg'; import MoreSocialIcon from '@/assets/icons/more-social-icon.svg';
import IconButton from '@/components/Button/IconButton'; import IconButton from '@/components/Button/IconButton';
import SocialIconButton from '@/components/Button/SocialIconButton'; import SocialIconButton from '@/components/Button/SocialIconButton';
import useSocial from '@/hooks/use-social'; import useSocial from '@/hooks/use-social';
import { ConnectorData } from '@/types';
import { isAppleConnector } from '@/utils/social-connectors'; import { isAppleConnector } from '@/utils/social-connectors';
import * as styles from './index.module.scss'; import * as styles from './index.module.scss';
type Props = { type Props = {
className?: string; className?: string;
connectors?: ConnectorData[]; connectors?: ConnectorMetadata[];
hasMore?: boolean; hasMore?: boolean;
moreButtonRef: React.RefObject<HTMLButtonElement>; moreButtonRef: React.RefObject<HTMLButtonElement>;
onMoreButtonClick?: () => void; onMoreButtonClick?: () => void;

View file

@ -1,3 +1,4 @@
import { ConnectorMetadata } from '@logto/schemas';
import classNames from 'classnames'; import classNames from 'classnames';
import { useState, useMemo } from 'react'; import { useState, useMemo } from 'react';
@ -5,7 +6,6 @@ import ExpandIcon from '@/assets/icons/expand-icon.svg';
import IconButton from '@/components/Button/IconButton'; import IconButton from '@/components/Button/IconButton';
import SocialLinkButton from '@/components/Button/SocialLinkButton'; import SocialLinkButton from '@/components/Button/SocialLinkButton';
import useSocial from '@/hooks/use-social'; import useSocial from '@/hooks/use-social';
import { ConnectorData } from '@/types';
import * as styles from './index.module.scss'; import * as styles from './index.module.scss';
@ -13,7 +13,7 @@ export const defaultSize = 4;
type Props = { type Props = {
className?: string; className?: string;
socialConnectors?: ConnectorData[]; socialConnectors?: ConnectorMetadata[];
isCollapseEnabled?: boolean; isCollapseEnabled?: boolean;
onSocialSignInCallback?: () => void; onSocialSignInCallback?: () => void;
}; };

View file

@ -1,10 +1,11 @@
import { ConnectorMetadata } from '@logto/schemas';
import Drawer from '@/components/Drawer'; import Drawer from '@/components/Drawer';
import { ConnectorData } from '@/types';
import SocialSignInList from '../SocialSignInList'; import SocialSignInList from '../SocialSignInList';
type Props = { type Props = {
connectors?: ConnectorData[]; connectors?: ConnectorMetadata[];
className?: string; className?: string;
isOpen?: boolean; isOpen?: boolean;
onClose: () => void; onClose: () => void;

View file

@ -1,7 +1,7 @@
import { ConnectorMetadata } from '@logto/schemas';
import { useCallback, useContext } from 'react'; import { useCallback, useContext } from 'react';
import { invokeSocialSignIn } from '@/apis/social'; import { invokeSocialSignIn } from '@/apis/social';
import { ConnectorData } from '@/types';
import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk'; import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk';
import { generateState, storeState, buildSocialLandingUri } from '@/utils/social-connectors'; import { generateState, storeState, buildSocialLandingUri } from '@/utils/social-connectors';
@ -15,7 +15,7 @@ const useSocial = () => {
const { run: asyncInvokeSocialSignIn } = useApi(invokeSocialSignIn); const { run: asyncInvokeSocialSignIn } = useApi(invokeSocialSignIn);
const nativeSignInHandler = useCallback((redirectTo: string, connector: ConnectorData) => { const nativeSignInHandler = useCallback((redirectTo: string, connector: ConnectorMetadata) => {
const { id: connectorId, platform } = connector; const { id: connectorId, platform } = connector;
const redirectUri = const redirectUri =
@ -30,7 +30,7 @@ const useSocial = () => {
}, []); }, []);
const invokeSocialSignInHandler = useCallback( const invokeSocialSignInHandler = useCallback(
async (connector: ConnectorData) => { async (connector: ConnectorMetadata) => {
if (!(await termsValidation())) { if (!(await termsValidation())) {
return; return;
} }

View file

@ -1,4 +1,4 @@
import { SignInMode } from '@logto/schemas'; import { SignInMode, ConnectorMetadata } from '@logto/schemas';
import Divider from '@/components/Divider'; import Divider from '@/components/Divider';
import TextLink from '@/components/TextLink'; import TextLink from '@/components/TextLink';
@ -8,7 +8,7 @@ import SignInMethodsLink from '@/containers/SignInMethodsLink';
import { PrimarySocialSignIn, SecondarySocialSignIn } from '@/containers/SocialSignIn'; import { PrimarySocialSignIn, SecondarySocialSignIn } from '@/containers/SocialSignIn';
import TermsOfUse from '@/containers/TermsOfUse'; import TermsOfUse from '@/containers/TermsOfUse';
import UsernameSignin from '@/containers/UsernameSignin'; import UsernameSignin from '@/containers/UsernameSignin';
import { SignInMethod, LocalSignInMethod, ConnectorData } from '@/types'; import { SignInMethod, LocalSignInMethod } from '@/types';
import * as styles from './index.module.scss'; import * as styles from './index.module.scss';
@ -18,7 +18,7 @@ export const PrimarySection = ({
signInMode, signInMode,
}: { }: {
signInMethod?: SignInMethod; signInMethod?: SignInMethod;
socialConnectors?: ConnectorData[]; socialConnectors?: ConnectorMetadata[];
signInMode?: SignInMode; signInMode?: SignInMode;
}) => { }) => {
switch (signInMethod) { switch (signInMethod) {
@ -61,7 +61,7 @@ export const SecondarySection = ({
}: { }: {
primarySignInMethod?: SignInMethod; primarySignInMethod?: SignInMethod;
secondarySignInMethods?: SignInMethod[]; secondarySignInMethods?: SignInMethod[];
socialConnectors?: ConnectorData[]; socialConnectors?: ConnectorMetadata[];
}) => { }) => {
if (!primarySignInMethod || !secondarySignInMethods?.length) { if (!primarySignInMethod || !secondarySignInMethods?.length) {
return null; return null;

View file

@ -15,10 +15,8 @@ export type Platform = 'web' | 'mobile';
export type Theme = 'dark' | 'light'; export type Theme = 'dark' | 'light';
export type ConnectorData = ConnectorMetadata & { id: string };
export type SignInExperienceSettingsResponse = SignInExperience & { export type SignInExperienceSettingsResponse = SignInExperience & {
socialConnectors: ConnectorData[]; socialConnectors: ConnectorMetadata[];
notification?: string; notification?: string;
}; };

View file

@ -1,6 +1,6 @@
import { ConnectorPlatform } from '@logto/schemas'; import { ConnectorPlatform, ConnectorMetadata } from '@logto/schemas';
import { ConnectorData, SearchParameters } from '@/types'; import { SearchParameters } from '@/types';
import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk'; import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk';
import { import {
@ -16,7 +16,7 @@ const mockConnectors = [
{ platform: 'Universal', target: 'wechat' }, { platform: 'Universal', target: 'wechat' },
{ platform: 'Native', target: 'wechat' }, { platform: 'Native', target: 'wechat' },
{ platform: 'Native', target: 'alipay' }, { platform: 'Native', target: 'alipay' },
] as ConnectorData[]; ] as ConnectorMetadata[];
jest.mock('@/utils/native-sdk', () => ({ jest.mock('@/utils/native-sdk', () => ({
isNativeWebview: jest.fn(), isNativeWebview: jest.fn(),

View file

@ -1,6 +1,6 @@
import { ConnectorPlatform } from '@logto/schemas'; import { ConnectorMetadata, ConnectorPlatform } from '@logto/schemas';
import { ConnectorData, SearchParameters } from '@/types'; import { SearchParameters } from '@/types';
import { generateRandomString } from '@/utils'; import { generateRandomString } from '@/utils';
import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk'; import { getLogtoNativeSdk, isNativeWebview } from '@/utils/native-sdk';
@ -56,12 +56,12 @@ export const getCallbackLinkFromStorage = (connectorId: string) => {
/** /**
* Social Connectors Filter Utility Methods * Social Connectors Filter Utility Methods
*/ */
export const filterSocialConnectors = (socialConnectors?: ConnectorData[]) => { export const filterSocialConnectors = (socialConnectors?: ConnectorMetadata[]) => {
if (!socialConnectors) { if (!socialConnectors) {
return []; return [];
} }
const connectorMap = new Map<string, ConnectorData>(); const connectorMap = new Map<string, ConnectorMetadata>();
/** /**
* Browser Environment * Browser Environment
@ -142,13 +142,13 @@ export const filterSocialConnectors = (socialConnectors?: ConnectorData[]) => {
*/ */
export const filterPreviewSocialConnectors = ( export const filterPreviewSocialConnectors = (
platform: ConnectorPlatform.Native | ConnectorPlatform.Web, platform: ConnectorPlatform.Native | ConnectorPlatform.Web,
socialConnectors?: ConnectorData[] socialConnectors?: ConnectorMetadata[]
) => { ) => {
if (!socialConnectors) { if (!socialConnectors) {
return []; return [];
} }
const connectorMap = new Map<string, ConnectorData>(); const connectorMap = new Map<string, ConnectorMetadata>();
/** /**
* Browser Environment * Browser Environment