Backups: Handle groupV2 notifications

This commit is contained in:
Scott Nonnenberg 2024-04-30 06:24:21 -07:00 committed by GitHub
parent 4c4ab306eb
commit 5df8924197
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
27 changed files with 4563 additions and 301 deletions

View file

@ -11,9 +11,11 @@ import { missingCaseError } from '../util/missingCaseError';
export type DataPropsType = {
readonly areWeInvited: boolean;
readonly droppedMembers: Array<ConversationType>;
readonly droppedMembers?: Array<ConversationType>;
readonly droppedMemberCount: number;
readonly hasMigrated: boolean;
readonly invitedMembers: Array<ConversationType>;
readonly invitedMembers?: Array<ConversationType>;
readonly invitedMemberCount: number;
readonly getPreferredBadge: PreferredBadgeSelectorType;
readonly i18n: LocalizerType;
readonly theme: ThemeType;
@ -30,10 +32,12 @@ export const GroupV1MigrationDialog: React.FunctionComponent<PropsType> =
React.memo(function GroupV1MigrationDialogInner({
areWeInvited,
droppedMembers,
droppedMemberCount,
getPreferredBadge,
hasMigrated,
i18n,
invitedMembers,
invitedMemberCount,
theme,
onClose,
onMigrate,
@ -88,6 +92,7 @@ export const GroupV1MigrationDialog: React.FunctionComponent<PropsType> =
getPreferredBadge,
i18n,
members: invitedMembers,
count: invitedMemberCount,
hasMigrated,
kind: 'invited',
theme,
@ -96,6 +101,7 @@ export const GroupV1MigrationDialog: React.FunctionComponent<PropsType> =
getPreferredBadge,
i18n,
members: droppedMembers,
count: droppedMemberCount,
hasMigrated,
kind: 'dropped',
theme,
@ -110,21 +116,50 @@ function renderMembers({
getPreferredBadge,
i18n,
members,
count,
hasMigrated,
kind,
theme,
}: Readonly<{
getPreferredBadge: PreferredBadgeSelectorType;
i18n: LocalizerType;
members: Array<ConversationType>;
members?: Array<ConversationType>;
count: number;
hasMigrated: boolean;
kind: 'invited' | 'dropped';
theme: ThemeType;
}>): React.ReactNode {
if (!members.length) {
if (count === 0) {
return null;
}
if (!members) {
if (kind === 'invited') {
return (
<GroupDialog.Paragraph>
{i18n('icu:GroupV1--Migration--info--invited--count', { count })}
</GroupDialog.Paragraph>
);
}
if (hasMigrated) {
return (
<GroupDialog.Paragraph>
{i18n('icu:GroupV1--Migration--info--removed--after--count', {
count,
})}
</GroupDialog.Paragraph>
);
}
return (
<GroupDialog.Paragraph>
{i18n('icu:GroupV1--Migration--info--removed--before--count', {
count,
})}
</GroupDialog.Paragraph>
);
}
let text: string;
switch (kind) {
case 'invited':
@ -137,13 +172,13 @@ function renderMembers({
if (hasMigrated) {
text =
members.length === 1
? i18n('icu:GroupV1--Migration--info--removed--before--one')
: i18n('icu:GroupV1--Migration--info--removed--before--many');
? i18n('icu:GroupV1--Migration--info--removed--after--one')
: i18n('icu:GroupV1--Migration--info--removed--after--many');
} else {
text =
members.length === 1
? i18n('icu:GroupV1--Migration--info--removed--after--one')
: i18n('icu:GroupV1--Migration--info--removed--after--many');
? i18n('icu:GroupV1--Migration--info--removed--before--one')
: i18n('icu:GroupV1--Migration--info--removed--before--many');
}
break;
default: