// Copyright 2020-2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import * as React from 'react'; import type { PropsType as ContactNameProps } from './ContactName'; import { ContactName } from './ContactName'; import { ConfirmationDialog } from '../ConfirmationDialog'; import { Intl } from '../Intl'; import type { LocalizerType } from '../../types/Util'; export enum MessageRequestState { blocking, deleting, unblocking, default, } export type Props = { i18n: LocalizerType; conversationType: 'group' | 'direct'; isBlocked?: boolean; onBlock(): unknown; onBlockAndReportSpam(): unknown; onUnblock(): unknown; onDelete(): unknown; state: MessageRequestState; onChangeState(state: MessageRequestState): unknown; } & Omit; export const MessageRequestActionsConfirmation = ({ conversationType, i18n, onBlock, onBlockAndReportSpam, onChangeState, onDelete, onUnblock, state, title, }: Props): JSX.Element | null => { if (state === MessageRequestState.blocking) { return ( { onChangeState(MessageRequestState.default); }} title={ ]} /> } actions={[ ...(conversationType === 'direct' ? [ { text: i18n('MessageRequests--block-and-report-spam'), action: onBlockAndReportSpam, style: 'negative' as const, }, ] : []), { text: i18n('MessageRequests--block'), action: onBlock, style: 'negative', }, ]} > {i18n(`MessageRequests--block-${conversationType}-confirm-body`)} ); } if (state === MessageRequestState.unblocking) { return ( { onChangeState(MessageRequestState.default); }} title={ ]} /> } actions={[ { text: i18n('MessageRequests--unblock'), action: onUnblock, style: 'affirmative', }, ]} > {i18n(`MessageRequests--unblock-${conversationType}-confirm-body`)} ); } if (state === MessageRequestState.deleting) { return ( { onChangeState(MessageRequestState.default); }} title={ ]} /> } actions={[ { text: i18n(`MessageRequests--delete-${conversationType}`), action: onDelete, style: 'negative', }, ]} > {i18n(`MessageRequests--delete-${conversationType}-confirm-body`)} ); } return null; };