From 621f8cefa0ce62640cee07a1ceb6615ff7844ae5 Mon Sep 17 00:00:00 2001 From: Nell Date: Fri, 31 Jul 2026 11:04:34 +0200 Subject: [PATCH] init --- frontend/src/pages/server/index.vue | 70 ++++++++++++++++++++++------- frontend/src/stores/category.ts | 10 ++++- frontend/src/stores/channel.ts | 1 - frontend/src/stores/server.ts | 35 ++++++++++++++- src/domain/dto/server.rs | 13 ++++++ src/routes/openapi.rs | 1 + src/routes/server/handlers.rs | 43 +++++++++++------- src/routes/server/mapper.rs | 35 ++++++++++----- src/routes/server/routes.rs | 3 +- 9 files changed, 165 insertions(+), 46 deletions(-) diff --git a/frontend/src/pages/server/index.vue b/frontend/src/pages/server/index.vue index 3be9518..4668289 100644 --- a/frontend/src/pages/server/index.vue +++ b/frontend/src/pages/server/index.vue @@ -7,6 +7,7 @@ import {useRoute} from 'vue-router' import CreateChannelDialog from '@/components/channel/CreateChannelDialog.vue' import {type MenuItem, useContextMenu} from '@/composables/useContextMenu' import {useUserStore} from "@/stores/user.ts"; +import {useServerStore} from "@/stores/server.ts"; const props = defineProps<{ serverId: string @@ -17,8 +18,8 @@ const route = useRoute() const channelStore = useChannelStore() const categoryStore = useCategoryStore() const userStore = useUserStore() -const {channels} = storeToRefs(channelStore) -const {categories} = storeToRefs(categoryStore) +const serverStore = useServerStore() +const {currentTree} = storeToRefs(serverStore) const {openContextMenu} = useContextMenu() @@ -29,9 +30,8 @@ const loadServerData = async (targetServerId: string) => { userStore.reset() try { await Promise.all([ - channelStore.fetchChannels(targetServerId), - categoryStore.fetchCategories(targetServerId), - userStore.fetchUsers(targetServerId) + userStore.fetchUsers(targetServerId), + serverStore.fetchServerTree(targetServerId) ]) } catch (error) { console.error('Failed to load server-scoped channels and categories:', error) @@ -50,7 +50,24 @@ watch( const showDialog = ref(false) -// Right click menu +// Right click menu (sidebar) +function onSidebarContextMenu(event: MouseEvent) { + const menuItems: MenuItem[] = [ + { + label: 'Nouveau canal', + icon: 'mdi-plus', + action: () => console.log('Nouveau canal'), + }, + { + label: 'Nouvelle catégorie', + icon: 'mdi-folder-plus', + action: () => console.log('Nouvelle catégorie'), + } + ] + openContextMenu(event, menuItems); +} + +// Right click menu (channel) async function openEditDialog(channel: any) { console.log("edit dialog clicked") } @@ -80,10 +97,12 @@ function onChannelContextMenu(event: MouseEvent, channel: any) { ] openContextMenu(event, menuItems); } + +