import apiFetch from "@/lib/api-fetch"; import type { Account } from "@/lib/api/entities/account"; import { defineStore } from "pinia"; import { ref } from "vue"; const localStorageKey = "vulpine-current-user"; const tokenKey = "vulpine-token"; export const useAccountStore = defineStore("current-user", () => { const json = localStorage.getItem(localStorageKey); const user = ref(json ? JSON.parse(json) : undefined); const token = ref(localStorage.getItem(tokenKey) || undefined); function setUser(meUser: Account) { user.value = meUser; localStorage.setItem(localStorageKey, JSON.stringify(user.value)); } async function fetchUser() { user.value = await apiFetch("/api/v1/accounts/verify_credentials"); localStorage.setItem(localStorageKey, JSON.stringify(user.value)); } function setToken(newToken: string) { localStorage.setItem(tokenKey, newToken); token.value = newToken; } return { user, token, setUser, setToken, fetchUser }; });