import Cookie from "universal-cookie" import { defineStore } from "pinia" import { ref } from "vue" import { request } from "@/scripts/request" export interface Userinfo { isReady: boolean isLoggedIn: boolean displayName: string data: any } const defaultUserinfo: Userinfo = { isReady: false, isLoggedIn: false, displayName: "Citizen", data: null } export function getAtk(): string { return new Cookie().get("identity_auth_key") } export function checkLoggedIn(): boolean { return new Cookie().get("identity_auth_key") } export const useUserinfo = defineStore("userinfo", () => { const userinfo = ref(defaultUserinfo) const isReady = ref(false) async function readProfiles() { if (!checkLoggedIn()) { isReady.value = true } const res = await request("/api/users/me", { headers: { Authorization: `Bearer ${getAtk()}` } }) if (res.status !== 200) { return } const data = await res.json() userinfo.value = { isReady: true, isLoggedIn: true, displayName: data["nick"], data: data } } return { userinfo, isReady, readProfiles } })