// Copyright 2021 Signal Messenger, LLC // SPDX-License-Identifier: AGPL-3.0-only import React, { FunctionComponent, ReactNode } from 'react'; import { LocalizerType } from '../types/Util'; import { Alert } from './Alert'; import { Intl } from './Intl'; import { ContactName } from './conversation/ContactName'; import { missingCaseError } from '../util/missingCaseError'; export enum AddGroupMemberErrorDialogMode { CantAddContact, MaximumGroupSize, RecommendedMaximumGroupSize, } type PropsDataType = | { mode: AddGroupMemberErrorDialogMode.CantAddContact; contact: { name?: string; phoneNumber?: string; profileName?: string; title: string; }; } | { mode: AddGroupMemberErrorDialogMode.MaximumGroupSize; maximumNumberOfContacts: number; } | { mode: AddGroupMemberErrorDialogMode.RecommendedMaximumGroupSize; recommendedMaximumNumberOfContacts: number; }; type PropsType = { i18n: LocalizerType; onClose: () => void; } & PropsDataType; export const AddGroupMemberErrorDialog: FunctionComponent = props => { const { i18n, onClose } = props; let title: string; let body: ReactNode; switch (props.mode) { case AddGroupMemberErrorDialogMode.CantAddContact: { const { contact } = props; title = i18n('chooseGroupMembers__cant-add-member__title'); body = ( , ]} /> ); break; } case AddGroupMemberErrorDialogMode.MaximumGroupSize: { const { maximumNumberOfContacts } = props; title = i18n('chooseGroupMembers__maximum-group-size__title'); body = i18n('chooseGroupMembers__maximum-group-size__body', [ maximumNumberOfContacts.toString(), ]); break; } case AddGroupMemberErrorDialogMode.RecommendedMaximumGroupSize: { const { recommendedMaximumNumberOfContacts } = props; title = i18n('chooseGroupMembers__maximum-recommended-group-size__title'); body = i18n('chooseGroupMembers__maximum-recommended-group-size__body', [ recommendedMaximumNumberOfContacts.toString(), ]); break; } default: throw missingCaseError(props); } return ; };