import { useState, useEffect, useRef, SyntheticEvent, MouseEventHandler, } from "react"; import { useLocation, Link, Redirect } from "react-router-dom"; import { useAuth } from "../useAuth"; import { unauthenticatedEndpoint, useUnauthenticatedRequest } from "../util"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { IconDefinition } from "@fortawesome/free-brands-svg-icons"; import { faSignInAlt } from "@fortawesome/free-solid-svg-icons"; interface OAuthProviders { providers: string[]; } export default function Register() { const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); const [complete, setComplete] = useState(false); const handleSubmit = async (evt: SyntheticEvent) => { evt.preventDefault(); setError(""); setLoading(true); try { let res = await fetch(unauthenticatedEndpoint("auth/register/password"), { method: "POST", headers: { "Content-Type": "application/json", "User-Agent": window.navigator.userAgent, }, body: JSON.stringify({ username, password }), }); let json = await res.json(); if (json.error) { throw new Error(json.error); } else if (!json.success) { throw new Error("Failed to register, please try again later."); } else { setComplete(true); } } catch (e: any) { setError(e.message); } finally { setLoading(false); } }; if (complete) { return ( ); } return (

chartered ✈️

a private, authenticated cargo registry
{error}
setUsername(e.target.value)} />
setPassword(e.target.value)} />
); } function ButtonOrSpinner({ type, variant, disabled, showSpinner, text, icon, background, onClick, }: { type: "button" | "submit"; variant: string; disabled: boolean; showSpinner: boolean; text: string; icon?: IconDefinition; background?: string; onClick: MouseEventHandler; }) { if (showSpinner) { return (
Logging in...
); } if (type) { return ( ); } return <>; }