diff --git a/ts/components/ToastDeleteForEveryoneFailed.stories.tsx b/ts/components/ToastDeleteForEveryoneFailed.stories.tsx
deleted file mode 100644
index 150750458c..0000000000
--- a/ts/components/ToastDeleteForEveryoneFailed.stories.tsx
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2021 Signal Messenger, LLC
-// SPDX-License-Identifier: AGPL-3.0-only
-
-import React from 'react';
-import { action } from '@storybook/addon-actions';
-import { ToastDeleteForEveryoneFailed } from './ToastDeleteForEveryoneFailed';
-
-import { setupI18n } from '../util/setupI18n';
-import enMessages from '../../_locales/en/messages.json';
-
-const i18n = setupI18n('en', enMessages);
-
-const defaultProps = {
- i18n,
- onClose: action('onClose'),
-};
-
-export default {
- title: 'Components/ToastDeleteForEveryoneFailed',
-};
-
-export const _ToastDeleteForEveryoneFailed = (): JSX.Element => (
-
-);
-
-_ToastDeleteForEveryoneFailed.story = {
- name: 'ToastDeleteForEveryoneFailed',
-};
diff --git a/ts/components/ToastDeleteForEveryoneFailed.tsx b/ts/components/ToastDeleteForEveryoneFailed.tsx
deleted file mode 100644
index 3696d16c7a..0000000000
--- a/ts/components/ToastDeleteForEveryoneFailed.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2021 Signal Messenger, LLC
-// SPDX-License-Identifier: AGPL-3.0-only
-
-import React from 'react';
-import type { LocalizerType } from '../types/Util';
-import { Toast } from './Toast';
-
-type PropsType = {
- i18n: LocalizerType;
- onClose: () => unknown;
-};
-
-export function ToastDeleteForEveryoneFailed({
- i18n,
- onClose,
-}: PropsType): JSX.Element {
- return {i18n('deleteForEveryoneFailed')};
-}
diff --git a/ts/components/ToastManager.tsx b/ts/components/ToastManager.tsx
index e4676e7d81..339ad003eb 100644
--- a/ts/components/ToastManager.tsx
+++ b/ts/components/ToastManager.tsx
@@ -143,5 +143,9 @@ export function ToastManager({
);
}
+ if (toastType === ToastType.DeleteForEveryoneFailed) {
+ return {i18n('deleteForEveryoneFailed')};
+ }
+
throw missingCaseError(toastType);
}
diff --git a/ts/components/conversation/ConversationHeader.stories.tsx b/ts/components/conversation/ConversationHeader.stories.tsx
index 2847029e57..9b700b2252 100644
--- a/ts/components/conversation/ConversationHeader.stories.tsx
+++ b/ts/components/conversation/ConversationHeader.stories.tsx
@@ -38,8 +38,8 @@ const commonProps = {
i18n,
onShowConversationDetails: action('onShowConversationDetails'),
- onSetDisappearingMessages: action('onSetDisappearingMessages'),
- onDeleteMessages: action('onDeleteMessages'),
+ setDisappearingMessages: action('setDisappearingMessages'),
+ destroyMessages: action('destroyMessages'),
onSearchInConversation: action('onSearchInConversation'),
onSetMuteNotifications: action('onSetMuteNotifications'),
onOutgoingAudioCallInConversation: action(
diff --git a/ts/components/conversation/ConversationHeader.tsx b/ts/components/conversation/ConversationHeader.tsx
index db9fc0f516..95f6bd092e 100644
--- a/ts/components/conversation/ConversationHeader.tsx
+++ b/ts/components/conversation/ConversationHeader.tsx
@@ -28,6 +28,7 @@ import * as expirationTimer from '../../util/expirationTimer';
import { missingCaseError } from '../../util/missingCaseError';
import { isInSystemContacts } from '../../util/isInSystemContacts';
import { isConversationMuted } from '../../util/isConversationMuted';
+import { ConfirmationDialog } from '../ConfirmationDialog';
import { DurationInSeconds } from '../../util/durations';
import {
useStartCallShortcuts,
@@ -80,8 +81,7 @@ export type PropsDataType = {
export type PropsActionsType = {
onSetMuteNotifications: (seconds: number) => void;
- onSetDisappearingMessages: (seconds: DurationInSeconds) => void;
- onDeleteMessages: () => void;
+ destroyMessages: (conversationId: string) => void;
onSearchInConversation: () => void;
onOutgoingAudioCallInConversation: () => void;
onOutgoingVideoCallInConversation: () => void;
@@ -95,6 +95,10 @@ export type PropsActionsType = {
onArchive: () => void;
onMarkUnread: () => void;
onMoveToInbox: () => void;
+ setDisappearingMessages: (
+ conversationId: string,
+ seconds: DurationInSeconds
+ ) => void;
viewUserStories: ViewUserStoriesActionCreatorType;
};
@@ -112,6 +116,7 @@ enum ModalState {
}
type StateType = {
+ hasDeleteMessagesConfirmation: boolean;
isNarrow: boolean;
modalState: ModalState;
};
@@ -130,7 +135,11 @@ export class ConversationHeader extends React.Component {
public constructor(props: PropsType) {
super(props);
- this.state = { isNarrow: false, modalState: ModalState.NothingOpen };
+ this.state = {
+ hasDeleteMessagesConfirmation: false,
+ isNarrow: false,
+ modalState: ModalState.NothingOpen,
+ };
this.menuTriggerRef = React.createRef();
this.headerRef = React.createRef();
@@ -329,6 +338,7 @@ export class ConversationHeader extends React.Component {
expireTimer,
groupVersion,
i18n,
+ id,
isArchived,
isMissingMandatoryProfileSharing,
isPinned,
@@ -337,15 +347,14 @@ export class ConversationHeader extends React.Component {
markedUnread,
muteExpiresAt,
onArchive,
- onDeleteMessages,
onMarkUnread,
onMoveToInbox,
- onSetDisappearingMessages,
onSetMuteNotifications,
onSetPin,
onShowAllMedia,
onShowConversationDetails,
onShowGroupMembers,
+ setDisappearingMessages,
type,
} = this.props;
@@ -425,7 +434,7 @@ export class ConversationHeader extends React.Component {
modalState: ModalState.CustomDisappearingTimeout,
});
} else {
- onSetDisappearingMessages(seconds);
+ setDisappearingMessages(id, seconds);
}
};
@@ -487,7 +496,11 @@ export class ConversationHeader extends React.Component {
) : (
)}
-
+
{isPinned ? (