···7788======
991010-Copyright 2023–2025 Bluesky Social PBC
1010+Copyright 2023–2026 Bluesky Social PBC
11111212Permission is hereby granted, free of charge, to any person obtaining a copy of
1313this software and associated documentation files (the “Software”), to deal in
···11import '#/logger/sentry/setup'
22-import '#/logger/bitdrift/setup'
32import '#/view/icons'
4354import React, {useEffect, useState} from 'react'
···6766import {Provider as PortalProvider} from '#/components/Portal'
6867import {Provider as VideoVolumeProvider} from '#/components/Post/Embed/VideoEmbed/VideoVolumeContext'
6968import {ToastOutlet} from '#/components/Toast'
7070-import {Provider as AgeAssuranceV2Provider} from '#/ageAssurance'
7171-import {prefetchAgeAssuranceConfig} from '#/ageAssurance'
6969+import {
7070+ prefetchAgeAssuranceConfig,
7171+ Provider as AgeAssuranceV2Provider,
7272+} from '#/ageAssurance'
7273import {IS_ANDROID, IS_IOS} from '#/env'
7374import {
7475 prefetchLiveEvents,
···11-import {type ImageRequireSource} from 'react-native'
22-33-// @ts-ignore we need to pretend -prf
44-export const DEF_AVATAR: ImageRequireSource = {uri: '/img/default-avatar.png'}
55-// @ts-ignore we need to pretend -prf
66-export const CLOUD_SPLASH: ImageRequireSource = {uri: '/img/splash.png'}
···88import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform'
99import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
1010import {clamp} from '#/lib/numbers'
1111-import {useGate} from '#/lib/statsig/statsig'
1211import {useSession} from '#/state/session'
1312import {atoms as a, useLayoutBreakpoints, useTheme, web} from '#/alf'
1413import {useInteractionState} from '#/components/hooks/useInteractionState'
···39384039 // move button inline if it starts overlapping the left nav
4140 const isTallViewport = useMediaQuery({minHeight: 700})
4242-4343- const gate = useGate()
4444- if (gate('remove_show_latest_button')) {
4545- return null
4646- }
47414842 // Adjust height of the fab if we have a session only on mobile web. If we don't have a session, we want to adjust
4943 // it on both tablet and mobile since we are showing the bottom bar (see createNativeStackNavigatorWithAuth)
+4-7
src/view/shell/bottom-bar/BottomBar.tsx
···1818import {usePalette} from '#/lib/hooks/usePalette'
1919import {clamp} from '#/lib/numbers'
2020import {getTabState, TabState} from '#/lib/routes/helpers'
2121-import {useGate} from '#/lib/statsig/statsig'
2221import {emitSoftReset} from '#/state/events'
2323-import {useHomeBadge} from '#/state/home-badge'
2422import {useUnreadMessageCount} from '#/state/queries/messages/list-conversations'
2523import {useUnreadNotifications} from '#/state/queries/notifications/unread'
2624import {useProfileQuery} from '#/state/queries/profile'
···4341 HomeOpen_Filled_Corner0_Rounded as HomeFilled,
4442 HomeOpen_Stoke2_Corner0_Rounded as Home,
4543} from '#/components/icons/HomeOpen'
4646-import {MagnifyingGlass_Filled_Stroke2_Corner0_Rounded as MagnifyingGlassFilled} from '#/components/icons/MagnifyingGlass'
4747-import {MagnifyingGlass_Stroke2_Corner0_Rounded as MagnifyingGlass} from '#/components/icons/MagnifyingGlass'
4444+import {
4545+ MagnifyingGlass_Filled_Stroke2_Corner0_Rounded as MagnifyingGlassFilled,
4646+ MagnifyingGlass_Stroke2_Corner0_Rounded as MagnifyingGlass,
4747+} from '#/components/icons/MagnifyingGlass'
4848import {
4949 Message_Stroke2_Corner0_Rounded as Message,
5050 Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
···7272 const dedupe = useDedupe()
7373 const accountSwitchControl = useDialogControl()
7474 const playHaptic = useHaptics()
7575- const hasHomeBadge = useHomeBadge()
7676- const gate = useGate()
7775 const hideBorder = useHideBottomBarBorder()
7876 const iconWidth = 28
7977···172170 />
173171 )
174172 }
175175- hasNew={hasHomeBadge && gate('remove_show_latest_button')}
176173 onPress={onPressHome}
177174 accessibilityRole="tab"
178175 accessibilityLabel={_(msg`Home`)}
+5-10
src/view/shell/bottom-bar/BottomBarWeb.tsx
···1010import {getCurrentRoute, isTab} from '#/lib/routes/helpers'
1111import {makeProfileLink} from '#/lib/routes/links'
1212import {type CommonNavigatorParams} from '#/lib/routes/types'
1313-import {useGate} from '#/lib/statsig/statsig'
1414-import {useHomeBadge} from '#/state/home-badge'
1513import {useUnreadMessageCount} from '#/state/queries/messages/list-conversations'
1614import {useUnreadNotifications} from '#/state/queries/notifications/unread'
1715import {useSession} from '#/state/session'
···3129 HomeOpen_Filled_Corner0_Rounded as HomeFilled,
3230 HomeOpen_Stoke2_Corner0_Rounded as Home,
3331} from '#/components/icons/HomeOpen'
3434-import {MagnifyingGlass_Filled_Stroke2_Corner0_Rounded as MagnifyingGlassFilled} from '#/components/icons/MagnifyingGlass'
3535-import {MagnifyingGlass_Stroke2_Corner0_Rounded as MagnifyingGlass} from '#/components/icons/MagnifyingGlass'
3232+import {
3333+ MagnifyingGlass_Filled_Stroke2_Corner0_Rounded as MagnifyingGlassFilled,
3434+ MagnifyingGlass_Stroke2_Corner0_Rounded as MagnifyingGlass,
3535+} from '#/components/icons/MagnifyingGlass'
3636import {
3737 Message_Stroke2_Corner0_Rounded as Message,
3838 Message_Stroke2_Corner0_Rounded_Filled as MessageFilled,
···57575858 const unreadMessageCount = useUnreadMessageCount()
5959 const notificationCountStr = useUnreadNotifications()
6060- const hasHomeBadge = useHomeBadge()
6161- const gate = useGate()
62606361 const showSignIn = React.useCallback(() => {
6462 closeAllActiveElements()
···8684 onLayout={event => footerHeight.set(event.nativeEvent.layout.height)}>
8785 {hasSession ? (
8886 <>
8989- <NavItem
9090- routeName="Home"
9191- href="/"
9292- hasNew={hasHomeBadge && gate('remove_show_latest_button')}>
8787+ <NavItem routeName="Home" href="/">
9388 {({isActive}) => {
9489 const Icon = isActive ? HomeFilled : Home
9590 return (