diff --git a/src/components/middle/MessageListContent.tsx b/src/components/middle/MessageListContent.tsx index ba3d6a37c..ddf9091ab 100644 --- a/src/components/middle/MessageListContent.tsx +++ b/src/components/middle/MessageListContent.tsx @@ -93,6 +93,7 @@ const MessageListContent: FC = ({ } = useMessageObservers(type, containerRef, memoFirstUnreadIdRef, onPinnedIntersectionChange, chatId); const { + withHistoryTriggers, backwardsTriggerRef, forwardsTriggerRef, fabTriggerRef, @@ -273,16 +274,18 @@ const MessageListContent: FC = ({ return (
-
+ {withHistoryTriggers &&
} {dateGroups.flat()} {!isCurrentUserPremium && isViewportNewest && ( )} -
+ {withHistoryTriggers && ( +
+ )}
(null); - function toggleScrollTools() { + const toggleScrollTools = useLastCallback(() => { if (!isReady) return; - if (!messageIds || !messageIds.length) { + if (!messageIds?.length) { onFabToggle(false); onNotchToggle(false); return; @@ -81,7 +80,7 @@ export default function useScrollHooks( onFabToggle(isUnread ? !isAtBottom : !isNearBottom); onNotchToggle(!isAtBottom); - } + }); const { observe: observeIntersection, @@ -113,8 +112,10 @@ export default function useScrollHooks( } }); - useOnIntersect(backwardsTriggerRef, observeIntersection); - useOnIntersect(forwardsTriggerRef, observeIntersection); + const withHistoryTriggers = messageIds && messageIds.length > 1; + + useOnIntersect(backwardsTriggerRef, withHistoryTriggers ? observeIntersection : undefined); + useOnIntersect(forwardsTriggerRef, withHistoryTriggers ? observeIntersection : undefined); const { observe: observeIntersectionForFab, @@ -140,12 +141,11 @@ export default function useScrollHooks( useOnIntersect(fabTriggerRef, observeIntersectionForNotch); - const toggleScrollToolsRef = useStateRef(toggleScrollTools); useEffect(() => { if (isReady) { - toggleScrollToolsRef.current!(); + toggleScrollTools(); } - }, [isReady, toggleScrollToolsRef]); + }, [isReady, toggleScrollTools]); const freezeShortly = useLastCallback(() => { freezeForFab(); @@ -164,5 +164,10 @@ export default function useScrollHooks( const getContainerHeightDebounced = useDebouncedSignal(getContainerHeight, CONTAINER_HEIGHT_DEBOUNCE); useSignalEffect(freezeShortly, [freezeShortly, getContainerHeightDebounced]); - return { backwardsTriggerRef, forwardsTriggerRef, fabTriggerRef }; + return { + withHistoryTriggers, + backwardsTriggerRef, + forwardsTriggerRef, + fabTriggerRef, + }; }