import { useHasPermissionFlag } from '@/settings/roles/hooks/useHasPermissionFlag'; import { SettingsPath } from '@/types/SettingsPath'; import { useIsFeatureEnabled } from '@/workspace/hooks/useIsFeatureEnabled'; import { ReactNode } from 'react'; import { Navigate, Outlet } from 'react-router-dom'; import { FeatureFlagKey, PermissionFlagType } from '~/generated/graphql'; import { getSettingsPath } from '~/utils/navigation/getSettingsPath'; type SettingsProtectedRouteWrapperProps = { children?: ReactNode; settingsPermission?: PermissionFlagType; requiredFeatureFlag?: FeatureFlagKey; }; export const SettingsProtectedRouteWrapper = ({ children, settingsPermission, requiredFeatureFlag, }: SettingsProtectedRouteWrapperProps) => { const hasPermission = useHasPermissionFlag(settingsPermission); const requiredFeatureFlagEnabled = useIsFeatureEnabled( requiredFeatureFlag || null, ); if ((requiredFeatureFlag && !requiredFeatureFlagEnabled) || !hasPermission) { return ; } return children ?? ; };