Skip to content

Commit

Permalink
feat(sanity): hide global user menu inside Core UI Rendering Context
Browse files Browse the repository at this point in the history
  • Loading branch information
juice49 committed Feb 11, 2025
1 parent 460ed9a commit f27eacc
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 20 deletions.
20 changes: 13 additions & 7 deletions packages/sanity/src/core/studio/components/navbar/StudioNavbar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {
useMediaIndex,
} from '@sanity/ui'
import {useCallback, useContext, useEffect, useMemo, useRef, useState} from 'react'
import {useObservable} from 'react-rx'
import {NavbarContext} from 'sanity/_singletons'
import {type RouterState, useRouterState} from 'sanity/router'
import {styled} from 'styled-components'
Expand All @@ -22,6 +23,7 @@ import {useTranslation} from '../../../i18n'
import {ReleasesNav} from '../../../perspective/navbar/ReleasesNav'
import {usePerspective} from '../../../perspective/usePerspective'
import {getReleaseTone} from '../../../releases/util/getReleaseTone'
import {useRenderingContextStore} from '../../../store/_legacy/datastores'
import {useToolMenuComponent} from '../../studio-components-hooks'
import {useWorkspace} from '../../workspace'
import {ConfigIssuesButton} from './configIssues/ConfigIssuesButton'
Expand Down Expand Up @@ -74,6 +76,8 @@ export function StudioNavbar(props: Omit<NavbarProps, 'renderDefault'>) {
const routerState = useRouterState()
const mediaIndex = useMediaIndex()
const activeToolName = typeof routerState.tool === 'string' ? routerState.tool : undefined
const renderingContextStore = useRenderingContextStore()
const renderingContextCapabilities = useObservable(renderingContextStore.capabilities)

const newDocumentOptions = useNewDocumentOptions()
const {t} = useTranslation()
Expand Down Expand Up @@ -108,18 +112,20 @@ export function StudioNavbar(props: Omit<NavbarProps, 'renderDefault'>) {
const [drawerButtonEl, setDrawerButtonEl] = useState<HTMLButtonElement | null>(null)
const [searchOpenButtonEl, setSearchOpenButtonEl] = useState<HTMLButtonElement | null>(null)

const shouldRender = useMemo(
() => ({
const shouldRender = useMemo(() => {
const shouldRenderTools = mediaIndex >= 3

return {
resources: mediaIndex > 1,
collapsedPresenceMenu: mediaIndex <= 1,
loginStatus: mediaIndex > 1,
searchFullscreen: mediaIndex <= 1,
configIssues: mediaIndex > 1 && isDev,
newDocumentFullscreen: mediaIndex <= 1,
tools: mediaIndex >= 3,
}),
[mediaIndex],
)
tools: shouldRenderTools,
userMenu: shouldRenderTools && !renderingContextCapabilities?.globalUserMenu,
}
}, [mediaIndex, renderingContextCapabilities])

useEffect(() => {
onSearchFullscreenOpenChange(searchFullscreenOpen)
Expand Down Expand Up @@ -284,7 +290,7 @@ export function StudioNavbar(props: Omit<NavbarProps, 'renderDefault'>) {
<ReleasesNav />
{actionNodes}

{shouldRender.tools && (
{shouldRender.userMenu && (
<Box flex="none" marginLeft={1}>
<UserMenu />
</Box>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,14 @@ import {Box, Card, Flex, Layer, Stack, Text} from '@sanity/ui'
import {AnimatePresence, motion, type Transition, type Variants} from 'framer-motion'
import {type KeyboardEvent, memo, useCallback, useMemo} from 'react'
import TrapFocus from 'react-focus-lock'
import {useObservable} from 'react-rx'
import {styled} from 'styled-components'

import {Button} from '../../../../../ui-components'
import {UserAvatar} from '../../../../components'
import {type NavbarAction, type Tool} from '../../../../config'
import {useTranslation} from '../../../../i18n'
import {useRenderingContextStore} from '../../../../store/_legacy/datastores'
import {useColorSchemeSetValue} from '../../../colorScheme'
import {useToolMenuComponent} from '../../../studio-components-hooks'
import {useWorkspace} from '../../../workspace'
Expand Down Expand Up @@ -87,6 +89,8 @@ export const NavDrawer = memo(function NavDrawer(props: NavDrawerProps) {
const {auth, currentUser} = useWorkspace()
const workspaces = useWorkspaces()
const ToolMenu = useToolMenuComponent()
const renderingContextStore = useRenderingContextStore()
const renderingContextCapabilities = useObservable(renderingContextStore.capabilities)

const {t} = useTranslation()

Expand Down Expand Up @@ -161,20 +165,22 @@ export const NavDrawer = memo(function NavDrawer(props: NavDrawerProps) {
<Stack space={3} padding={3}>
<Flex align="center">
{/* Current user */}
<Flex flex={1} align="center" paddingRight={2}>
<Flex flex={1} align="center">
<UserAvatar size={1} user="me" />
<Box
flex={1}
marginLeft={3}
title={currentUser?.name || currentUser?.email}
>
<Text size={1} textOverflow="ellipsis" weight="medium">
{currentUser?.name || currentUser?.email}
</Text>
</Box>
{!renderingContextCapabilities?.globalUserMenu && (
<Flex flex={1} align="center" paddingRight={2}>
<Flex flex={1} align="center">
<UserAvatar size={1} user="me" />
<Box
flex={1}
marginLeft={3}
title={currentUser?.name || currentUser?.email}
>
<Text size={1} textOverflow="ellipsis" weight="medium">
{currentUser?.name || currentUser?.email}
</Text>
</Box>
</Flex>
</Flex>
</Flex>
)}

<Button
icon={CloseIcon}
Expand Down

0 comments on commit f27eacc

Please sign in to comment.