import { defineStore } from "pinia";
import axios from "axios";

export const useAuthStore = defineStore("auth", {
  state: () => ({
    loggedIn: localStorage.getItem("token") ? true : false,
    user: null,
  }),

  getters: {},

  actions: {
    async login(credentials) {
      await axios.get("sanctum/csrf-cookie");

      const response = (await axios.post("api/login", credentials)).data;

      if (response) {
        const token = `Bearer ${response.token}`;

        localStorage.setItem("token", token);
        axios.defaults.headers.common["Authorization"] = token;

        await this.ftechUser();
      }
    },

    async logout() {
      const response = (await axios.post("api/logout")).data;

      if (response) {
        localStorage.removeItem("token");

        this.$reset();
      }
    },

    async ftechUser() {
      this.user = (await axios.get("api/me")).data;

      this.loggedIn = true;
    },
  },
});
