From 56b0df97e4f1cc5c4070f3a56b1be2ee433b1fb1 Mon Sep 17 00:00:00 2001 From: Alexander Zinchuk Date: Sat, 15 Apr 2023 13:51:35 +0200 Subject: [PATCH] Message List: Another attempt to fix frozen scroll --- src/components/middle/MiddleColumn.tsx | 27 +++++++++++++------------- 1 file changed, 13 insertions(+), 14 deletions(-) diff --git a/src/components/middle/MiddleColumn.tsx b/src/components/middle/MiddleColumn.tsx index bd03a8b7b..11a5ba7c5 100644 --- a/src/components/middle/MiddleColumn.tsx +++ b/src/components/middle/MiddleColumn.tsx @@ -66,7 +66,6 @@ import usePrevious from '../../hooks/usePrevious'; import useForceUpdate from '../../hooks/useForceUpdate'; import useSyncEffect from '../../hooks/useSyncEffect'; import useAppLayout from '../../hooks/useAppLayout'; -import useTimeout from '../../hooks/useTimeout'; import usePinnedMessage from './hooks/usePinnedMessage'; import Transition from '../ui/Transition'; @@ -85,6 +84,7 @@ import GiftPremiumModal from '../main/premium/GiftPremiumModal.async'; import MessageLanguageModal from './MessageLanguageModal.async'; import './MiddleColumn.scss'; + import styles from './MiddleColumn.module.scss'; interface OwnProps { @@ -254,7 +254,7 @@ const MiddleColumn: FC = ({ prevTransitionKey !== undefined && prevTransitionKey < currentTransitionKey ? prevTransitionKey : undefined ); - const { isReady, handleOpenEnd, handleSlideStop } = useIsReady( + const { isReady, handleCssTransitionEnd, handleSlideTransitionStop } = useIsReady( !shouldSkipHistoryAnimations && animationLevel !== ANIMATION_LEVEL_MIN, currentTransitionKey, prevTransitionKey, @@ -434,7 +434,7 @@ const MiddleColumn: FC = ({
= ({ activeKey={currentTransitionKey} shouldCleanup cleanupExceptionKey={cleanupExceptionKey} - onStop={handleSlideStop} + onStop={handleSlideTransitionStop} > { + setIsReady(true); + }, LAYER_ANIMATION_DURATION_MS); } else { forceUpdate(); } @@ -752,25 +757,19 @@ function useIsReady( } }, [withAnimations]); - useTimeout(() => { - if (!isReady) { - setIsReady(true); - } - }, LAYER_ANIMATION_DURATION_MS); - - function handleOpenEnd(e: React.TransitionEvent) { + function handleCssTransitionEnd(e: React.TransitionEvent) { if (e.propertyName === 'transform' && e.target === e.currentTarget) { setIsReady(Boolean(chatId)); } } - function handleSlideStop() { + function handleSlideTransitionStop() { setIsReady(true); } return { isReady: isReady && !willSwitchMessageList, - handleOpenEnd: withAnimations ? handleOpenEnd : undefined, - handleSlideStop: withAnimations ? handleSlideStop : undefined, + handleCssTransitionEnd: withAnimations ? handleCssTransitionEnd : undefined, + handleSlideTransitionStop: withAnimations ? handleSlideTransitionStop : undefined, }; }