import React, { useMemo } from 'react'; import { View } from 'react-native'; import type { SocialProvider } from '@aws-amplify/ui'; import { authenticatorTextUtil, capitalize } from '@aws-amplify/ui'; import { Divider } from '../../../primitives'; import { useTheme } from '../../../theme'; import { FederatedProviderButton } from '../FederatedProviderButton'; import type { FederatedProviderButtonsProps } from './types'; import { icons } from '../../../assets'; import { getThemedStyles } from './styles'; const { getSignInWithFederationText, getOrText } = authenticatorTextUtil; export default function FederatedProviderButtons({ buttonStyle, dividerLabelStyle, route, socialProviders, style, toFederatedSignIn, }: FederatedProviderButtonsProps): React.JSX.Element | null { const theme = useTheme(); const themedStyle = getThemedStyles(theme); const providerButtons = useMemo( () => socialProviders?.map((provider: SocialProvider) => { const providerIconSource = icons[`${provider}Logo`]; const handlePress = () => { toFederatedSignIn({ provider: capitalize(provider) }); }; return ( {getSignInWithFederationText(route, provider)} ); }), [route, socialProviders, themedStyle, buttonStyle, toFederatedSignIn] ); return providerButtons?.length ? ( {providerButtons} {getOrText()} ) : null; }