Don't show chat notification if viewer is age gated (#10042)

This commit is contained in:
DS Boyce
2026-03-12 11:21:57 -07:00
committed by GitHub
parent 7b5d5a4f76
commit 9c9970f680
4 changed files with 27 additions and 11 deletions
+4 -2
View File
@@ -2,8 +2,10 @@ import {createContext, useCallback, useContext, useEffect, useMemo} from 'react'
import {useGetAndRegisterPushToken} from '#/lib/notifications/notifications' import {useGetAndRegisterPushToken} from '#/lib/notifications/notifications'
import {Provider as RedirectOverlayProvider} from '#/ageAssurance/components/RedirectOverlay' import {Provider as RedirectOverlayProvider} from '#/ageAssurance/components/RedirectOverlay'
import {AgeAssuranceDataProvider} from '#/ageAssurance/data' import {
import {useAgeAssuranceDataContext} from '#/ageAssurance/data' AgeAssuranceDataProvider,
useAgeAssuranceDataContext,
} from '#/ageAssurance/data'
import {logger} from '#/ageAssurance/logger' import {logger} from '#/ageAssurance/logger'
import { import {
useAgeAssuranceState, useAgeAssuranceState,
+7 -3
View File
@@ -49,6 +49,7 @@ import {
Message_Stroke2_Corner0_Rounded_Filled as MessageFilled, Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
} from '#/components/icons/Message' } from '#/components/icons/Message'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAgeAssurance} from '#/ageAssurance'
import {useActorStatus} from '#/features/liveNow' import {useActorStatus} from '#/features/liveNow'
import {useDemoMode} from '#/storage/hooks/demo-mode' import {useDemoMode} from '#/storage/hooks/demo-mode'
import {styles} from './BottomBarStyles' import {styles} from './BottomBarStyles'
@@ -65,6 +66,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
useNavigationTabState() useNavigationTabState()
const numUnreadNotifications = useUnreadNotifications() const numUnreadNotifications = useUnreadNotifications()
const numUnreadMessages = useUnreadMessageCount() const numUnreadMessages = useUnreadMessageCount()
const aa = useAgeAssurance()
const footerMinimalShellTransform = useMinimalShellFooterTransform() const footerMinimalShellTransform = useMinimalShellFooterTransform()
const {data: profile} = useProfileQuery({did: currentAccount?.did}) const {data: profile} = useProfileQuery({did: currentAccount?.did})
const {requestSwitchToAccount} = useLoggedOutViewControls() const {requestSwitchToAccount} = useLoggedOutViewControls()
@@ -213,13 +215,15 @@ export function BottomBar({navigation}: BottomTabBarProps) {
) )
} }
onPress={onPressMessages} onPress={onPressMessages}
notificationCount={numUnreadMessages.numUnread} notificationCount={
hasNew={numUnreadMessages.hasNew} aa.flags.chatDisabled ? undefined : numUnreadMessages.numUnread
}
hasNew={aa.flags.chatDisabled ? false : numUnreadMessages.hasNew}
accessible={true} accessible={true}
accessibilityRole="tab" accessibilityRole="tab"
accessibilityLabel={_(msg`Chat`)} accessibilityLabel={_(msg`Chat`)}
accessibilityHint={ accessibilityHint={
numUnreadMessages.count > 0 !aa.flags.chatDisabled && numUnreadMessages.count > 0
? _( ? _(
plural(numUnreadMessages.numUnread ?? 0, { plural(numUnreadMessages.numUnread ?? 0, {
one: '# unread item', one: '# unread item',
+10 -2
View File
@@ -43,6 +43,7 @@ import {
Message_Stroke2_Corner0_Rounded_Filled as MessageFilled, Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
} from '#/components/icons/Message' } from '#/components/icons/Message'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAgeAssurance} from '#/ageAssurance'
import {styles} from './BottomBarStyles' import {styles} from './BottomBarStyles'
export function BottomBarWeb() { export function BottomBarWeb() {
@@ -60,6 +61,7 @@ export function BottomBarWeb() {
const unreadMessageCount = useUnreadMessageCount() const unreadMessageCount = useUnreadMessageCount()
const notificationCountStr = useUnreadNotifications() const notificationCountStr = useUnreadNotifications()
const aa = useAgeAssurance()
const showSignIn = useCallback(() => { const showSignIn = useCallback(() => {
closeAllActiveElements() closeAllActiveElements()
@@ -124,8 +126,14 @@ export function BottomBarWeb() {
<NavItem <NavItem
routeName="Messages" routeName="Messages"
href="/messages" href="/messages"
notificationCount={unreadMessageCount.numUnread} notificationCount={
hasNew={unreadMessageCount.hasNew}> aa.flags.chatDisabled
? undefined
: unreadMessageCount.numUnread
}
hasNew={
aa.flags.chatDisabled ? false : unreadMessageCount.hasNew
}>
{({isActive}) => { {({isActive}) => {
const Icon = isActive ? MessageFilled : Message const Icon = isActive ? MessageFilled : Message
return ( return (
+6 -4
View File
@@ -74,6 +74,7 @@ import {CENTER_COLUMN_OFFSET} from '#/components/Layout'
import * as Menu from '#/components/Menu' import * as Menu from '#/components/Menu'
import * as Prompt from '#/components/Prompt' import * as Prompt from '#/components/Prompt'
import {Text} from '#/components/Typography' import {Text} from '#/components/Typography'
import {useAgeAssurance} from '#/ageAssurance'
import {useActorStatus} from '#/features/liveNow' import {useActorStatus} from '#/features/liveNow'
import {PlatformInfo} from '../../../../modules/expo-bluesky-swiss-army' import {PlatformInfo} from '../../../../modules/expo-bluesky-swiss-army'
import {router} from '../../../routes' import {router} from '../../../routes'
@@ -349,7 +350,7 @@ function SwitchMenuItem({
'@', '@',
)}`, )}`,
)} )}
onPress={() => onPressSwitchAccount(account, 'SwitchAccount')}> onPress={() => void onPressSwitchAccount(account, 'SwitchAccount')}>
<View> <View>
<UserAvatar <UserAvatar
avatar={profile?.avatar} avatar={profile?.avatar}
@@ -572,7 +573,7 @@ function ComposeBtn() {
<Button <Button
disabled={isFetchingHandle} disabled={isFetchingHandle}
label={_(msg`Compose new post`)} label={_(msg`Compose new post`)}
onPress={onPressCompose} onPress={() => void onPressCompose()}
size="large" size="large"
variant="solid" variant="solid"
color="primary" color="primary"
@@ -590,12 +591,13 @@ function ChatNavItem() {
const pal = usePalette('default') const pal = usePalette('default')
const {_} = useLingui() const {_} = useLingui()
const numUnreadMessages = useUnreadMessageCount() const numUnreadMessages = useUnreadMessageCount()
const aa = useAgeAssurance()
return ( return (
<NavItem <NavItem
href="/messages" href="/messages"
count={numUnreadMessages.numUnread} count={aa.flags.chatDisabled ? undefined : numUnreadMessages.numUnread}
hasNew={numUnreadMessages.hasNew} hasNew={aa.flags.chatDisabled ? false : numUnreadMessages.hasNew}
icon={ icon={
<Message style={pal.text} aria-hidden={true} width={NAV_ICON_WIDTH} /> <Message style={pal.text} aria-hidden={true} width={NAV_ICON_WIDTH} />
} }