mirror of
https://github.com/jcreek/LivingDexTracker.git
synced 2026-07-12 18:43:45 +00:00
fix(#63): Enforce mutually exclusive catch states
This commit is contained in:
@@ -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();
|
||||
}
|
||||
</script>
|
||||
|
||||
<div
|
||||
@@ -84,7 +102,7 @@
|
||||
type="checkbox"
|
||||
bind:checked={catchRecord.caught}
|
||||
class="checkbox checkbox-primary border-black"
|
||||
on:change={updateCatchRecord}
|
||||
on:change={onCaughtChange}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
@@ -97,7 +115,7 @@
|
||||
type="checkbox"
|
||||
bind:checked={catchRecord.haveToEvolve}
|
||||
class="checkbox checkbox-primary border-black"
|
||||
on:change={updateCatchRecord}
|
||||
on:change={onNeedsToEvolveChange}
|
||||
/>
|
||||
</label>
|
||||
</div>
|
||||
|
||||
@@ -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
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user