Initial project
This commit is contained in:
43
src/store/visitUser.ts
Normal file
43
src/store/visitUser.ts
Normal file
@ -0,0 +1,43 @@
|
||||
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();
|
||||
}
|
||||
Reference in New Issue
Block a user