diff --git a/src/modules/interface/menus/components/MenuList.vue b/src/modules/interface/menus/components/MenuList.vue index 74f4be20..dacd6e35 100644 --- a/src/modules/interface/menus/components/MenuList.vue +++ b/src/modules/interface/menus/components/MenuList.vue @@ -8,6 +8,7 @@ import { VStatusDot, VEntity, VEntityField, + VTag, } from "@halo-dev/components"; import MenuEditingModal from "./MenuEditingModal.vue"; import { onMounted, onUnmounted, ref } from "vue"; @@ -142,6 +143,44 @@ onMounted(async () => { defineExpose({ handleFetchMenus, }); + +// primary menu +const primaryMenuName = ref(); + +const handleFetchPrimaryMenuName = async () => { + const { data } = await apiClient.extension.configMap.getv1alpha1ConfigMap({ + name: "system", + }); + + if (!data.data?.menu) { + return; + } + + const menuConfig = JSON.parse(data.data.menu); + + primaryMenuName.value = menuConfig.primary; +}; + +const handleSetPrimaryMenu = async (menu: Menu) => { + const { data: systemConfigMap } = + await apiClient.extension.configMap.getv1alpha1ConfigMap({ + name: "system", + }); + + if (systemConfigMap.data) { + const menuConfigToUpdate = JSON.parse(systemConfigMap.data?.menu || "{}"); + menuConfigToUpdate.primary = menu.metadata.name; + systemConfigMap.data["menu"] = JSON.stringify(menuConfigToUpdate); + + await apiClient.extension.configMap.updatev1alpha1ConfigMap({ + name: "system", + configMap: systemConfigMap, + }); + } + await handleFetchPrimaryMenuName(); +}; + +onMounted(handleFetchPrimaryMenuName);