Message: Fix focus on mount (#6708)

This commit is contained in:
zubiden 2026-02-22 23:43:42 +01:00 committed by Alexander Zinchuk
parent 68fd459756
commit f65b568cfb

View File

@ -1,12 +1,12 @@
import type { ElementRef } from '../../../../lib/teact/teact'; import type { ElementRef } from '../../../../lib/teact/teact';
import { useLayoutEffect, useRef } from '../../../../lib/teact/teact'; import { useLayoutEffect } from '../../../../lib/teact/teact';
import { addExtraClass } from '../../../../lib/teact/teact-dom'; import { addExtraClass } from '../../../../lib/teact/teact-dom';
import type { FocusDirection, ScrollTargetPosition } from '../../../../types'; import type { FocusDirection, ScrollTargetPosition } from '../../../../types';
import { SCROLL_MAX_DISTANCE } from '../../../../config'; import { SCROLL_MAX_DISTANCE } from '../../../../config';
import { import {
requestForcedReflow, requestMeasure, requestMutation, requestMeasure, requestMutation,
} from '../../../../lib/fasterdom/fasterdom'; } from '../../../../lib/fasterdom/fasterdom';
import animateScroll from '../../../../util/animateScroll'; import animateScroll from '../../../../util/animateScroll';
import { REM } from '../../../common/helpers/mediaDimensions'; import { REM } from '../../../common/helpers/mediaDimensions';
@ -36,12 +36,7 @@ export default function useFocusMessageListElement({
isQuote?: boolean; isQuote?: boolean;
scrollTargetPosition?: ScrollTargetPosition; scrollTargetPosition?: ScrollTargetPosition;
}) { }) {
const isRelocatedRef = useRef(!isJustAdded);
useLayoutEffect(() => { useLayoutEffect(() => {
const isRelocated = isRelocatedRef.current;
isRelocatedRef.current = false;
if (isFocused && elementRef.current) { if (isFocused && elementRef.current) {
const messagesContainer = elementRef.current.closest<HTMLDivElement>('.MessageList'); const messagesContainer = elementRef.current.closest<HTMLDivElement>('.MessageList');
if (!messagesContainer) return; if (!messagesContainer) return;
@ -77,14 +72,9 @@ export default function useFocusMessageListElement({
return result; return result;
}; };
if (isRelocated) { requestMeasure(() => {
// We need this to override scroll setting from Message List layout effect requestMutation(exec()!);
requestForcedReflow(exec); });
} else {
requestMeasure(() => {
requestMutation(exec()!);
});
}
} }
}, [ }, [
elementRef, isFocused, focusDirection, noFocusHighlight, isResizingContainer, isQuote, scrollTargetPosition, elementRef, isFocused, focusDirection, noFocusHighlight, isResizingContainer, isQuote, scrollTargetPosition,