Message: Fix editing while receiving message update (#1755)

This commit is contained in:
Alexander Zinchuk 2022-03-09 01:03:03 +01:00
parent 73432c957b
commit 30c2d3835b
2 changed files with 8 additions and 7 deletions

View File

@ -1,4 +1,4 @@
import { useCallback, useEffect } from '../../../../lib/teact/teact';
import { useCallback } from '../../../../lib/teact/teact';
import { getDispatch } from '../../../../lib/teact/teactn';
import { ApiMessage } from '../../../../api/types';
@ -8,6 +8,7 @@ import parseMessageInput from '../../../../util/parseMessageInput';
import focusEditableElement from '../../../../util/focusEditableElement';
import { hasMessageMedia } from '../../../../modules/helpers';
import { getTextWithEntitiesAsHtml } from '../../../common/helpers/renderTextWithEntities';
import useOnChange from '../../../../hooks/useOnChange';
const useEditing = (
htmlRef: { current: string },
@ -18,21 +19,21 @@ const useEditing = (
) => {
const { editMessage } = getDispatch();
// TODO useOnChange
// Handle editing message
useEffect(() => {
useOnChange(([prevEditedMessage]) => {
if (!editedMessage) {
setHtml('');
return;
}
if (prevEditedMessage?.id === editedMessage.id) {
return;
}
setHtml(getTextWithEntitiesAsHtml(editedMessage.content.text));
requestAnimationFrame(() => {
const messageInput = document.getElementById(EDITABLE_INPUT_ID)!;
focusEditableElement(messageInput, true);
});
}, [editedMessage, setHtml]);
}, [editedMessage, setHtml] as const);
const handleEditComplete = useCallback(() => {
const { text, entities } = parseMessageInput(htmlRef.current!);

View File

@ -1,6 +1,6 @@
import usePrevious from './usePrevious';
const useOnChange = <T extends any[]>(cb: (args: T | []) => void, dependencies: T) => {
const useOnChange = <T extends readonly any[]>(cb: (args: T | readonly []) => void, dependencies: T) => {
const prevDeps = usePrevious<T>(dependencies);
if (!prevDeps || dependencies.some((d, i) => d !== prevDeps[i])) {
cb(prevDeps || []);