From d1360376c3eb1535f432251a2b98ed1d66655ddc Mon Sep 17 00:00:00 2001 From: Samuel Newman <10959775+mozzius@users.noreply.github.com> Date: Fri, 26 Jul 2024 14:00:06 +0100 Subject: [PATCH] disable perf optimisation to allow overflow --- .../Messages/Conversation/MessagesList.tsx | 3 --- src/view/com/posts/FeedItem.tsx | 1 - src/view/com/util/List.tsx | 2 -- src/view/com/util/List.web.tsx | 22 ++++-------------- .../util/post-embeds/ActiveVideoContext.tsx | 10 +------- .../com/util/post-embeds/VideoEmbed.web.tsx | 9 ++++---- .../com/util/post-embeds/VideoEmbedInner.tsx | 1 + .../util/post-embeds/VideoEmbedInner.web.tsx | 23 ++++++++++--------- 8 files changed, 23 insertions(+), 48 deletions(-) diff --git a/src/screens/Messages/Conversation/MessagesList.tsx b/src/screens/Messages/Conversation/MessagesList.tsx index 11b951e99d..c0e78e9789 100644 --- a/src/screens/Messages/Conversation/MessagesList.tsx +++ b/src/screens/Messages/Conversation/MessagesList.tsx @@ -387,9 +387,6 @@ export function MessagesList({ renderItem={renderItem} keyExtractor={keyExtractor} disableFullWindowScroll={true} - // Prevents wrong position in Firefox when sending a message - // as well as scroll getting stuck on Chome when scrolling upwards. - disableContainStyle={true} disableVirtualization={true} style={animatedListStyle} // The extra two items account for the header and the footer components diff --git a/src/view/com/posts/FeedItem.tsx b/src/view/com/posts/FeedItem.tsx index 9ddc54a989..f811dda90f 100644 --- a/src/view/com/posts/FeedItem.tsx +++ b/src/view/com/posts/FeedItem.tsx @@ -509,7 +509,6 @@ const styles = StyleSheet.create({ paddingRight: 15, // @ts-ignore web only -prf cursor: 'pointer', - overflow: 'hidden', }, replyLine: { width: 2, diff --git a/src/view/com/util/List.tsx b/src/view/com/util/List.tsx index e1a10e4741..9d9b1d8026 100644 --- a/src/view/com/util/List.tsx +++ b/src/view/com/util/List.tsx @@ -28,8 +28,6 @@ export type ListProps = Omit< // Web only prop to contain the scroll to the container rather than the window disableFullWindowScroll?: boolean sideBorders?: boolean - // Web only prop to disable a perf optimization (which would otherwise be on). - disableContainStyle?: boolean } export type ListRef = React.MutableRefObject diff --git a/src/view/com/util/List.web.tsx b/src/view/com/util/List.web.tsx index 12d223db03..ba33e5df8c 100644 --- a/src/view/com/util/List.web.tsx +++ b/src/view/com/util/List.web.tsx @@ -4,11 +4,10 @@ import {ReanimatedScrollEvent} from 'react-native-reanimated/lib/typescript/rean import {batchedUpdates} from '#/lib/batchedUpdates' import {useNonReactiveCallback} from '#/lib/hooks/useNonReactiveCallback' +import {usePalette} from '#/lib/hooks/usePalette' +import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' import {useScrollHandlers} from '#/lib/ScrollContext' -import {isSafari} from 'lib/browser' -import {usePalette} from 'lib/hooks/usePalette' -import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' -import {addStyle} from 'lib/styles' +import {addStyle} from '#/lib/styles' export type ListMethods = any // TODO: Better types. export type ListProps = Omit< @@ -26,8 +25,6 @@ export type ListProps = Omit< // Web only prop to contain the scroll to the container rather than the window disableFullWindowScroll?: boolean sideBorders?: boolean - // Web only prop to disable a perf optimization (which would otherwise be on). - disableContainStyle?: boolean } export type ListRef = React.MutableRefObject // TODO: Better types. @@ -60,7 +57,6 @@ function ListImpl( extraData, style, sideBorders = true, - disableContainStyle, ...props }: ListProps, ref: React.Ref, @@ -363,7 +359,6 @@ function ListImpl( renderItem={renderItem} extraData={extraData} onItemSeen={onItemSeen} - disableContainStyle={disableContainStyle} /> ) })} @@ -413,7 +408,6 @@ let Row = function RowImpl({ renderItem, extraData: _unused, onItemSeen, - disableContainStyle, }: { item: ItemT index: number @@ -423,7 +417,6 @@ let Row = function RowImpl({ | ((data: {index: number; item: any; separators: any}) => React.ReactNode) extraData: any onItemSeen: ((item: any) => void) | undefined - disableContainStyle?: boolean }): React.ReactNode { const rowRef = React.useRef(null) const intersectionTimeout = React.useRef(undefined) @@ -472,11 +465,8 @@ let Row = function RowImpl({ return null } - const shouldDisableContainStyle = disableContainStyle || isSafari return ( - + {renderItem({item, index, separators: null as any})} ) @@ -547,10 +537,6 @@ const styles = StyleSheet.create({ marginLeft: 'auto', marginRight: 'auto', }, - contain: { - // @ts-ignore web only - contain: 'layout paint', - }, minHeightViewport: { // @ts-ignore web only minHeight: '100vh', diff --git a/src/view/com/util/post-embeds/ActiveVideoContext.tsx b/src/view/com/util/post-embeds/ActiveVideoContext.tsx index 2112e7c21b..ec1619a347 100644 --- a/src/view/com/util/post-embeds/ActiveVideoContext.tsx +++ b/src/view/com/util/post-embeds/ActiveVideoContext.tsx @@ -32,14 +32,6 @@ export function ActiveVideoProvider({children}: {children: React.ReactNode}) { sendViewPosition: (viewId: string, y: number) => { if (isNative) return - // console.log( - // 'sendViewPosition', - // viewId, - // y, - // activeViewId, - // activeViewLocationRef.current, - // ) - if (viewId === activeViewId) { activeViewLocationRef.current = y } else { @@ -57,7 +49,7 @@ export function ActiveVideoProvider({children}: {children: React.ReactNode}) { } function distanceToIdealPosition(yPos: number) { - return Math.abs(yPos - windowHeight / 3) + return Math.abs(yPos - windowHeight / 2.5) } function withinViewport(yPos: number) { diff --git a/src/view/com/util/post-embeds/VideoEmbed.web.tsx b/src/view/com/util/post-embeds/VideoEmbed.web.tsx index e347d0da37..41c8f36be0 100644 --- a/src/view/com/util/post-embeds/VideoEmbed.web.tsx +++ b/src/view/com/util/post-embeds/VideoEmbed.web.tsx @@ -12,9 +12,10 @@ import {VideoEmbedInner} from './VideoEmbedInner' export function VideoEmbed({source}: {source: string}) { const t = useTheme() const ref = useRef(null) - const {active, setActive, sendPosition} = useActiveVideoView({ - source, - }) + const {active, setActive, sendPosition, currentActiveView} = + useActiveVideoView({ + source, + }) const [onScreen, setOnScreen] = useState(false) const {_} = useLingui() @@ -24,7 +25,6 @@ export function VideoEmbed({source}: {source: string}) { if (!ref.current) return const observer = new IntersectionObserver( entries => { - console.log('OUTER') const entry = entries[0] if (!entry) return setOnScreen(entry.isIntersecting) @@ -54,6 +54,7 @@ export function VideoEmbed({source}: {source: string}) { setActive={setActive} sendPosition={sendPosition} onScreen={onScreen} + isAnyViewActive={currentActiveView !== null} /> ) : (