From afccb7fa4dcfaf1ef119b04b34c9de21f7109c77 Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Thu, 30 Oct 2025 13:05:12 -0600 Subject: [PATCH] add progress cleaning tool to admin page --- src/pages/admin/AdminPage.tsx | 2 + src/pages/parts/admin/ProgressCleanupPart.tsx | 123 ++++++++++++++++++ 2 files changed, 125 insertions(+) create mode 100644 src/pages/parts/admin/ProgressCleanupPart.tsx diff --git a/src/pages/admin/AdminPage.tsx b/src/pages/admin/AdminPage.tsx index eaa9dfac..389c3029 100644 --- a/src/pages/admin/AdminPage.tsx +++ b/src/pages/admin/AdminPage.tsx @@ -14,6 +14,7 @@ import { WorkerTestPart } from "@/pages/parts/admin/WorkerTestPart"; import { BackendTestPart } from "../parts/admin/BackendTestPart"; import { EmbedOrderPart } from "../parts/admin/EmbedOrderPart"; +import { ProgressCleanupPart } from "../parts/admin/ProgressCleanupPart"; export function AdminPage() { const { t } = useTranslation(); @@ -50,6 +51,7 @@ export function AdminPage() { disabledEmbeds={embedOrderState.disabledEmbeds} setDisabledEmbeds={embedOrderState.setDisabledEmbeds} /> + (`/users/${account.userId}/progress/cleanup`, { + method: "DELETE", + headers: { + Authorization: `Bearer ${account.token}`, + }, + baseURL: backendUrl, + }); +} + +export function ProgressCleanupPart() { + const backendUrl = useBackendUrl(); + const account = useAuthStore((s) => s.account); + + const [status, setStatus] = useState<{ + hasRun: boolean; + success: boolean; + errorText: string; + result: CleanupResponse | null; + }>({ + hasRun: false, + success: false, + errorText: "", + result: null, + }); + + const [cleanupState, runCleanup] = useAsyncFn(async () => { + setStatus({ + hasRun: false, + success: false, + errorText: "", + result: null, + }); + + if (!backendUrl || !account) { + return setStatus({ + hasRun: true, + success: false, + errorText: "Backend URL or account not available", + result: null, + }); + } + + try { + const result = await cleanupProgressItems(backendUrl, account); + return setStatus({ + hasRun: true, + success: true, + errorText: "", + result, + }); + } catch (err) { + console.error("Progress cleanup failed:", err); + return setStatus({ + hasRun: true, + success: false, + errorText: + "Failed to clean up progress items. Check console for details.", + result: null, + }); + } + }, [backendUrl, account]); + + return ( + <> + Progress Cleanup + + + {!status.hasRun ? ( + Remove unwanted progress items from the database + ) : status.success ? ( + + + Cleanup completed + + ) : ( + + + + Cleanup failed + + {status.errorText} + + )} + + Clean Up Progress + + + + > + ); +}
Remove unwanted progress items from the database
+ + Cleanup completed +
+ + Cleanup failed +
{status.errorText}