From 9e795ed3bdef49d1832bbfe185c11a33cb733525 Mon Sep 17 00:00:00 2001 From: Tulir Asokan Date: Mon, 18 Nov 2024 00:27:47 +0200 Subject: [PATCH] web/login: reorder fields --- web/src/ui/login/LoginScreen.tsx | 35 +++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/web/src/ui/login/LoginScreen.tsx b/web/src/ui/login/LoginScreen.tsx index c3a680f..bf7ee10 100644 --- a/web/src/ui/login/LoginScreen.tsx +++ b/web/src/ui/login/LoginScreen.tsx @@ -71,7 +71,10 @@ export const LoginScreen = ({ client }: LoginScreenProps) => { const resolveLoginFlows = useCallback((serverURL: string) => { client.rpc.getLoginFlows(serverURL).then( - resp => setLoginFlows(resp.flows.map(flow => flow.type)), + resp => { + setLoginFlows(resp.flows.map(flow => flow.type)) + setError("") + }, err => setError(`Failed to get login flows: ${err}`), ) }, [client]) @@ -79,7 +82,7 @@ export const LoginScreen = ({ client }: LoginScreenProps) => { client.rpc.discoverHomeserver(username).then( resp => { const url = resp["m.homeserver"].base_url - setLoginFlows(null) + setLoginFlows([]) setHomeserverURL(url) resolveLoginFlows(url) }, @@ -96,6 +99,15 @@ export const LoginScreen = ({ client }: LoginScreenProps) => { clearTimeout(timeout) } }, [username, resolveHomeserver]) + useEffect(() => { + if (loginFlows !== null || loginFlows === "resolving" || !homeserverURL) { + return + } + const timeout = setTimeout(() => resolveLoginFlows(homeserverURL), 500) + return () => { + clearTimeout(timeout) + } + }, [homeserverURL, loginFlows, resolveLoginFlows]) const onChangeUsername = useCallback((evt: React.ChangeEvent) => { setUsername(evt.target.value) }, []) @@ -120,30 +132,29 @@ export const LoginScreen = ({ client }: LoginScreenProps) => { value={username} onChange={onChangeUsername} /> - {supportsPassword !== false && + {supportsPassword && } -
{supportsSSO && } - {supportsPassword !== false && }
{error &&