44 lines
1.1 KiB
TypeScript
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();
|
|
}
|