From 1075771abb1ce4b649704614959d7c75540ee5e4 Mon Sep 17 00:00:00 2001 From: Michel NAUD Date: Thu, 12 Mar 2026 18:33:03 +0100 Subject: [PATCH 1/2] avoid frontend hardcoded menu entries types, fix missing discord type --- backend/app/api/admin_menu.py | 5 ++++ frontend/src/api/menu.ts | 5 ++++ .../src/components/admin/MenuListView.vue | 25 ++++++------------- .../src/components/admin/MenuTreeNode.vue | 16 ++---------- .../src/components/admin/MenuTreeView.vue | 15 ++++++++--- 5 files changed, 32 insertions(+), 34 deletions(-) diff --git a/backend/app/api/admin_menu.py b/backend/app/api/admin_menu.py index 93e1800..859d224 100644 --- a/backend/app/api/admin_menu.py +++ b/backend/app/api/admin_menu.py @@ -19,6 +19,11 @@ router = APIRouter(prefix="/admin/menu", tags=["admin-menu"]) +@router.get("/types") +async def get_menu_types(user: User = Depends(require_admin)): + return [{"value": k, "label": v} for k, v in MenuItem.TYPES.items()] + + def _build_admin_item_out(item: MenuItem) -> AdminMenuItemOut: return AdminMenuItemOut( id=item.id, diff --git a/frontend/src/api/menu.ts b/frontend/src/api/menu.ts index f8a4852..d2da3d6 100644 --- a/frontend/src/api/menu.ts +++ b/frontend/src/api/menu.ts @@ -21,6 +21,11 @@ export async function getAdminMenuItems(params?: { return data } +export async function getAdminMenuTypes(): Promise<{ value: number; label: string }[]> { + const { data } = await apiClient.get<{ value: number; label: string }[]>('/admin/menu/types') + return data +} + export async function getAdminMenuTree(): Promise { const { data } = await apiClient.get('/admin/menu/tree') return data diff --git a/frontend/src/components/admin/MenuListView.vue b/frontend/src/components/admin/MenuListView.vue index a2330af..ce4263d 100644 --- a/frontend/src/components/admin/MenuListView.vue +++ b/frontend/src/components/admin/MenuListView.vue @@ -1,7 +1,8 @@