import type { CreateAbode, UpdateAbode } from "../../../db/types/Abode.js"; import type { DbInterface } from "../../../db/types/DbInterface.js"; import { waitForLoadIfLoading } from "../load.js"; import { delAbode, getAbode, setAbode } from "../slices/abodes.js"; import { clearLoading } from "../slices/loading.js"; import { getLoginUser } from "../slices/login.js"; import type { Store } from "../store.js"; export async function deleteAbodeById( aid: string, { store, db }: { store: Store; db: DbInterface } ): Promise { await Promise.all([ waitForLoadIfLoading(store, "loadAllAbodes"), waitForLoadIfLoading(store, `loadAbodeById:${aid}`), ]); await db.deleteAbodeById(aid); store.dispatch(delAbode(aid)); store.dispatch(clearLoading(`loadAbodeById:${aid}`)); } export async function updateAbode( abode: UpdateAbode, { store, db }: { store: Store; db: DbInterface } ): Promise { await Promise.all([ waitForLoadIfLoading(store, "loadAllAbodes"), waitForLoadIfLoading(store, `loadAbodeById:${abode.aid}`), ]); const user = getLoginUser(store.getState()); if (!user) throw new Error("Not logged in"); const next = await db.updateAbode(abode, { uid: user.uid }); store.dispatch(setAbode(next)); store.dispatch(clearLoading(`loadAbodeById:${abode.aid}`)); } export async function createAbode( abode: CreateAbode, { store, db }: { store: Store; db: DbInterface } ): Promise { await waitForLoadIfLoading(store, "loadAllAbodes"); const user = getLoginUser(store.getState()); if (!user) throw new Error("Not logged in"); const next = await db.createAbode(abode, { uid: user.uid }); store.dispatch(setAbode(next)); return next.aid; }