From 1338f65be7e1a93ac8ff4215f773d449fe62fbdc Mon Sep 17 00:00:00 2001 From: Josh Creek <8179928+jcreek@users.noreply.github.com> Date: Tue, 14 May 2024 20:27:03 +0100 Subject: [PATCH] feat(#4): Add toast for adding an item to basket --- src/lib/stores/generalStore.ts | 3 ++ src/routes/+layout.svelte | 48 ++++++++++++++++---- src/routes/products/[productId]/+page.svelte | 16 ++++++- 3 files changed, 57 insertions(+), 10 deletions(-) create mode 100644 src/lib/stores/generalStore.ts diff --git a/src/lib/stores/generalStore.ts b/src/lib/stores/generalStore.ts new file mode 100644 index 0000000..56fd383 --- /dev/null +++ b/src/lib/stores/generalStore.ts @@ -0,0 +1,3 @@ +import { writable } from 'svelte/store'; + +export const general = writable({ hideToast: true }); diff --git a/src/routes/+layout.svelte b/src/routes/+layout.svelte index bcd2ffa..3fa38ee 100644 --- a/src/routes/+layout.svelte +++ b/src/routes/+layout.svelte @@ -2,29 +2,38 @@ import 'tailwindcss/tailwind.css'; import { onDestroy, onMount } from 'svelte'; import { basket, type Basket, type Item } from '$lib/stores/basket.js'; + import { general } from '$lib/stores/generalStore.js'; import { invalidate } from '$app/navigation'; import SignIn from '$lib/components/SignIn.svelte'; import SignOut from '$lib/components/SignOut.svelte'; export let data; - let { supabase, session } = data - $: ({ supabase, session } = data) + let { supabase, session } = data; + $: ({ supabase, session } = data); let localBasket: Basket; const unsubscribeToBasket = basket.subscribe((value) => { localBasket = value; }); - onDestroy(unsubscribeToBasket); + + let localGeneral: any; + const unsubscribeToGeneralStore = general.subscribe((value) => { + localGeneral = value; + }); + onDestroy(() => { + unsubscribeToBasket(); + unsubscribeToGeneralStore(); + }); onMount(() => { const { data } = supabase.auth.onAuthStateChange((event, _session) => { - if (_session?.expires_at !== session?.expires_at) { - // tells SvelteKit that the root +layout.ts load function should be executed whenever the session updates to keep the page store in sync. - invalidate('supabase:auth') - } - }) + if (_session?.expires_at !== session?.expires_at) { + // tells SvelteKit that the root +layout.ts load function should be executed whenever the session updates to keep the page store in sync. + invalidate('supabase:auth'); + } + }); - return () => data.subscription.unsubscribe() + return () => data.subscription.unsubscribe(); }); @@ -209,6 +218,27 @@ +