OrganizationSettingsMenu.tsx 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { useFlag, useParams } from 'common'
  2. import { useRouter } from 'next/router'
  3. import {
  4. generateOrganizationSettingsSections,
  5. normalizeOrganizationSettingsPath,
  6. } from './OrganizationSettingsLayout'
  7. import { useIsPlatformWebhooksEnabled } from '@/components/interfaces/App/FeaturePreview/FeaturePreviewContext'
  8. import { SubMenu } from '@/components/ui/ProductMenu/SubMenu'
  9. import { useIsFeatureEnabled } from '@/hooks/misc/useIsFeatureEnabled'
  10. import { getPathnameWithoutQuery } from '@/lib/pathname.utils'
  11. export interface OrganizationSettingsMenuProps {
  12. onCloseSheet?: () => void
  13. }
  14. export function OrganizationSettingsMenu({ onCloseSheet }: OrganizationSettingsMenuProps) {
  15. const router = useRouter()
  16. const { slug } = useParams()
  17. const organizationSlug = slug ?? (router.query.orgSlug as string) ?? ''
  18. const pathname = getPathnameWithoutQuery(router.asPath, router.pathname)
  19. const currentPath = normalizeOrganizationSettingsPath(pathname)
  20. const showPlatformWebhooks = useIsPlatformWebhooksEnabled()
  21. const showPrivateApps = useFlag('privateApps')
  22. const {
  23. organizationShowSsoSettings: showSsoSettings,
  24. organizationShowSecuritySettings: showSecuritySettings,
  25. organizationShowLegalDocuments: showLegalDocuments,
  26. } = useIsFeatureEnabled([
  27. 'organization:show_sso_settings',
  28. 'organization:show_security_settings',
  29. 'organization:show_legal_documents',
  30. ])
  31. const sections = generateOrganizationSettingsSections({
  32. slug: organizationSlug,
  33. currentPath,
  34. showSecuritySettings: showSecuritySettings,
  35. showSsoSettings,
  36. showLegalDocuments,
  37. showPlatformWebhooks,
  38. showPrivateApps,
  39. })
  40. const page = currentPath.split('/').filter(Boolean).pop()
  41. return <SubMenu sections={sections} page={page} onItemClick={onCloseSheet} />
  42. }