Files
warren/frontend/stores/admin.ts
2025-07-22 22:01:43 +02:00

64 lines
2.0 KiB
TypeScript

import type { AuthUser } from '#shared/types/auth';
import type { AdminResources, AuthUserWithWarrens } from '~/shared/types/admin';
import type { AdminWarrenData } from '~/shared/types/warrens';
export const useAdminStore = defineStore('admin', {
state: () => ({
resources: {
users: [],
warrens: {},
} as AdminResources,
createWarrenDialogOpen: false,
editWarrenDialog: null as { warren: AdminWarrenData } | null,
deleteWarrenDialog: null as { warren: AdminWarrenData } | null,
createUserDialogOpen: false,
editUserDialog: null as { user: AuthUserWithWarrens } | null,
deleteUserDialog: null as { user: AuthUser } | null,
}),
actions: {
openCreateWarrenDialog() {
this.createWarrenDialogOpen = true;
},
closeCreateWarrenDialog() {
this.createWarrenDialogOpen = false;
},
openEditWarrenDialog(warren: AdminWarrenData) {
this.editWarrenDialog = {
warren,
};
},
closeEditWarrenDialog() {
this.editWarrenDialog = null;
},
openDeleteWarrenDialog(warren: AdminWarrenData) {
this.deleteWarrenDialog = {
warren,
};
},
closeDeleteWarrenDialog() {
this.deleteWarrenDialog = null;
},
openCreateUserDialog() {
this.createUserDialogOpen = true;
},
closeCreateUserDialog() {
this.createUserDialogOpen = false;
},
setEditUserDialog(user: AuthUserWithWarrens) {
this.editUserDialog = { user };
},
closeEditUserDialog() {
this.editUserDialog = null;
},
openDeleteUserDialog(user: AuthUser) {
this.deleteUserDialog = {
user: user,
};
},
closeDeleteUserDialog() {
this.deleteUserDialog = null;
},
},
});