💄 Optimize userinfo loading process

This commit is contained in:
2024-08-13 16:23:33 +08:00
parent 3fc80dc9fe
commit 4e5bcaad94
3 changed files with 23 additions and 24 deletions

View File

@ -27,8 +27,9 @@ export function useLoggedInState() {
}
export const useUserinfo = defineStore("userinfo", () => {
const userinfo = ref(defaultUserinfo)
const userinfo = ref<any>(null)
const isReady = ref(false)
const isLoggedIn = ref(false)
const lastRefreshedAt = ref<Date | null>(null)
@ -39,6 +40,7 @@ export const useUserinfo = defineStore("userinfo", () => {
}
async function getAtk() {
if (!useLoggedInState().value) return useAtk().value
if (lastRefreshedAt.value != null && Math.floor(Math.abs(Date.now() - lastRefreshedAt.value.getTime()) / 60000) < 3) {
return useAtk().value
}
@ -69,23 +71,19 @@ export const useUserinfo = defineStore("userinfo", () => {
isReady.value = true
}
const config = useRuntimeConfig()
const res = await solarFetch("/cgi/auth/users/me")
if (res.status !== 200) {
isReady.value = true
return
}
const data = await res.json()
isLoggedIn.value = true
isReady.value = true
userinfo.value = {
isLoggedIn: true,
displayName: data["nick"],
data: data,
}
userinfo.value = data
}
return { userinfo, lastRefreshedAt, isReady, setTokenSet, getAtk, readProfiles }
return { userinfo, lastRefreshedAt, isLoggedIn, isReady, setTokenSet, getAtk, readProfiles }
})