import { defineStore } from "pinia";
import { ref } from "vue";
import { getUser } from "src/api/user";

export const userStore = defineStore("user", () => {
  const user = ref(null);
  const accessToken = ref(null);
  const isAdmin = ref(false);
  // Reautenticação do Financeiro: liberado por sessão, limpo no logout (#CB017).
  const financialUnlocked = ref(false);

  const setUser = (userData) => {
    user.value = userData;
    // A API expõe o perfil em user_type (ex.: "ADMIN"); "admin" administra a rede.
    isAdmin.value = userData?.user_type === "ADMIN";
  };

  const resetUser = () => {
    user.value = null;
    isAdmin.value = false;
    accessToken.value = false;
    financialUnlocked.value = false;
  };

  const fetchUser = async () => {
    const response = await getUser();
    setUser(response);
  };

  return {
    user,
    isAdmin,
    setUser,
    resetUser,
    fetchUser,
    accessToken,
    financialUnlocked,
  };
});
