mirror of
https://github.com/signalapp/Signal-Desktop.git
synced 2025-12-24 20:26:24 +00:00
Rename files
This commit is contained in:
101
ts/components/DeleteMessagesModal.dom.tsx
Normal file
101
ts/components/DeleteMessagesModal.dom.tsx
Normal file
@@ -0,0 +1,101 @@
|
||||
// Copyright 2023 Signal Messenger, LLC
|
||||
// SPDX-License-Identifier: AGPL-3.0-only
|
||||
|
||||
import React from 'react';
|
||||
import type { ActionSpec } from './ConfirmationDialog.dom.js';
|
||||
import { ConfirmationDialog } from './ConfirmationDialog.dom.js';
|
||||
import type { LocalizerType } from '../types/Util.std.js';
|
||||
import type { ShowToastAction } from '../state/ducks/toast.preload.js';
|
||||
import { ToastType } from '../types/Toast.dom.js';
|
||||
|
||||
export type DeleteMessagesModalProps = Readonly<{
|
||||
isMe: boolean;
|
||||
canDeleteForEveryone: boolean;
|
||||
i18n: LocalizerType;
|
||||
messageCount: number;
|
||||
onClose: () => void;
|
||||
onDeleteForMe: () => void;
|
||||
onDeleteForEveryone: () => void;
|
||||
showToast: ShowToastAction;
|
||||
}>;
|
||||
|
||||
const MAX_DELETE_FOR_EVERYONE = 30;
|
||||
|
||||
export default function DeleteMessagesModal({
|
||||
isMe,
|
||||
canDeleteForEveryone,
|
||||
i18n,
|
||||
messageCount,
|
||||
onClose,
|
||||
onDeleteForMe,
|
||||
onDeleteForEveryone,
|
||||
showToast,
|
||||
}: DeleteMessagesModalProps): JSX.Element {
|
||||
const actions: Array<ActionSpec> = [];
|
||||
|
||||
const syncNoteToSelfDelete = isMe;
|
||||
|
||||
let deleteForMeText = i18n('icu:DeleteMessagesModal--deleteForMe');
|
||||
if (syncNoteToSelfDelete) {
|
||||
deleteForMeText = i18n('icu:DeleteMessagesModal--noteToSelf--deleteSync');
|
||||
} else if (isMe) {
|
||||
deleteForMeText = i18n('icu:DeleteMessagesModal--deleteFromThisDevice');
|
||||
}
|
||||
|
||||
actions.push({
|
||||
action: onDeleteForMe,
|
||||
style: 'negative',
|
||||
text: deleteForMeText,
|
||||
});
|
||||
|
||||
if (canDeleteForEveryone && !syncNoteToSelfDelete) {
|
||||
const tooManyMessages = messageCount > MAX_DELETE_FOR_EVERYONE;
|
||||
actions.push({
|
||||
'aria-disabled': tooManyMessages,
|
||||
autoClose: !tooManyMessages,
|
||||
action: () => {
|
||||
if (tooManyMessages) {
|
||||
showToast({
|
||||
toastType: ToastType.TooManyMessagesToDeleteForEveryone,
|
||||
parameters: { count: MAX_DELETE_FOR_EVERYONE },
|
||||
});
|
||||
} else {
|
||||
onDeleteForEveryone();
|
||||
}
|
||||
},
|
||||
style: 'negative',
|
||||
text: isMe
|
||||
? i18n('icu:DeleteMessagesModal--deleteFromAllDevices')
|
||||
: i18n('icu:DeleteMessagesModal--deleteForEveryone'),
|
||||
});
|
||||
}
|
||||
|
||||
let descriptionText = i18n('icu:DeleteMessagesModal--description', {
|
||||
count: messageCount,
|
||||
});
|
||||
if (syncNoteToSelfDelete) {
|
||||
descriptionText = i18n(
|
||||
'icu:DeleteMessagesModal--description--noteToSelf--deleteSync',
|
||||
{ count: messageCount }
|
||||
);
|
||||
} else if (isMe) {
|
||||
descriptionText = i18n('icu:DeleteMessagesModal--description--noteToSelf', {
|
||||
count: messageCount,
|
||||
});
|
||||
}
|
||||
|
||||
return (
|
||||
<ConfirmationDialog
|
||||
actions={actions}
|
||||
dialogName="ConfirmDeleteForMeModal"
|
||||
i18n={i18n}
|
||||
onClose={onClose}
|
||||
title={i18n('icu:DeleteMessagesModal--title', {
|
||||
count: messageCount,
|
||||
})}
|
||||
moduleClassName="DeleteMessagesModal"
|
||||
>
|
||||
{descriptionText}
|
||||
</ConfirmationDialog>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user