mirror of
https://github.com/tulir/gomuks.git
synced 2025-04-20 10:33:41 -05:00
web/login: reorder fields
This commit is contained in:
parent
c3d9b2f922
commit
9e795ed3bd
1 changed files with 23 additions and 12 deletions
|
@ -71,7 +71,10 @@ export const LoginScreen = ({ client }: LoginScreenProps) => {
|
||||||
|
|
||||||
const resolveLoginFlows = useCallback((serverURL: string) => {
|
const resolveLoginFlows = useCallback((serverURL: string) => {
|
||||||
client.rpc.getLoginFlows(serverURL).then(
|
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}`),
|
err => setError(`Failed to get login flows: ${err}`),
|
||||||
)
|
)
|
||||||
}, [client])
|
}, [client])
|
||||||
|
@ -79,7 +82,7 @@ export const LoginScreen = ({ client }: LoginScreenProps) => {
|
||||||
client.rpc.discoverHomeserver(username).then(
|
client.rpc.discoverHomeserver(username).then(
|
||||||
resp => {
|
resp => {
|
||||||
const url = resp["m.homeserver"].base_url
|
const url = resp["m.homeserver"].base_url
|
||||||
setLoginFlows(null)
|
setLoginFlows([])
|
||||||
setHomeserverURL(url)
|
setHomeserverURL(url)
|
||||||
resolveLoginFlows(url)
|
resolveLoginFlows(url)
|
||||||
},
|
},
|
||||||
|
@ -96,6 +99,15 @@ export const LoginScreen = ({ client }: LoginScreenProps) => {
|
||||||
clearTimeout(timeout)
|
clearTimeout(timeout)
|
||||||
}
|
}
|
||||||
}, [username, resolveHomeserver])
|
}, [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<HTMLInputElement>) => {
|
const onChangeUsername = useCallback((evt: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
setUsername(evt.target.value)
|
setUsername(evt.target.value)
|
||||||
}, [])
|
}, [])
|
||||||
|
@ -120,30 +132,29 @@ export const LoginScreen = ({ client }: LoginScreenProps) => {
|
||||||
value={username}
|
value={username}
|
||||||
onChange={onChangeUsername}
|
onChange={onChangeUsername}
|
||||||
/>
|
/>
|
||||||
{supportsPassword !== false && <input
|
<input
|
||||||
|
type="text"
|
||||||
|
id="mxlogin-homeserver-url"
|
||||||
|
placeholder="Homeserver URL (will autofill)"
|
||||||
|
value={homeserverURL}
|
||||||
|
onChange={onChangeHomeserverURL}
|
||||||
|
/>
|
||||||
|
{supportsPassword && <input
|
||||||
type="password"
|
type="password"
|
||||||
id="mxlogin-password"
|
id="mxlogin-password"
|
||||||
placeholder="Password"
|
placeholder="Password"
|
||||||
value={password}
|
value={password}
|
||||||
onChange={onChangePassword}
|
onChange={onChangePassword}
|
||||||
/>}
|
/>}
|
||||||
<input
|
|
||||||
type="text"
|
|
||||||
id="mxlogin-homeserver-url"
|
|
||||||
placeholder="Homeserver URL"
|
|
||||||
value={homeserverURL}
|
|
||||||
onChange={onChangeHomeserverURL}
|
|
||||||
/>
|
|
||||||
<div className="buttons">
|
<div className="buttons">
|
||||||
{supportsSSO && <button
|
{supportsSSO && <button
|
||||||
className="mx-login-button"
|
className="mx-login-button"
|
||||||
type={supportsPassword ? "button" : "submit"}
|
type={supportsPassword ? "button" : "submit"}
|
||||||
onClick={supportsPassword ? loginSSO : undefined}
|
onClick={supportsPassword ? loginSSO : undefined}
|
||||||
>Login with SSO</button>}
|
>Login with SSO</button>}
|
||||||
{supportsPassword !== false && <button
|
{supportsPassword && <button
|
||||||
className="mx-login-button"
|
className="mx-login-button"
|
||||||
type="submit"
|
type="submit"
|
||||||
disabled={!loginFlows}
|
|
||||||
>Login{supportsSSO || beeperDomain ? " with password" : ""}</button>}
|
>Login{supportsSSO || beeperDomain ? " with password" : ""}</button>}
|
||||||
</div>
|
</div>
|
||||||
{error && <div className="error">
|
{error && <div className="error">
|
||||||
|
|
Loading…
Add table
Reference in a new issue