import { defineStore } from 'pinia' import { ref } from 'vue' import { api } from '../api/client' interface User { id: string name: string avatar_url: string | null provider: string } export const useUserStore = defineStore('user', () => { const user = ref(null) const loading = ref(false) async function fetchSession() { loading.value = true try { const data = await api.get<{ user: User | null }>('/auth/session') user.value = data.user } catch { user.value = null } finally { loading.value = false } } function loginWithGithub() { window.location.href = '/auth/github/signin' } function loginWithGoogle() { window.location.href = '/auth/google/signin' } async function logout() { await api.post('/auth/signout') user.value = null } return { user, loading, fetchSession, loginWithGithub, loginWithGoogle, logout, } })