Add shortcuts for forward/delete selected/targeted messages

This commit is contained in:
Jamie Kyle 2023-03-24 14:16:48 -07:00 committed by GitHub
parent dd16be13b0
commit d0f17a1398
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
9 changed files with 106 additions and 35 deletions

View file

@ -163,7 +163,7 @@ const MESSAGE_SHORTCUTS: Array<ShortcutType> = [
keys: [['commandOrCtrl', 'S']],
},
{
description: 'Keyboard--delete-message',
description: 'Keyboard--delete-messages',
keys: [['commandOrCtrl', 'shift', 'D']],
},
];

View file

@ -6,6 +6,9 @@ import { useEscapeHandling } from '../../hooks/useEscapeHandling';
export type PropsType = {
conversationId: string;
hasOpenModal: boolean;
isSelectMode: boolean;
onExitSelectMode: () => void;
processAttachments: (options: {
conversationId: string;
files: ReadonlyArray<File>;
@ -14,21 +17,18 @@ export type PropsType = {
renderConversationHeader: () => JSX.Element;
renderTimeline: () => JSX.Element;
renderPanel: () => JSX.Element | undefined;
isSelectMode: boolean;
isForwardModalOpen: boolean;
onExitSelectMode: () => void;
};
export function ConversationView({
conversationId,
hasOpenModal,
isSelectMode,
onExitSelectMode,
processAttachments,
renderCompositionArea,
renderConversationHeader,
renderTimeline,
renderPanel,
isSelectMode,
isForwardModalOpen,
onExitSelectMode,
}: PropsType): JSX.Element {
const onDrop = React.useCallback(
(event: React.DragEvent<HTMLDivElement>) => {
@ -88,7 +88,7 @@ export function ConversationView({
);
useEscapeHandling(
isSelectMode && !isForwardModalOpen ? onExitSelectMode : undefined
isSelectMode && !hasOpenModal ? onExitSelectMode : undefined
);
return (

View file

@ -103,11 +103,11 @@ export default function SelectModeActions({
onDeleteMessages();
},
style: 'negative',
text: i18n('icu:SelectModeActions__confirmDelete--confirm'),
text: i18n('icu:ConfirmDeleteForMeModal--confirm'),
},
]}
dialogName="TimelineMessage/deleteMessage"
title={i18n('icu:SelectModeActions__confirmDelete--title', {
dialogName="ConfirmDeleteForMeModal"
title={i18n('icu:ConfirmDeleteForMeModal--title', {
count: selectedMessageIds.length,
})}
i18n={i18n}
@ -115,7 +115,7 @@ export default function SelectModeActions({
setConfirmDelete(false);
}}
>
{i18n('icu:SelectModeActions__confirmDelete--description', {
{i18n('icu:ConfirmDeleteForMeModal--description', {
count: selectedMessageIds.length,
})}
</ConfirmationDialog>

View file

@ -369,14 +369,19 @@ export function TimelineMessage(props: Props): JSX.Element {
messageIds: [id],
}),
style: 'negative',
text: i18n('delete'),
text: i18n('icu:ConfirmDeleteForMeModal--confirm'),
},
]}
dialogName="TimelineMessage/deleteMessage"
dialogName="ConfirmDeleteForMeModal"
i18n={i18n}
onClose={() => setHasDeleteConfirmation(false)}
title={i18n('icu:ConfirmDeleteForMeModal--title', {
count: 1,
})}
>
{i18n('deleteWarning')}
{i18n('icu:ConfirmDeleteForMeModal--description', {
count: 1,
})}
</ConfirmationDialog>
)}