Updates to use dynamic/responsive styles on web (#1351)
* Move most responsive queries to the hook * Fix invalid CSS value * Fixes to tablet render of post thread * Fix overflow issues on web * Fix search header on tablet * Fix QP margin in web composer * Fix: only apply double gutter once to flatlist (close #1368) * Fix styles on discover feeds header * Fix double discover links in multifeed
This commit is contained in:
parent
be8084ae10
commit
764c7cd569
63 changed files with 762 additions and 461 deletions
|
@ -19,14 +19,11 @@ import {useStores} from 'state/index'
|
|||
import {s} from 'lib/styles'
|
||||
import {useOnMainScroll} from 'lib/hooks/useOnMainScroll'
|
||||
import {useAnalytics} from 'lib/analytics/analytics'
|
||||
import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries'
|
||||
import {ComposeIcon2} from 'lib/icons'
|
||||
import {isDesktopWeb, isMobileWebMediaQuery, isWeb} from 'platform/detection'
|
||||
|
||||
const HEADER_OFFSET_MOBILE = 78
|
||||
const HEADER_OFFSET_DESKTOP = 50
|
||||
const HEADER_OFFSET = isDesktopWeb
|
||||
? HEADER_OFFSET_DESKTOP
|
||||
: HEADER_OFFSET_MOBILE
|
||||
const POLL_FREQ = 30e3 // 30sec
|
||||
|
||||
type Props = NativeStackScreenProps<HomeTabNavigatorParams, 'Home'>
|
||||
|
@ -158,10 +155,13 @@ const FeedPage = observer(
|
|||
renderEmptyState?: () => JSX.Element
|
||||
}) => {
|
||||
const store = useStores()
|
||||
const {isMobile} = useWebMediaQueries()
|
||||
const [onMainScroll, isScrolledDown, resetMainScroll] =
|
||||
useOnMainScroll(store)
|
||||
const {screen, track} = useAnalytics()
|
||||
const [headerOffset, setHeaderOffset] = React.useState(HEADER_OFFSET)
|
||||
const [headerOffset, setHeaderOffset] = React.useState(
|
||||
isMobile ? HEADER_OFFSET_MOBILE : HEADER_OFFSET_DESKTOP,
|
||||
)
|
||||
const scrollElRef = React.useRef<FlatList>(null)
|
||||
const {appState} = useAppState({
|
||||
onForeground: () => doPoll(true),
|
||||
|
@ -206,15 +206,9 @@ const FeedPage = observer(
|
|||
}, [isPageFocused, scrollToTop, feed])
|
||||
|
||||
// listens for resize events
|
||||
const listenForResize = React.useCallback(() => {
|
||||
// @ts-ignore we know window exists -prf
|
||||
const isMobileWeb = global.window.matchMedia(
|
||||
isMobileWebMediaQuery,
|
||||
)?.matches
|
||||
setHeaderOffset(
|
||||
isMobileWeb ? HEADER_OFFSET_MOBILE : HEADER_OFFSET_DESKTOP,
|
||||
)
|
||||
}, [])
|
||||
React.useEffect(() => {
|
||||
setHeaderOffset(isMobile ? HEADER_OFFSET_MOBILE : HEADER_OFFSET_DESKTOP)
|
||||
}, [isMobile])
|
||||
|
||||
// fires when page within screen is activated/deactivated
|
||||
// - check for latest
|
||||
|
@ -234,17 +228,10 @@ const FeedPage = observer(
|
|||
feed.update()
|
||||
}
|
||||
|
||||
if (isWeb) {
|
||||
window.addEventListener('resize', listenForResize)
|
||||
}
|
||||
|
||||
return () => {
|
||||
clearInterval(pollInterval)
|
||||
softResetSub.remove()
|
||||
feedCleanup()
|
||||
if (isWeb) {
|
||||
isWeb && window.removeEventListener('resize', listenForResize)
|
||||
}
|
||||
}
|
||||
}, [
|
||||
store,
|
||||
|
@ -254,7 +241,6 @@ const FeedPage = observer(
|
|||
feed,
|
||||
isPageFocused,
|
||||
isScreenFocused,
|
||||
listenForResize,
|
||||
])
|
||||
|
||||
const onPressCompose = React.useCallback(() => {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue