From ed201936813d9a720b51e6cb40a05267b94e7314 Mon Sep 17 00:00:00 2001 From: Max Nanis Date: Thu, 10 Sep 2026 17:46:41 -0700 Subject: Typescript prettier Committing seperate so it's easier to see actual changes. --- jb-ui/src/pages/MagicLink.tsx | 72 ++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 35 deletions(-) (limited to 'jb-ui/src/pages/MagicLink.tsx') diff --git a/jb-ui/src/pages/MagicLink.tsx b/jb-ui/src/pages/MagicLink.tsx index 4042624..eb272a6 100644 --- a/jb-ui/src/pages/MagicLink.tsx +++ b/jb-ui/src/pages/MagicLink.tsx @@ -3,42 +3,44 @@ import { useEffect, useRef, useState } from "react"; type ExchangeState = "working" | "failed" | "missing"; const MagicLink = function () { - const started = useRef(false); - const [state, setState] = useState("working"); - - useEffect(() => { - // React Strict Mode runs effects twice in development. Never redeem twice. - if (started.current) return; - started.current = true; - - const params = new URLSearchParams(window.location.search); - const token = params.get("token"); - if (!token) { - setState("missing"); - return; - } - - // Keep the credential out of browser history and subsequent Referer headers. - window.history.replaceState({}, "", window.location.pathname); - - void fetch("/auth/magic-link/exchange", { - method: "POST", - credentials: "include", - headers: {"Content-Type": "application/json"}, - body: JSON.stringify({"token": token}), - }).then((response) => { - if (!response.ok) throw new Error("Magic-link exchange failed"); - window.location.replace("/"); - }).catch(() => setState("failed")); - }, []); - - if (state === "missing") { - return

This login link is missing its token.

; + const started = useRef(false); + const [state, setState] = useState("working"); + + useEffect(() => { + // React Strict Mode runs effects twice in development. Never redeem twice. + if (started.current) return; + started.current = true; + + const params = new URLSearchParams(window.location.search); + const token = params.get("token"); + if (!token) { + setState("missing"); + return; } - if (state === "failed") { - return

This login link is invalid or has expired.

; - } - return

Signing you in…

; + + // Keep the credential out of browser history and subsequent Referer headers. + window.history.replaceState({}, "", window.location.pathname); + + void fetch("/auth/magic-link/exchange", { + method: "POST", + credentials: "include", + headers: { "Content-Type": "application/json" }, + body: JSON.stringify({ token: token }), + }) + .then((response) => { + if (!response.ok) throw new Error("Magic-link exchange failed"); + window.location.replace("/"); + }) + .catch(() => setState("failed")); + }, []); + + if (state === "missing") { + return

This login link is missing its token.

; + } + if (state === "failed") { + return

This login link is invalid or has expired.

; + } + return

Signing you in…

; }; export default MagicLink; -- cgit v1.2.3