import Cookie from "universal-cookie"
import { defineStore } from "pinia"
import { ref } from "vue"

export interface Userinfo {
  isLoggedIn: boolean
  displayName: string
  data: any
}

export const defaultUserinfo: Userinfo = {
  isLoggedIn: false,
  displayName: "Citizen",
  data: null,
}

export function getAtk(): string {
  return new Cookie().get("__hydrogen_atk")
}

export function checkLoggedIn(): boolean {
  return new Cookie().get("__hydrogen_rtk")
}

export function setTokenSet(atk: string, rtk: string) {
  new Cookie().set("__hydrogen_atk", atk, { path: "/" })
  new Cookie().set("__hydrogen_rtk", rtk, { path: "/" })
}

export const useUserinfo = defineStore("userinfo", () => {
  const userinfo = ref(defaultUserinfo)
  const isReady = ref(false)

  async function readProfiles() {
    if (!checkLoggedIn()) {
      isReady.value = true
    }

    const config = useRuntimeConfig()

    const res = await fetch(`${config.public.solarNetworkApi}/cgi/auth/users/me`, {
      headers: { Authorization: `Bearer ${getAtk()}` },
      credentials: "include",
    })

    if (res.status !== 200) {
      return
    }

    const data = await res.json()

    isReady.value = true
    userinfo.value = {
      isLoggedIn: true,
      displayName: data["nick"],
      data: data,
    }
  }

  return { userinfo, isReady, readProfiles }
})
