2024-08-12 07:55:15 +00:00
|
|
|
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,
|
|
|
|
}
|
|
|
|
|
2024-08-12 15:51:42 +00:00
|
|
|
export function useAtk() {
|
|
|
|
return useCookie("__hydrogen_atk", { watch: "shallow" })
|
2024-08-12 07:55:15 +00:00
|
|
|
}
|
|
|
|
|
2024-08-12 15:51:42 +00:00
|
|
|
export function useLoggedInState() {
|
|
|
|
return computed(() => useAtk().value != null)
|
2024-08-12 07:55:15 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
export const useUserinfo = defineStore("userinfo", () => {
|
|
|
|
const userinfo = ref(defaultUserinfo)
|
|
|
|
const isReady = ref(false)
|
|
|
|
|
|
|
|
async function readProfiles() {
|
2024-08-12 15:51:42 +00:00
|
|
|
if (!useLoggedInState().value) {
|
2024-08-12 07:55:15 +00:00
|
|
|
isReady.value = true
|
|
|
|
}
|
|
|
|
|
|
|
|
const config = useRuntimeConfig()
|
|
|
|
|
|
|
|
const res = await fetch(`${config.public.solarNetworkApi}/cgi/auth/users/me`, {
|
2024-08-12 15:51:42 +00:00
|
|
|
headers: { Authorization: `Bearer ${useAtk().value}` },
|
2024-08-12 14:51:40 +00:00
|
|
|
credentials: "include",
|
2024-08-12 07:55:15 +00:00
|
|
|
})
|
|
|
|
|
|
|
|
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 }
|
|
|
|
})
|