import { Alert, Box, Button, CircularProgress } from "@mui/material"; import React from "react"; import { useNavigate, useSearchParams } from "react-router"; import { MatrixLinkApi } from "../api/MatrixLinkApi"; import { useUserInfo } from "../widgets/dashboard/BaseAuthenticatedPage"; import { RouterLink } from "../widgets/RouterLink"; import { useSnackbar } from "../hooks/contexts_provider/SnackbarProvider"; export function MatrixAuthCallback(): React.ReactElement { const navigate = useNavigate(); const snackbar = useSnackbar(); const info = useUserInfo(); const [error, setError] = React.useState(null); const [searchParams] = useSearchParams(); const code = searchParams.get("code"); const state = searchParams.get("state"); const count = React.useRef(""); React.useEffect(() => { const load = async () => { try { if (count.current === code) { return; } count.current = code!; await MatrixLinkApi.FinishAuth(code!, state!); snackbar("Successfully linked to Matrix account!"); navigate("/matrix_link"); } catch (e) { console.error(e); setError(String(e)); } finally { info.reloadUserInfo(); } }; load(); }, [code, state]); if (error) return ( Failed to finalize Matrix authentication!

{error}
); return (
); }