import clsx from 'clsx'; import {cloneElement, ReactElement} from 'react'; import {SocialService, useSocialLogin} from '../../requests/use-social-login'; import {toast} from '@common/ui/toast/toast'; import {Button} from '@common/ui/buttons/button'; import {EnvatoIcon} from '@common/icons/social/envato'; import {GoogleIcon} from '@common/icons/social/google'; import {FacebookIcon} from '@common/icons/social/facebook'; import {TwitterIcon} from '@common/icons/social/twitter'; import {User} from '../../user'; import {AccountSettingsPanel} from './account-settings-panel'; import {Trans} from '@common/i18n/trans'; import {message} from '@common/i18n/message'; import {useSettings} from '@common/core/settings/use-settings'; import {queryClient} from '@common/http/query-client'; import {AccountSettingsId} from '@common/auth/ui/account-settings/account-settings-sidenav'; interface Props { user: User; } export function SocialLoginPanel({user}: Props) { const {social} = useSettings(); if ( !social.envato?.enable && !social.google?.enable && !social.facebook?.enable && !social.twitter?.enable ) { return null; } return ( } > } service="envato" user={user} /> } service="google" user={user} /> } service="facebook" user={user} /> } service="twitter" user={user} />
); } interface SocialLoginPanelRowProps { service: SocialService; user: User; className?: string; icon: ReactElement; } function SocialLoginPanelRow({ service, user, className, icon, }: SocialLoginPanelRowProps) { const {social} = useSettings(); const {connectSocial, disconnectSocial} = useSocialLogin(); const username = user?.social_profiles?.find(s => s.service_name === service) ?.username; if (!social?.[service]?.enable) { return null; } return (
{cloneElement(icon, { size: 'xl', className: clsx(icon.props.className, 'border p-8 rounded'), })}
{username || }
); }