Move headerMode out of global shell state (#10527)

This commit is contained in:
Samuel Newman
2026-05-18 18:53:12 +01:00
committed by GitHub
parent e40c9bcf98
commit 0dc062294f
7 changed files with 106 additions and 90 deletions
+12 -7
View File
@@ -21,7 +21,6 @@ import {type FeedDescriptor, type FeedParams} from '#/state/queries/post-feed'
import {usePreferencesQuery} from '#/state/queries/preferences'
import {type UsePreferencesQueryResponse} from '#/state/queries/preferences/types'
import {useSession} from '#/state/session'
import {useMinimalShellMode} from '#/state/shell'
import {useLoggedOutViewControls} from '#/state/shell/logged-out'
import {useSelectedFeed, useSetSelectedFeed} from '#/state/shell/selected-feed'
import {FeedPage} from '#/view/com/feeds/FeedPage'
@@ -34,6 +33,10 @@ import {
import {CustomFeedEmptyState} from '#/view/com/posts/CustomFeedEmptyState'
import {FollowingEmptyState} from '#/view/com/posts/FollowingEmptyState'
import {FollowingEndOfFeed} from '#/view/com/posts/FollowingEndOfFeed'
import {
HomeHeaderModeProvider,
useHomeHeaderMode,
} from '#/view/com/util/MainScrollProvider'
import {NoFeedsPinned} from '#/screens/Home/NoFeedsPinned'
import * as Layout from '#/components/Layout'
import {useAnalytics} from '#/analytics'
@@ -81,11 +84,13 @@ export function HomeScreen(props: Props) {
if (preferences && pinnedFeedInfos && !isPinnedFeedsLoading) {
return (
<Layout.Screen testID="HomeScreen" noInsetTop={IS_LIQUID_GLASS}>
<HomeScreenReady
{...props}
preferences={preferences}
pinnedFeedInfos={pinnedFeedInfos}
/>
<HomeHeaderModeProvider>
<HomeScreenReady
{...props}
preferences={preferences}
pinnedFeedInfos={pinnedFeedInfos}
/>
</HomeHeaderModeProvider>
</Layout.Screen>
)
} else {
@@ -139,7 +144,7 @@ function HomeScreenReady({
}, [selectedIndex])
const {hasSession} = useSession()
const {headerMode} = useMinimalShellMode()
const headerMode = useHomeHeaderMode()
const showHeader = useCallback(() => {
'worklet'
headerMode.set(() => withSpring(0, {overshootClamping: true}))
+12 -15
View File
@@ -27,7 +27,6 @@ import {TabBar} from '#/view/com/pager/TabBar'
import {FAB} from '#/view/com/util/fab/FAB'
import {type ListMethods} from '#/view/com/util/List'
import {LoadLatestBtn} from '#/view/com/util/load-latest/LoadLatestBtn'
import {MainScrollProvider} from '#/view/com/util/MainScrollProvider'
import {atoms as a, useTheme, web} from '#/alf'
import {Admonition} from '#/components/Admonition'
import {ButtonIcon} from '#/components/Button'
@@ -254,20 +253,18 @@ function NotificationsTab({
return (
<>
<MainScrollProvider>
<NotificationFeed
enabled={isFocusedAndActive}
filter={filter}
refreshNotifications={() => checkUnread({invalidate: true})}
onScrolledDownChange={setIsScrolledDown}
scrollElRef={scrollElRef}
ListHeaderComponent={
filter === 'mentions' ? (
<DisabledNotificationsWarning active={isFocusedAndActive} />
) : null
}
/>
</MainScrollProvider>
<NotificationFeed
enabled={isFocusedAndActive}
filter={filter}
refreshNotifications={() => checkUnread({invalidate: true})}
onScrolledDownChange={setIsScrolledDown}
scrollElRef={scrollElRef}
ListHeaderComponent={
filter === 'mentions' ? (
<DisabledNotificationsWarning active={isFocusedAndActive} />
) : null
}
/>
{(isScrolledDown || hasNew) && (
<LoadLatestBtn
onPress={onPressLoadLatest}