import { defineStore } from 'pinia' import type { ReceptionData } from '~/services/dto/reception-data' import { createReception, getReception, updateReception } from '~/services/reception' const isReceptionData = (value: unknown): value is ReceptionData => { return Boolean(value && typeof value === 'object' && 'id' in value) } export const useReceptionStore = defineStore('reception', { state: () => ({ current: null as ReceptionData | null, isLoading: false }), actions: { setCurrent(reception: ReceptionData | null) { this.current = reception }, clearCurrent() { this.current = null }, async loadReception(id: number) { this.isLoading = true const result = await getReception(id).finally(() => { this.isLoading = false }) if (!isReceptionData(result)) { this.current = null return null } this.current = result return result }, async createReception(payload: Partial = {}) { this.isLoading = true const result = await createReception(payload).finally(() => { this.isLoading = false }) if (!isReceptionData(result)) { return null } this.current = result return result }, async updateReception(id: number, payload: Partial) { this.isLoading = true const result = await updateReception(id, payload).finally(() => { this.isLoading = false }) if (!isReceptionData(result)) { return null } this.current = result return result } } })