import React from 'react'; import { Box, Text, color } from 'folds'; import { Link, useSearchParams } from 'react-router-dom'; import { useAuthFlows } from '../../../hooks/useAuthFlows'; import { useAuthServer } from '../../../hooks/useAuthServer'; import { useParsedLoginFlows } from '../../../hooks/useParsedLoginFlows'; import { PasswordLoginForm } from './PasswordLoginForm'; import { SSOLogin } from '../SSOLogin'; import { TokenLogin } from './TokenLogin'; import { OrDivider } from '../OrDivider'; import { getLoginPath, getRegisterPath } from '../../pathUtils'; import { usePathWithOrigin } from '../../../hooks/usePathWithOrigin'; import { LoginPathSearchParams } from '../../paths'; const getLoginSearchParams = (searchParams: URLSearchParams): LoginPathSearchParams => ({ username: searchParams.get('username') ?? undefined, email: searchParams.get('email') ?? undefined, loginToken: searchParams.get('loginToken') ?? undefined, }); export function Login() { const server = useAuthServer(); const { loginFlows } = useAuthFlows(); const [searchParams] = useSearchParams(); const loginSearchParams = getLoginSearchParams(searchParams); const ssoRedirectUrl = usePathWithOrigin(getLoginPath(server)); const parsedFlows = useParsedLoginFlows(loginFlows.flows); return ( Login {parsedFlows.token && loginSearchParams.loginToken && ( )} {parsedFlows.password && ( <> {parsedFlows.sso && } )} {parsedFlows.sso && ( <> 2 } /> )} {!parsedFlows.password && !parsedFlows.sso && ( <> {`This client does not support login on "${server}" homeserver. Password and SSO based login method not found.`} )} Do not have an account? Register ); }