This commit is contained in:
2026-06-06 15:23:10 +01:00
parent 9c6eeeb426
commit 59e7dd9fdc
+14 -6
View File
@@ -133,7 +133,7 @@
}); });
if (res.ok) { if (res.ok) {
toast.success('Card removed'); toast.success('Card removed');
savedCardsStore = savedCardsStore.filter((c) => c.id !== card.id); await savedCardsStore.invalidate();
} else { } else {
toast.error('Failed to remove card'); toast.error('Failed to remove card');
} }
@@ -169,6 +169,14 @@
let buyingGiftCard = $state(false); let buyingGiftCard = $state(false);
let purchaseResultCode = $state<string | null>(null); let purchaseResultCode = $state<string | null>(null);
$effect(() => {
if (savedCardsStore.cards.length > 0 && !buySelectedCard) {
const defaultCard =
savedCardsStore.cards.find((c) => c.is_default) || savedCardsStore.cards[0];
buySelectedCard = defaultCard.id;
}
});
function parseExpiryParts(value: string): { month: number; year: number } | null { function parseExpiryParts(value: string): { month: number; year: number } | null {
if (!/^\d{2}\/\d{2}$/.test(value)) return null; if (!/^\d{2}\/\d{2}$/.test(value)) return null;
const [monthStr, yearStr] = value.split('/'); const [monthStr, yearStr] = value.split('/');
@@ -414,7 +422,7 @@
} }
$effect(() => { $effect(() => {
if (savedCardsStore.length === 0 && buySelectedCard !== '') { if (savedCardsStore.cards.length === 0 && buySelectedCard !== '') {
buySelectedCard = ''; buySelectedCard = '';
} }
}); });
@@ -1804,14 +1812,14 @@
</Button> </Button>
</div> </div>
</div> </div>
{:else if savedCardsStore.length === 0} {:else if savedCardsStore.cards.length === 0}
<div class="py-8 text-center"> <div class="py-8 text-center">
<p class="text-gray-500">No saved cards yet</p> <p class="text-gray-500">No saved cards yet</p>
<Button class="mt-4" onclick={() => (showAddCard = true)}>Add a Card</Button> <Button class="mt-4" onclick={() => (showAddCard = true)}>Add a Card</Button>
</div> </div>
{:else} {:else}
<div class="space-y-3"> <div class="space-y-3">
{#each savedCardsStore as card (card.id)} {#each savedCardsStore.cards as card (card.id)}
<div class="flex items-center justify-between rounded-lg border p-4"> <div class="flex items-center justify-between rounded-lg border p-4">
<div class="flex items-center gap-3"> <div class="flex items-center gap-3">
<div <div
@@ -2045,9 +2053,9 @@
<span class="block text-xs font-semibold tracking-wider text-gray-500 uppercase" <span class="block text-xs font-semibold tracking-wider text-gray-500 uppercase"
>Payment Method</span >Payment Method</span
> >
{#if savedCardsStore.length > 0} {#if savedCardsStore.cards.length > 0}
<div class="space-y-2"> <div class="space-y-2">
{#each savedCardsStore as card (card.id)} {#each savedCardsStore.cards as card (card.id)}
<button <button
type="button" type="button"
class="flex w-full items-center justify-between rounded-lg border p-3 text-left {buySelectedCard === class="flex w-full items-center justify-between rounded-lg border p-3 text-left {buySelectedCard ===