···44import {useSafeAreaInsets} from 'react-native-safe-area-context'
55import {LinearGradient} from 'expo-linear-gradient'
6677+import {useMinimalShellMode} from '#/lib/hooks/useMinimalShellMode'
88+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
99+import {clamp} from '#/lib/numbers'
1010+import {gradients} from '#/lib/styles'
711import {isWeb} from '#/platform/detection'
88-import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
99-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
1010-import {clamp} from 'lib/numbers'
1111-import {gradients} from 'lib/styles'
1212import {useInteractionState} from '#/components/hooks/useInteractionState'
13131414export interface FABProps
+18-9
src/view/com/util/load-latest/LoadLatestBtn.tsx
···11import React from 'react'
22import {StyleSheet, TouchableOpacity, View} from 'react-native'
33-import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
43import Animated from 'react-native-reanimated'
44+import {useSafeAreaInsets} from 'react-native-safe-area-context'
55+import {FontAwesomeIcon} from '@fortawesome/react-native-fontawesome'
56import {useMediaQuery} from 'react-responsive'
66-import {usePalette} from 'lib/hooks/usePalette'
77-import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
88-import {colors} from 'lib/styles'
99-import {HITSLOP_20} from 'lib/constants'
1010-import {useMinimalShellMode} from 'lib/hooks/useMinimalShellMode'
77+88+import {HITSLOP_20} from '#/lib/constants'
99+import {useMinimalShellMode} from '#/lib/hooks/useMinimalShellMode'
1010+import {usePalette} from '#/lib/hooks/usePalette'
1111+import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries'
1212+import {clamp} from '#/lib/numbers'
1313+import {colors} from '#/lib/styles'
1414+import {isWeb} from '#/platform/detection'
1515+import {useSession} from '#/state/session'
1616+1117const AnimatedTouchableOpacity =
1218 Animated.createAnimatedComponent(TouchableOpacity)
1313-import {isWeb} from 'platform/detection'
1414-import {useSession} from 'state/session'
15191620export function LoadLatestBtn({
1721 onPress,
···2630 const {hasSession} = useSession()
2731 const {isDesktop, isTablet, isMobile, isTabletOrMobile} = useWebMediaQueries()
2832 const {fabMinimalShellTransform} = useMinimalShellMode()
3333+ const insets = useSafeAreaInsets()
29343035 // move button inline if it starts overlapping the left nav
3136 const isTallViewport = useMediaQuery({minHeight: 700})
···3439 // it on both tablet and mobile since we are showing the bottom bar (see createNativeStackNavigatorWithAuth)
3540 const showBottomBar = hasSession ? isMobile : isTabletOrMobile
36414242+ const bottomPosition = isTablet
4343+ ? {bottom: 50}
4444+ : {bottom: clamp(insets.bottom, 15, 60) + 15}
4545+3746 return (
3847 <AnimatedTouchableOpacity
3948 style={[
···4554 isTablet && styles.loadLatestInline,
4655 pal.borderDark,
4756 pal.view,
5757+ bottomPosition,
4858 showBottomBar && fabMinimalShellTransform,
4959 ]}
5060 onPress={onPress}
···6373 // @ts-ignore 'fixed' is web only -prf
6474 position: isWeb ? 'fixed' : 'absolute',
6575 left: 18,
6666- bottom: 44,
6776 borderWidth: 1,
6877 width: 52,
6978 height: 52,