Files
space/src/store/visitUser.ts
2025-07-16 16:41:21 +08:00

44 lines
1.1 KiB
TypeScript

import { defineStore } from "pinia";
import { UserAPI, userStore, UserView } from "timi-web";
const store = defineStore("visitUser", () => {
const visitUserView = ref<UserView>();
const isVisitor = computed(() => {
const loginUser = userStore.loginUser;
return !userStore.isLogged() || !loginUser.token || !visitUserView.value || loginUser.token.id !== visitUserView.value.id;
});
async function updateVisitUserView(id: number): Promise<void> {
if (visitUserView.value && visitUserView.value.id === id) {
return;
}
if (!visitUserView.value && userStore.loginUser.user?.id === Number(id)) {
visitUserView.value = userStore.loginUser.user;
return;
}
visitUserView.value = await UserAPI.view(id);
}
async function reloadVisitUserView(): Promise<void> {
if (visitUserView.value) {
const id = visitUserView.value.id as number;
visitUserView.value = undefined;
await updateVisitUserView(id);
}
}
return {
isVisitor,
visitUserView,
updateVisitUserView,
reloadVisitUserView
};
});
export function useVisitUserStore() {
return store();
}