import { ref } from 'vue' import { defineStore } from 'pinia' import type { MeResponse, User } from '@/types' export const useStateStore = defineStore('state', () => { const isAuthenticated = ref(false) const isLoading = ref(true) const user = ref(null) const viewedTickets = ref([]) async function getUser() { try { const response = await fetch('/api/me') const data = (await response.json()) as MeResponse user.value = data isAuthenticated.value = true } catch {} isLoading.value = false } function addViewedTicket(ticket: string) { if (!viewedTickets.value.includes(ticket)) viewedTickets.value.push(ticket) } async function waitForAuth() { while (isLoading.value) { await getUser() } } return { isAuthenticated, user, getUser, waitForAuth, viewedTickets, addViewedTicket, } })