import { defineStore } from 'pinia' import { ref, computed } from 'vue' import { kappa } from '@/services/kappa-api' import type { KappaLoginPayload } from '@/types/kappa' function loadUser(): { name: string; email: string } | null { const raw = localStorage.getItem('kappa_user') return raw ? JSON.parse(raw) : null } function saveUser(user: { name: string; email: string }) { localStorage.setItem('kappa_user', JSON.stringify(user)) } export const useAuthStore = defineStore('auth', () => { const token = ref(localStorage.getItem('kappa_token')) const user = ref<{ name: string; email: string } | null>(loadUser()) const loading = ref(false) const error = ref(null) const isAuthenticated = computed(() => !!token.value) async function login(payload: KappaLoginPayload) { loading.value = true error.value = null try { const data = await kappa.login(payload) token.value = kappa['token'] const name = `${data.user?.first_name || ''} ${data.user?.last_name || ''}`.trim() user.value = { name: name || 'Ricardo Gonzalez', email: payload.email, } saveUser(user.value) return true } catch (e: any) { error.value = e.message return false } finally { loading.value = false } } function logout() { kappa.logout() token.value = null user.value = null localStorage.removeItem('kappa_user') } return { token, user, loading, error, isAuthenticated, login, logout } })