From ad135408791d54692bbd5c9c5e71b43e3a29489a Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Wed, 17 Jul 2024 18:01:59 +0100 Subject: [PATCH] feat(#46): Add buttons to update catch records for entire boxes --- src/routes/mydex/boxes/+page.svelte | 72 +++++++++++++++++++++++++++++ 1 file changed, 72 insertions(+) diff --git a/src/routes/mydex/boxes/+page.svelte b/src/routes/mydex/boxes/+page.svelte index 860d2ec..880cb45 100644 --- a/src/routes/mydex/boxes/+page.svelte +++ b/src/routes/mydex/boxes/+page.svelte @@ -82,6 +82,67 @@ } } } + + async function updateCatchRecords( + boxNumber: number, + caught: boolean, + needsToEvolve: boolean, + inHome: boolean | null = null + ) { + let catchRecordsToUpdate = combinedData + .filter(({ pokedexEntry }) => pokedexEntry[currentPlacement].box === boxNumber) + .map(({ catchRecord }) => { + // Create the base object with existing properties + let updatedRecord = { ...catchRecord }; + + if (inHome !== null) { + updatedRecord = { + ...updatedRecord, + inHome + }; + } else { + updatedRecord = { + ...updatedRecord, + caught, + haveToEvolve: needsToEvolve + }; + } + + return updatedRecord; + }); + + await fetch('/api/catch-records', { + method: 'POST', + headers: { + 'Content-Type': 'application/json' + }, + body: JSON.stringify(catchRecordsToUpdate) + }).then(async () => { + // TODO - Notify the user that data is being updated + await getData(false); + // TODO - Remove the notification + }); + } + + async function markBoxAsNotCaught(boxNumber: number) { + await updateCatchRecords(boxNumber, false, false); + } + + async function markBoxAsCaught(boxNumber: number) { + await updateCatchRecords(boxNumber, true, false); + } + + async function markBoxAsNeedsToEvolve(boxNumber: number) { + await updateCatchRecords(boxNumber, false, true); + } + + async function markBoxAsInHome(boxNumber: number) { + await updateCatchRecords(boxNumber, false, false, true); + } + + async function markBoxAsNotInHome(boxNumber: number) { + await updateCatchRecords(boxNumber, false, false, false); + } @@ -106,6 +167,17 @@ {#each boxNumbers as boxNumber}

Box {boxNumber}

+ + + + +
{#each combinedData as { pokedexEntry, catchRecord }} {#if pokedexEntry[currentPlacement].box === boxNumber}