From 35ee92df0ccda8aba15e5a887852422bd12be762 Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Fri, 9 Jan 2026 20:51:33 +0000 Subject: [PATCH] fix(#63): Enforce mutually exclusive catch states --- .../pokedex/PokedexEntryCatchRecord.svelte | 22 +++++++++++++++++-- src/routes/pokedex/[id]/+page.svelte | 10 ++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/src/lib/components/pokedex/PokedexEntryCatchRecord.svelte b/src/lib/components/pokedex/PokedexEntryCatchRecord.svelte index 100d447..fc2a44a 100644 --- a/src/lib/components/pokedex/PokedexEntryCatchRecord.svelte +++ b/src/lib/components/pokedex/PokedexEntryCatchRecord.svelte @@ -32,6 +32,24 @@ function updateCatchRecord() { dispatch('updateCatch', { pokedexEntry, catchRecord }); } + + function onCaughtChange() { + if (!catchRecord) return; + // Mutually exclusive with "needs to evolve" + if (catchRecord.caught) { + catchRecord.haveToEvolve = false; + } + updateCatchRecord(); + } + + function onNeedsToEvolveChange() { + if (!catchRecord) return; + // Mutually exclusive with "caught" + if (catchRecord.haveToEvolve) { + catchRecord.caught = false; + } + updateCatchRecord(); + }
@@ -97,7 +115,7 @@ type="checkbox" bind:checked={catchRecord.haveToEvolve} class="checkbox checkbox-primary border-black" - on:change={updateCatchRecord} + on:change={onNeedsToEvolveChange} /> diff --git a/src/routes/pokedex/[id]/+page.svelte b/src/routes/pokedex/[id]/+page.svelte index 3227188..5518707 100644 --- a/src/routes/pokedex/[id]/+page.svelte +++ b/src/routes/pokedex/[id]/+page.svelte @@ -104,6 +104,14 @@ async function updateACatch(event: any) { if (!pokedexId) return; const { catchRecord } = event.detail; + // Enforce mutual exclusivity (should be impossible to have both true). + const sanitizedCatchRecord: CatchRecord = { ...catchRecord }; + if (sanitizedCatchRecord.caught) { + sanitizedCatchRecord.haveToEvolve = false; + } + if (sanitizedCatchRecord.haveToEvolve) { + sanitizedCatchRecord.caught = false; + } if (!localUser?.id) { alert('User not signed in'); return; @@ -114,7 +122,7 @@ headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(catchRecord), + body: JSON.stringify(sanitizedCatchRecord), credentials: 'include' as RequestCredentials };