diff --git a/src/pages/admin/AdminPage.tsx b/src/pages/admin/AdminPage.tsx index 7f86eedb..49ffba54 100644 --- a/src/pages/admin/AdminPage.tsx +++ b/src/pages/admin/AdminPage.tsx @@ -6,6 +6,7 @@ import { TMDBTestPart } from "@/pages/parts/admin/TMDBTestPart"; import { WorkerTestPart } from "@/pages/parts/admin/WorkerTestPart"; import { BackendTestPart } from "../parts/admin/BackendTestPart"; +import { FEDAPITestPart } from "../parts/admin/FEDAPITestPart"; export function AdminPage() { return ( @@ -18,6 +19,7 @@ export function AdminPage() { + ); diff --git a/src/pages/parts/admin/FEDAPITestPart.tsx b/src/pages/parts/admin/FEDAPITestPart.tsx new file mode 100644 index 00000000..195d3db8 --- /dev/null +++ b/src/pages/parts/admin/FEDAPITestPart.tsx @@ -0,0 +1,98 @@ +import { useState } from "react"; +import { useAsyncFn } from "react-use"; + +import { Button } from "@/components/buttons/Button"; +import { Icon, Icons } from "@/components/Icon"; +import { Box } from "@/components/layout/Box"; +import { Spinner } from "@/components/layout/Spinner"; +import { Heading2 } from "@/components/utils/Text"; + +export function FEDAPITestPart() { + const [status, setStatus] = useState({ + hasTested: false, + success: false, + errorText: "", + tokenStatus: "", + }); + + const [testState, runTests] = useAsyncFn(async () => { + setStatus({ + hasTested: false, + success: false, + errorText: "", + tokenStatus: "", + }); + + try { + const response = await fetch( + "https://fed-api.up.railway.app/token/status", + ); + const data = await response.json(); + + if (!response.ok) { + return setStatus({ + hasTested: true, + success: false, + errorText: data.message || "Not found", + tokenStatus: "", + }); + } + + return setStatus({ + hasTested: true, + success: true, + errorText: "", + tokenStatus: data.status, + }); + } catch (err) { + return setStatus({ + hasTested: true, + success: false, + errorText: + "Failed to connect to FED API, please check your internet connection", + tokenStatus: "", + }); + } + }, [setStatus]); + + return ( + <> + FED API test + + + + {!status.hasTested ? ( + Run the test to check FED API status + ) : status.success ? ( + + + + FED API is working + + Current status: {status.tokenStatus} + + ) : ( + <> + + + FED API is not working + + {status.errorText} + > + )} + + + {testState.loading ? : null} + Test FED API + + + + > + ); +}
Run the test to check FED API status
+ + FED API is working +
Current status: {status.tokenStatus}
+ + FED API is not working +
{status.errorText}