From 2d81d03bbd3623856eff3f2549379e317629e8e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20Majdand=C5=BEi=C4=87?= Date: Wed, 12 Jun 2024 09:05:43 +0200 Subject: [PATCH] Make food a global store --- src/lib/components/EmptyFoodComp.svelte | 9 +++++++-- src/lib/components/Header.svelte | 8 -------- src/lib/router/routes/Home.svelte | 16 +++++++--------- src/lib/store/foodStore.ts | 15 +++++++++++++++ 4 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 src/lib/store/foodStore.ts diff --git a/src/lib/components/EmptyFoodComp.svelte b/src/lib/components/EmptyFoodComp.svelte index ce572a0..a15d7fb 100644 --- a/src/lib/components/EmptyFoodComp.svelte +++ b/src/lib/components/EmptyFoodComp.svelte @@ -2,6 +2,8 @@ import { type Food, FoodService } from '$lib/database/food' import { toast } from 'svelte-sonner' import { createEventDispatcher } from 'svelte' + import type { Err } from '$lib/types' + import { foodStore } from '$lib/store/foodStore' const dispatch = createEventDispatcher() @@ -19,7 +21,7 @@ item.food = name.trim() item.amount = parseInt(amount.trim()) item.description = description.trim() - const [food, err] = await FoodService.Create(item) + const [dbFood, err]: [Food, Err] = await FoodService.Create(item) name = '' amount = '' description = '' @@ -28,7 +30,10 @@ toast.error(err) return } - dispatch('created', food) + foodStore.update((food) => { + food.push(dbFood) + return food + }) } } diff --git a/src/lib/components/Header.svelte b/src/lib/components/Header.svelte index 44e14d6..aa1d284 100644 --- a/src/lib/components/Header.svelte +++ b/src/lib/components/Header.svelte @@ -21,14 +21,6 @@ label: 'Home', href: '/' }, - { - label: 'IPC', - href: '/#IPC' - }, - { - label: 'Versions', - href: '/#versions' - } ] diff --git a/src/lib/router/routes/Home.svelte b/src/lib/router/routes/Home.svelte index 6abb6d8..7fd235b 100644 --- a/src/lib/router/routes/Home.svelte +++ b/src/lib/router/routes/Home.svelte @@ -3,16 +3,14 @@ import { type Food, FoodService } from '$lib/database/food' import FoodComp from '$components/FoodComp.svelte' import EmptyFoodComp from '$components/EmptyFoodComp.svelte' - - let food: Food[] = [] - onMount(async () => { - food = await FoodService.GetAllForDate(new Date()); - }) + import { foodStore } from '$lib/store/foodStore' function newFood(event: CustomEvent) { console.log(event) - food.push(event.detail) - food = food + foodStore.update((food) => { + food.push(event.detail) + return food + }) } @@ -43,8 +41,8 @@ - - {#each food as f} + + {#each $foodStore as f} {/each} diff --git a/src/lib/store/foodStore.ts b/src/lib/store/foodStore.ts new file mode 100644 index 0000000..1f60c64 --- /dev/null +++ b/src/lib/store/foodStore.ts @@ -0,0 +1,15 @@ +import { type Writable, writable } from 'svelte/store' +import { type Food, FoodService } from '$lib/database/food' + + +async function createStore(): Promise> { + const foods = await FoodService.GetAllForDate(new Date()) + const { subscribe, update, set } = writable(foods) + return { + subscribe, + update, + set + } +} + +export const foodStore = await createStore()