From aa600b666ae733de8662f1c15cfcaebaa13dca06 Mon Sep 17 00:00:00 2001 From: Fuwn Date: Fri, 1 Mar 2024 04:17:12 -0800 Subject: feat(badges): migrate category mode --- src/routes/api/badges/+server.ts | 11 ++++- src/routes/user/[user]/badges/+page.svelte | 67 ++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+), 1 deletion(-) (limited to 'src/routes') diff --git a/src/routes/api/badges/+server.ts b/src/routes/api/badges/+server.ts index 9cfc49fc..20777845 100644 --- a/src/routes/api/badges/+server.ts +++ b/src/routes/api/badges/+server.ts @@ -5,7 +5,8 @@ import { updateUserBadge, getUserBadges, addUserBadge, - type Badge + type Badge, + migrateCategory } from '$lib/Database/userBadges'; const unauthorised = new Response('Unauthorised', { status: 401 }); @@ -61,6 +62,14 @@ export const PUT = async ({ cookies, url, request }) => { (await request.json()).map(async (badge: Badge) => await addUserBadge(identity.id, badge)) ); + return await badges(identity.id); + } else if (url.searchParams.get('migrate') || undefined) { + await migrateCategory( + identity.id, + url.searchParams.get('original') || '', + url.searchParams.get('new') || '' + ); + return await badges(identity.id); } diff --git a/src/routes/user/[user]/badges/+page.svelte b/src/routes/user/[user]/badges/+page.svelte index 03c9af50..ba02679c 100644 --- a/src/routes/user/[user]/badges/+page.svelte +++ b/src/routes/user/[user]/badges/+page.svelte @@ -49,6 +49,7 @@ let importCategory = ''; let importReplies = false; let badger: Partial; + let migrateMode = false; // $: downloadDisabled = badgeCount > 20; @@ -376,6 +377,21 @@ importMode = false; importImages = undefined; }); + + const migrateCategory = () => { + badgesPromise = fetch( + `/api/badges?migrate=true&original=${encodeURIComponent( + (document.querySelector('#migrate_original') as HTMLInputElement).value + )}&new=${encodeURIComponent( + (document.querySelector('#migrate_new') as HTMLInputElement).value + )}`, + { + method: 'PUT' + } + ); + + migrateMode = false; + }; @@ -490,6 +506,16 @@ ? $locale().user.badges.importMode.disable : $locale().user.badges.importMode.enable} + + {#if editMode && isOwner} {@const groups = groupedBadges @@ -767,6 +793,47 @@ {/if} + (migrateMode = false)} show={migrateMode}> + Migrate Category + +

+ + + + + Leave original category empty to migrate all uncategorised badges. + + +

+ + + + +