From a4d58fa25d6053419506d6e7e5b53d8268845990 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Mon, 5 Feb 2024 19:06:32 -0800 Subject: feat(badges): delete all --- src/routes/api/badges/+server.ts | 13 ++++++++++-- src/routes/user/[user]/badges/+page.svelte | 34 ++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) (limited to 'src/routes') diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index dedb84b3..c1e2afc8 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -1,5 +1,10 @@ import { userIdentity } from '$lib/AniList/identity'; -import { removeUserBadge, updateUserBadge, type Badge } from '$lib/Database/badges'; +import { + removeAllUserBadges, + removeUserBadge, + updateUserBadge, + type Badge +} from '$lib/Database/badges'; import { getUserBadges } from '$lib/Database/badges'; import { addUserBadge } from '$lib/Database/badges'; @@ -29,7 +34,11 @@ export const DELETE = async ({ url, cookies }) => { refreshToken: user['refresh_token'] }); - await removeUserBadge(identity.id, Number(url.searchParams.get('id'))); + if ((url.searchParams.get('prune') || 0) === 'true') { + await removeAllUserBadges(identity.id); + } else { + await removeUserBadge(identity.id, Number(url.searchParams.get('id'))); + } return await badges(identity.id); }; diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index 6ad6e845..21beb415 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -37,6 +37,7 @@ // let dark = true; // let transparent = false; let confirmDelete = 0; + let confirmPrune = 0; let selectedBadge: Badge | undefined = undefined; let loadError: string | null = null; const isId = /^\d+$/.test(data.username); @@ -206,6 +207,25 @@ selectedBadge = undefined; }; + const removeAllBadges = () => { + if (confirmPrune === 2) { + confirmPrune = 0; + } else if (confirmPrune === 0) { + confirmPrune = 1; + + return; + } else { + confirmPrune = 2; + + return; + } + + selectedBadge = undefined; + badgesPromise = fetch(root(`/api/badges?prune=true`), { + method: 'DELETE' + }); + }; + const removeBadge = (badge: Badge) => { if (!badge.id) return; @@ -733,6 +753,20 @@ {$locale().user.badges.importMode.fetch} +

+ +

+ Dangerous + + +
+ {#if importImages && importImages.length > 0}

-- cgit v1.2.3