Fix Message Context Menu: Deleting message breaks history navigation (#1338)

This commit is contained in:
Alexander Zinchuk 2021-07-28 17:09:56 +03:00
parent 7728a4e703
commit e2c15f40d1

View File

@ -1,4 +1,6 @@
import React, { FC, useCallback, memo } from '../../lib/teact/teact'; import React, {
FC, useCallback, memo, useEffect,
} from '../../lib/teact/teact';
import { withGlobal } from '../../lib/teact/teactn'; import { withGlobal } from '../../lib/teact/teactn';
import { GlobalActions } from '../../global/types'; import { GlobalActions } from '../../global/types';
@ -14,6 +16,7 @@ import {
import renderText from '../common/helpers/renderText'; import renderText from '../common/helpers/renderText';
import { pick } from '../../util/iteratees'; import { pick } from '../../util/iteratees';
import useLang from '../../hooks/useLang'; import useLang from '../../hooks/useLang';
import usePrevious from '../../hooks/usePrevious';
import Modal from '../ui/Modal'; import Modal from '../ui/Modal';
import Button from '../ui/Button'; import Button from '../ui/Button';
@ -47,11 +50,12 @@ const DeleteSelectedMessageModal: FC<OwnProps & StateProps & DispatchProps> = ({
deleteScheduledMessages, deleteScheduledMessages,
exitMessageSelectMode, exitMessageSelectMode,
}) => { }) => {
const prevIsOpen = usePrevious(isOpen);
const handleDeleteMessageForAll = useCallback(() => { const handleDeleteMessageForAll = useCallback(() => {
deleteMessages({ messageIds: selectedMessageIds, shouldDeleteForAll: true });
exitMessageSelectMode();
onClose(); onClose();
}, [deleteMessages, exitMessageSelectMode, selectedMessageIds, onClose]); deleteMessages({ messageIds: selectedMessageIds, shouldDeleteForAll: true });
}, [deleteMessages, selectedMessageIds, onClose]);
const handleDeleteMessageForSelf = useCallback(() => { const handleDeleteMessageForSelf = useCallback(() => {
if (isSchedule) { if (isSchedule) {
@ -60,14 +64,18 @@ const DeleteSelectedMessageModal: FC<OwnProps & StateProps & DispatchProps> = ({
deleteMessages({ messageIds: selectedMessageIds, shouldDeleteForAll: false }); deleteMessages({ messageIds: selectedMessageIds, shouldDeleteForAll: false });
} }
exitMessageSelectMode();
onClose(); onClose();
}, [ }, [isSchedule, onClose, deleteScheduledMessages, selectedMessageIds, deleteMessages]);
isSchedule, exitMessageSelectMode, onClose, deleteScheduledMessages, selectedMessageIds, deleteMessages,
]);
const lang = useLang(); const lang = useLang();
// Returning `undefined` from FC instead of `<Modal>` doesn't trigger useHistoryBack
useEffect(() => {
if (!isOpen && prevIsOpen) {
exitMessageSelectMode();
}
}, [exitMessageSelectMode, isOpen, prevIsOpen]);
if (!selectedMessageIds) { if (!selectedMessageIds) {
return undefined; return undefined;
} }