46 lines
1.4 KiB
TypeScript
46 lines
1.4 KiB
TypeScript
import { create } from "zustand";
|
|
import { devtools } from "zustand/middleware";
|
|
import Flatastic from "@/api/flatastic";
|
|
import type { FlatasticChore, FlatasticUser } from "@/types/flatasticChore";
|
|
|
|
// biome-ignore format: deep
|
|
function parseInformationData(data): FlatasticUser[] {
|
|
return data.flatmates.map((user: { id: string; firstName: string }) => ({
|
|
id: user.id as string,
|
|
firstName: user.firstName as string,
|
|
}));
|
|
}
|
|
|
|
const useFlatasticStore = create(
|
|
devtools(
|
|
(set) => ({
|
|
flatasticData: {
|
|
chores: [] as FlatasticChore[],
|
|
users: [] as FlatasticUser[],
|
|
},
|
|
fetch: async () => {
|
|
if (!import.meta.env.VITE_FLATTASTIC_API_KEY) {
|
|
throw new Error("Flatastic API Key is not set");
|
|
}
|
|
const flatastic = new Flatastic(
|
|
import.meta.env.VITE_FLATTASTIC_API_KEY,
|
|
);
|
|
const data = await flatastic.getTaskList();
|
|
const dataB = await flatastic.getInformation();
|
|
|
|
set({
|
|
flatasticData: {
|
|
chores: data as FlatasticChore[],
|
|
users: parseInformationData(dataB),
|
|
},
|
|
});
|
|
},
|
|
}),
|
|
{
|
|
name: "flatastic-store",
|
|
},
|
|
),
|
|
);
|
|
|
|
export { useFlatasticStore };
|