import { defineStore } from 'pinia' import type { UserData } from '~/services/dto/user-data' import { getCurrentUser, login, logout } from '~/services/auth' export const useAuthStore = defineStore('auth', { state: () => ({ user: null as UserData | null, isLoading: false, checked: false }), getters: { isAuthenticated: (state) => Boolean(state.user) }, actions: { async ensureSession() { if (this.checked) { return this.user } this.checked = true try { const me = await getCurrentUser() this.user = me return me } catch { this.user = null return null } }, async login(username: string, password: string) { this.isLoading = true try { await login(username, password) const me = await getCurrentUser() this.user = me this.checked = true return me } finally { this.isLoading = false } }, async logout() { this.isLoading = true try { await logout() } catch { // Ignore logout errors so we can still clear local auth state. } finally { this.user = null this.checked = true this.isLoading = false } } } })