Hide/show header and footer without re-renders, take two (#1849)

* Remove callsites using the state value

* Remove unused code

* Change shell mode without re-renders

* Adjust "write your reply" for mode
This commit is contained in:
dan 2023-11-09 00:25:27 +00:00 committed by GitHub
parent bd531f2344
commit 82059b7ee1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
7 changed files with 63 additions and 55 deletions

View file

@ -25,7 +25,7 @@ export const FeedsTabBar = observer(function FeedsTabBarImpl(
const setDrawerOpen = useSetDrawerOpen()
const items = useHomeTabs(store.preferences.pinnedFeeds)
const brandBlue = useColorSchemeStyle(s.brandBlue, s.blue3)
const {minimalShellMode, headerMinimalShellTransform} = useMinimalShellMode()
const {headerMinimalShellTransform} = useMinimalShellMode()
const onPressAvi = React.useCallback(() => {
setDrawerOpen(true)
@ -38,7 +38,6 @@ export const FeedsTabBar = observer(function FeedsTabBarImpl(
pal.border,
styles.tabBar,
headerMinimalShellTransform,
minimalShellMode && styles.disabled,
]}>
<View style={[pal.view, styles.topBar]}>
<View style={[pal.view]}>
@ -110,7 +109,4 @@ const styles = StyleSheet.create({
title: {
fontSize: 21,
},
disabled: {
pointerEvents: 'none',
},
})

View file

@ -1,5 +1,6 @@
import React, {useMemo} from 'react'
import {InteractionManager, StyleSheet, View} from 'react-native'
import Animated from 'react-native-reanimated'
import {useFocusEffect} from '@react-navigation/native'
import {observer} from 'mobx-react-lite'
import {NativeStackScreenProps, CommonNavigatorParams} from 'lib/routes/types'
@ -15,15 +16,14 @@ import {useSafeAreaInsets} from 'react-native-safe-area-context'
import {clamp} from 'lodash'
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
import {logger} from '#/logger'
import {useMinimalShellMode, useSetMinimalShellMode} from '#/state/shell'
const SHELL_FOOTER_HEIGHT = 44
import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
import {useSetMinimalShellMode} from '#/state/shell'
type Props = NativeStackScreenProps<CommonNavigatorParams, 'PostThread'>
export const PostThreadScreen = withAuthRequired(
observer(function PostThreadScreenImpl({route}: Props) {
const store = useStores()
const minimalShellMode = useMinimalShellMode()
const {fabMinimalShellTransform} = useMinimalShellMode()
const setMinimalShellMode = useSetMinimalShellMode()
const safeAreaInsets = useSafeAreaInsets()
const {name, rkey} = route.params
@ -83,17 +83,17 @@ export const PostThreadScreen = withAuthRequired(
treeView={!!store.preferences.thread.lab_treeViewEnabled}
/>
</View>
{isMobile && !minimalShellMode && (
<View
{isMobile && (
<Animated.View
style={[
styles.prompt,
fabMinimalShellTransform,
{
bottom:
SHELL_FOOTER_HEIGHT + clamp(safeAreaInsets.bottom, 15, 30),
bottom: clamp(safeAreaInsets.bottom, 15, 30),
},
]}>
<ComposePrompt onPressCompose={onPressReply} />
</View>
</Animated.View>
)}
</View>
)

View file

@ -39,7 +39,7 @@ export const BottomBar = observer(function BottomBarImpl({
const {isAtHome, isAtSearch, isAtFeeds, isAtNotifications, isAtMyProfile} =
useNavigationTabState()
const {minimalShellMode, footerMinimalShellTransform} = useMinimalShellMode()
const {footerMinimalShellTransform} = useMinimalShellMode()
const {notifications} = store.me
const onPressTab = React.useCallback(
@ -85,7 +85,6 @@ export const BottomBar = observer(function BottomBarImpl({
pal.border,
{paddingBottom: clamp(safeAreaInsets.bottom, 15, 30)},
footerMinimalShellTransform,
minimalShellMode && styles.disabled,
]}>
<Btn
testID="bottomBarHomeBtn"

View file

@ -65,7 +65,4 @@ export const styles = StyleSheet.create({
borderWidth: 1,
borderRadius: 100,
},
disabled: {
pointerEvents: 'none',
},
})