export const useUserStore = defineStore("user", () => {
  // 상태
  const isLoggedIn = ref(false);
  const user = ref<{
    id?: string;
    userId?: string;
    email?: string;
    name?: string;
    role?: string;
  } | null>(null);
  const token = ref<string | null>(null);

  // 게터
  const isAdmin = computed(() => user.value?.role === "admin");
  const userName = computed(() => user.value?.name || "사용자");

  // 액션
  const login = async (userId: string, password: string) => {
    try {
      // 실제 API 호출로 대체할 수 있습니다
      /*
      const { data, error: _error } = await useApi('/login', {
        method: 'post',
        body: { id: userId, pw: password, loginLogFlag : 0 }
      })
     */
      // 임시 로그인 로직 (실제로는 API 응답을 사용)
      if (userId && password) {
        // 테스트 계정 확인
        let mockUser;
        
        if (userId === "admin" && password === "stam1201!") {
          mockUser = {
            id: "1",
            userId: "admin",
            email: "admin@test.com",
            name: "관리자",
            role: "admin",
          };
        } else if (userId === "user" && password === "stam1201!") {
          mockUser = {
            id: "2",
            userId: "user",
            email: "user@test.com",
            name: "일반사용자",
            role: "user",
          };
        } else {
          throw new Error("아이디 또는 비밀번호가 올바르지 않습니다.");
        }
        
/*
        if(data && data.value){
          mockUser = data.value;
        }else{
          throw new Error("아이디 또는 비밀번호가 올바르지 않습니다.");
        }
*/
        user.value = mockUser;
        token.value = "mock-token-" + Date.now();
        isLoggedIn.value = true;

        // 로컬 스토리지에 저장
        localStorage.setItem("user", JSON.stringify(mockUser));
        localStorage.setItem("token", token.value);

        return { success: true, user: mockUser };
      } else {
        throw new Error("아이디와 비밀번호를 입력해주세요.");
      }
    } catch (error) {
      console.error("로그인 실패:", error);
      return {
        success: false,
        error:
          error instanceof Error ? error.message : "로그인에 실패했습니다.",
      };
    }
  };

  const logout = () => {
    user.value = null;
    token.value = null;
    isLoggedIn.value = false;

    // 로컬 스토리지에서 제거
    localStorage.removeItem("user");
    localStorage.removeItem("token");
  };

  const checkAuth = () => {
    // 페이지 로드 시 로컬 스토리지에서 사용자 정보 복원
    const savedUser = localStorage.getItem("user");
    const savedToken = localStorage.getItem("token");

    if (savedUser && savedToken) {
      user.value = JSON.parse(savedUser);
      token.value = savedToken;
      isLoggedIn.value = true;
    }
  };

  // 초기 인증 상태 확인
  if (import.meta.client) {
    checkAuth();
  }

  return {
    // 상태
    isLoggedIn,
    user,
    token,

    // 게터
    isAdmin,
    userName,

    // 액션
    login,
    logout,
    checkAuth,
  };
});
