import { acceptHMRUpdate, defineStore } from 'pinia' import { useUserStore } from "@/stores/userStore"; import { type User } from '@/stores/types'; export interface Sticker { color: string, owner: string | null, uuid: string, } export interface State { sticker: Sticker | null; } export const useStickerStore = defineStore('sticker', { actions: { async fetch(uuid: string) { if (this.sticker) { return; } // TODO: Check if we have it already and if it's stale. const response = await fetch( `/api/sticker/${uuid}`, ); this.sticker = await response.json(); }, async put(uuid: string) { const response = await fetch( `/api/sticker/${uuid}`, { body: JSON.stringify(this.sticker), method: 'PUT', }, ); const json = await response.json(); // Disable this for now so we don't clobber the new owner. // this.sticker = json; }, setOwner(user: User) { if (!this.sticker) { return; } // this.sticker.owner = user.username; does not work this.sticker = { ...this.sticker, owner: user.username, } this.put(this.sticker.uuid); const userStore= useUserStore(); userStore.addSticker(user.username, this.sticker.uuid); }, }, state: (): State => { return { sticker: null, }; }, }) if (import.meta.hot) { import.meta.hot.accept(acceptHMRUpdate(useStickerStore, import.meta.hot)) }