From d5dddba6df9e7507378e07b9479c6e1cc61a4c64 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 15 May 2026 14:41:57 +0200 Subject: [PATCH] fix: hide Files settings/nav when filesEnabled policy is off #291 --- app/[locale]/settings/page.tsx | 2 +- app/admin/layout.tsx | 36 ++++++++++++++++++++-------------- 2 files changed, 22 insertions(+), 16 deletions(-) diff --git a/app/[locale]/settings/page.tsx b/app/[locale]/settings/page.tsx index da3de6fa..99f4af15 100644 --- a/app/[locale]/settings/page.tsx +++ b/app/[locale]/settings/page.tsx @@ -590,7 +590,7 @@ export default function SettingsPage() { // Apps ...(supportsCalendar ? [{ id: 'calendar' as Tab, label: t('tabs.calendar'), icon: tabIcons.calendar, group: 'apps' as TabGroup }] : []), { id: 'contacts', label: t('tabs.contacts'), icon: tabIcons.contacts, group: 'apps' }, - ...(supportsFiles ? [{ id: 'files' as Tab, label: t('tabs.files'), icon: tabIcons.files, group: 'apps' as TabGroup }] : []), + ...(supportsFiles && isFeatureEnabled('filesEnabled') ? [{ id: 'files' as Tab, label: t('tabs.files'), icon: tabIcons.files, group: 'apps' as TabGroup }] : []), ...(isFeatureEnabled('sidebarAppsEnabled') ? [{ id: 'sidebar_apps' as Tab, label: t('tabs.sidebar_apps'), icon: tabIcons.sidebar_apps, group: 'apps' as TabGroup }] : []), // Advanced diff --git a/app/admin/layout.tsx b/app/admin/layout.tsx index 687fd4be..a792703a 100644 --- a/app/admin/layout.tsx +++ b/app/admin/layout.tsx @@ -27,6 +27,7 @@ import { } from 'lucide-react'; import { cn } from '@/lib/utils'; import { useConfig } from '@/hooks/use-config'; +import { usePolicyStore } from '@/stores/policy-store'; import { useThemeStore } from '@/stores/theme-store'; import { getActiveAccountSlotHeaders } from '@/lib/auth/active-account-slot'; @@ -87,6 +88,7 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) const [isStalwartAdmin, setIsStalwartAdmin] = useState(false); const [mobileNavOpen, setMobileNavOpen] = useState(false); const { appLogoLightUrl, appLogoDarkUrl, loginLogoLightUrl, loginLogoDarkUrl } = useConfig(); + const filesEnabled = usePolicyStore((s) => s.isFeatureEnabled('filesEnabled')); const resolvedTheme = useThemeStore((s) => s.resolvedTheme); const logoUrl = resolvedTheme === 'dark' ? (appLogoDarkUrl || appLogoLightUrl || loginLogoDarkUrl) @@ -300,13 +302,15 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) > - - - + {filesEnabled && ( + + + + )}
@@ -440,14 +444,16 @@ export default function AdminLayout({ children }: { children: React.ReactNode }) Contacts - - - Files - + {filesEnabled && ( + + + Files + + )}