Message: Fix focus on mount (#6708)
This commit is contained in:
parent
68fd459756
commit
f65b568cfb
@ -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,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user