From 2444cea22eba4ca656de0f96ae3d39405fb8f32e Mon Sep 17 00:00:00 2001 From: Innei Date: Fri, 11 Oct 2024 14:47:09 +0800 Subject: [PATCH] feat: hide if Signed-off-by: Innei --- .../modules/settings/hooks/use-setting-ctx.ts | 16 ++++++++++++++++ .../src/modules/settings/modal/layout.tsx | 9 +++++---- apps/renderer/src/modules/settings/utils.ts | 7 +++++++ .../src/pages/settings/(settings)/actions.tsx | 2 ++ apps/renderer/src/pages/settings/layout.tsx | 5 +++-- 5 files changed, 33 insertions(+), 6 deletions(-) create mode 100644 apps/renderer/src/modules/settings/hooks/use-setting-ctx.ts diff --git a/apps/renderer/src/modules/settings/hooks/use-setting-ctx.ts b/apps/renderer/src/modules/settings/hooks/use-setting-ctx.ts new file mode 100644 index 000000000..d6b140e8d --- /dev/null +++ b/apps/renderer/src/modules/settings/hooks/use-setting-ctx.ts @@ -0,0 +1,16 @@ +import { useUserRole } from "~/atoms/user" + +import { settings } from "../constants" +import type { SettingPageContext } from "../utils" + +export const useSettingPageContext = (): SettingPageContext => { + const role = useUserRole() + return { + role, + } +} + +export const useAvailableSettings = () => { + const ctx = useSettingPageContext() + return settings.filter((t) => !t.loader().hideIf?.(ctx)) +} diff --git a/apps/renderer/src/modules/settings/modal/layout.tsx b/apps/renderer/src/modules/settings/modal/layout.tsx index 5f63bca31..5c59adc36 100644 --- a/apps/renderer/src/modules/settings/modal/layout.tsx +++ b/apps/renderer/src/modules/settings/modal/layout.tsx @@ -14,8 +14,8 @@ import { ElECTRON_CUSTOM_TITLEBAR_HEIGHT } from "~/constants" import { preventDefault } from "~/lib/dom" import { cn, getOS } from "~/lib/utils" -import { settings } from "../constants" import { SettingSyncIndicator } from "../helper/SyncIndicator" +import { useAvailableSettings } from "../hooks/use-setting-ctx" import { SettingsSidebarTitle } from "../title" import { useSetSettingTab, useSettingTab } from "./context" import { defaultCtx, SettingContext } from "./hooks" @@ -43,15 +43,16 @@ export function SettingModalLayout( dragControls: dragController, }) + const availableSettings = useAvailableSettings() useEffect(() => { if (!tab) { if (initialTab) { setTab(initialTab) } else { - setTab(settings[0].path) + setTab(availableSettings[0].path) } } - }, []) + }, [availableSettings]) const { draggable, overlay } = useUISettingSelector((state) => ({ draggable: state.modalDraggable, @@ -125,7 +126,7 @@ export function SettingModalLayout( {APP_NAME}