signal-desktop/ts/components/AddGroupMemberErrorDialog.tsx

64 lines
1.8 KiB
TypeScript
Raw Normal View History

2023-01-03 11:55:46 -08:00
// Copyright 2021 Signal Messenger, LLC
2021-03-11 15:29:31 -06:00
// SPDX-License-Identifier: AGPL-3.0-only
2022-11-17 16:45:19 -08:00
import type { ReactNode } from 'react';
import React from 'react';
2021-03-11 15:29:31 -06:00
import type { LocalizerType } from '../types/Util';
2021-03-11 15:29:31 -06:00
import { Alert } from './Alert';
import { missingCaseError } from '../util/missingCaseError';
export enum AddGroupMemberErrorDialogMode {
MaximumGroupSize,
RecommendedMaximumGroupSize,
}
type PropsDataType =
| {
mode: AddGroupMemberErrorDialogMode.MaximumGroupSize;
maximumNumberOfContacts: number;
}
| {
mode: AddGroupMemberErrorDialogMode.RecommendedMaximumGroupSize;
recommendedMaximumNumberOfContacts: number;
};
export type PropsType = {
2021-03-11 15:29:31 -06:00
i18n: LocalizerType;
onClose: () => void;
} & PropsDataType;
2022-11-17 16:45:19 -08:00
export function AddGroupMemberErrorDialog(props: PropsType): JSX.Element {
2022-03-22 13:45:34 -07:00
const { i18n, onClose } = props;
let title: string;
let body: ReactNode;
switch (props.mode) {
case AddGroupMemberErrorDialogMode.MaximumGroupSize: {
const { maximumNumberOfContacts } = props;
2023-03-29 17:03:25 -07:00
title = i18n('icu:chooseGroupMembers__maximum-group-size__title');
body = i18n('icu:chooseGroupMembers__maximum-group-size__body', {
2023-04-03 12:03:00 -07:00
max: maximumNumberOfContacts,
2023-03-27 16:37:39 -07:00
});
2022-03-22 13:45:34 -07:00
break;
2021-03-11 15:29:31 -06:00
}
2022-03-22 13:45:34 -07:00
case AddGroupMemberErrorDialogMode.RecommendedMaximumGroupSize: {
const { recommendedMaximumNumberOfContacts } = props;
2023-03-29 17:03:25 -07:00
title = i18n(
'icu:chooseGroupMembers__maximum-recommended-group-size__title'
);
body = i18n(
'icu:chooseGroupMembers__maximum-recommended-group-size__body',
{
2023-04-03 12:03:00 -07:00
max: recommendedMaximumNumberOfContacts,
2023-03-29 17:03:25 -07:00
}
);
2022-03-22 13:45:34 -07:00
break;
}
default:
throw missingCaseError(props);
}
2021-03-11 15:29:31 -06:00
2022-03-22 13:45:34 -07:00
return <Alert body={body} i18n={i18n} onClose={onClose} title={title} />;
2022-11-17 16:45:19 -08:00
}