mirror of
https://github.com/hay-kot/homebox.git
synced 2024-12-23 23:36:30 +00:00
90813abf76
implenmented a store for each global item and tied it to an event bus and used the listener on the requests object to intercept responses from the API and run the appripriate get call when updates were detected.
33 lines
848 B
TypeScript
33 lines
848 B
TypeScript
import { defineStore } from "pinia";
|
|
import { ItemOut } from "~~/lib/api/types/data-contracts";
|
|
|
|
export const useItemStore = defineStore("items", {
|
|
state: () => ({
|
|
allItems: null as ItemOut[] | null,
|
|
client: useUserApi(),
|
|
}),
|
|
getters: {
|
|
/**
|
|
* items represents the items that are currently in the store. The store is
|
|
* synched with the server by intercepting the API calls and updating on the
|
|
* response.
|
|
*/
|
|
items(state): ItemOut[] {
|
|
if (state.allItems === null) {
|
|
Promise.resolve(this.refresh());
|
|
}
|
|
return state.allItems;
|
|
},
|
|
},
|
|
actions: {
|
|
async refresh(): Promise<ItemOut[]> {
|
|
const result = await this.client.items.getAll();
|
|
if (result.error) {
|
|
return result;
|
|
}
|
|
|
|
this.allItems = result.data.items;
|
|
return result;
|
|
},
|
|
},
|
|
});
|