import { ref } from 'vue';
import { defineStore } from 'pinia';
import apiClient from '../services/api';
import { jwtDecode } from 'jwt-decode';

export const useAuthStore = defineStore('auth', () => {
  const user = ref(null);
  const isAuthenticated = ref(false);

  // 현재 사용자 정보 로드
  const loadUserInfo = () => {
    try {
      const token = localStorage.getItem('token');
      if (!token) {
        user.value = null;
        isAuthenticated.value = false;
        return null;
      }

      const decoded = jwtDecode(token);
      user.value = {
        id: decoded.id,
        email: decoded.email,
        name: decoded.name,
        role: decoded.role
      };
      isAuthenticated.value = true;
      return user.value;
    } catch (error) {
      console.error('사용자 정보 로드 실패:', error);
      user.value = null;
      isAuthenticated.value = false;
      return null;
    }
  };

  // 로그아웃
  const logout = () => {
    localStorage.removeItem('token');
    user.value = null;
    isAuthenticated.value = false;
  };

  return {
    user,
    isAuthenticated,
    loadUserInfo,
    logout
  };
});
