Files
bill-manager/frontend/src/lib/store/billsStore.ts
2024-08-19 11:37:03 +02:00

38 lines
1.0 KiB
TypeScript

import { type Writable, writable } from "svelte/store";
import { GetBills } from "$wails/main/App";
import { main } from "$wails/models";
import { toast } from "svelte-sonner";
async function createStore(): Promise<Writable<Map<number, main.Bill>> & { refresh: Function }> {
const bills: Map<number, main.Bill> = new Map<number, main.Bill>();
const res = await GetBills();
if (!res.success) {
toast.error("Error getting bills " + res.error);
} else {
for (let i = 0; i < res.data.length; i++) {
const bill = res.data[i];
bills.set(bill.id, bill);
}
}
const { subscribe, update, set } = writable(bills);
return {
subscribe,
update,
set,
refresh: async () => {
const res = await GetBills();
if (!res.success) {
toast.error("Error getting bills " + res.error);
} else {
for (let i = 0; i < res.data.length; i++) {
const bill = res.data[i];
bills.set(bill.id, bill);
}
}
},
};
}
export const billsStore = await createStore();