GroupV2: Show better strings for 'added but previously invited' cases

This commit is contained in:
Scott Nonnenberg 2020-09-28 10:22:57 -07:00 committed by Josh Perez
parent b91107efbc
commit 6b3d5c19b3
4 changed files with 171 additions and 12 deletions

View file

@ -3059,7 +3059,40 @@
"message": "An admin changed who can edit group membership to \"All members.\"", "message": "An admin changed who can edit group membership to \"All members.\"",
"description": "Shown in timeline or conversation preview when v2 group changes" "description": "Shown in timeline or conversation preview when v2 group changes"
}, },
"GroupV2--member-add--invited--you": {
"message": "You added invited member $inviteeName$.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"inviteeName": {
"content": "$1",
"example": "Alice"
}
}
},
"GroupV2--member-add--invited--other": {
"message": "$memberName$ added invited member $inviteeName$.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"memberName": {
"content": "$1",
"example": "Alice"
},
"inviteeName": {
"content": "$2",
"example": "Bob"
}
}
},
"GroupV2--member-add--invited--unknown": {
"message": "A member added invited member $inviteeName$.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"inviteeName": {
"content": "$1",
"example": "Alice"
}
}
},
"GroupV2--member-add--from-invite--other": { "GroupV2--member-add--from-invite--other": {
"message": "$inviteeName$ accepted an invitation to the group from $inviterName$.", "message": "$inviteeName$ accepted an invitation to the group from $inviterName$.",
"description": "Shown in timeline or conversation preview when v2 group changes", "description": "Shown in timeline or conversation preview when v2 group changes",
@ -3074,6 +3107,16 @@
} }
} }
}, },
"GroupV2--member-add--from-invite--other-no-from": {
"message": "$inviteeName$ accepted an invitation to the group.",
"description": "Shown in timeline or conversation preview when v2 group changes",
"placeholders": {
"inviteeName": {
"content": "$1",
"example": "Alice"
}
}
},
"GroupV2--member-add--from-invite--you": { "GroupV2--member-add--from-invite--you": {
"message": "You accepted an invitation to the group from $inviterName$.", "message": "You accepted an invitation to the group from $inviterName$.",
"description": "Shown in timeline or conversation preview when v2 group changes", "description": "Shown in timeline or conversation preview when v2 group changes",
@ -3084,6 +3127,10 @@
} }
} }
}, },
"GroupV2--member-add--from-invite--you-no-from": {
"message": "You accepted an invitation to the group.",
"description": "Shown in timeline or conversation preview when v2 group changes"
},
"GroupV2--member-add--from-invite--from-you": { "GroupV2--member-add--from-invite--from-you": {
"message": "$inviteeName$ accepted your invitation to the group.", "message": "$inviteeName$ accepted your invitation to the group.",
"description": "Shown in timeline or conversation preview when v2 group changes", "description": "Shown in timeline or conversation preview when v2 group changes",

View file

@ -368,9 +368,60 @@ storiesOf('Components/Conversation/GroupV2Change', module)
</> </>
); );
}) })
.add('Member Add - from invite', () => { .add('Member Add - add invited', () => {
return ( return (
<> <>
{/* the strings where someone added you - shown like a normal add */}
{renderChange({
from: CONTACT_A,
details: [
{
type: 'member-add-from-invite',
conversationId: OUR_ID,
inviter: CONTACT_B,
},
],
})}
{renderChange({
details: [
{
type: 'member-add-from-invite',
conversationId: OUR_ID,
inviter: CONTACT_A,
},
],
})}
{/* the rest of the 'someone added someone else' checks */}
{renderChange({
from: OUR_ID,
details: [
{
type: 'member-add-from-invite',
conversationId: CONTACT_A,
inviter: CONTACT_B,
},
],
})}
{renderChange({
from: CONTACT_A,
details: [
{
type: 'member-add-from-invite',
conversationId: CONTACT_B,
inviter: CONTACT_C,
},
],
})}
{renderChange({
details: [
{
type: 'member-add-from-invite',
conversationId: CONTACT_A,
inviter: CONTACT_B,
},
],
})}
{/* in all of these we know the user has accepted the invite */}
{renderChange({ {renderChange({
from: OUR_ID, from: OUR_ID,
details: [ details: [
@ -382,7 +433,16 @@ storiesOf('Components/Conversation/GroupV2Change', module)
], ],
})} })}
{renderChange({ {renderChange({
from: CONTACT_B, from: OUR_ID,
details: [
{
type: 'member-add-from-invite',
conversationId: OUR_ID,
},
],
})}
{renderChange({
from: CONTACT_A,
details: [ details: [
{ {
type: 'member-add-from-invite', type: 'member-add-from-invite',
@ -392,6 +452,7 @@ storiesOf('Components/Conversation/GroupV2Change', module)
], ],
})} })}
{renderChange({ {renderChange({
from: CONTACT_A,
details: [ details: [
{ {
type: 'member-add-from-invite', type: 'member-add-from-invite',
@ -400,6 +461,15 @@ storiesOf('Components/Conversation/GroupV2Change', module)
}, },
], ],
})} })}
{renderChange({
from: CONTACT_A,
details: [
{
type: 'member-add-from-invite',
conversationId: CONTACT_A,
},
],
})}
</> </>
); );
}) })

View file

@ -189,20 +189,62 @@ export function renderChangeDetail(
const weAreJoiner = conversationId === ourConversationId; const weAreJoiner = conversationId === ourConversationId;
const weAreInviter = Boolean(inviter && inviter === ourConversationId); const weAreInviter = Boolean(inviter && inviter === ourConversationId);
if (!from || from !== conversationId) {
if (weAreJoiner) {
// They can't be the same, no fromYou check here
if (from) {
return renderString('GroupV2--member-add--you--other', i18n, [
renderContact(from),
]);
}
return renderString('GroupV2--member-add--you--unknown', i18n);
}
if (fromYou) {
return renderString('GroupV2--member-add--invited--you', i18n, {
inviteeName: renderContact(conversationId),
});
}
if (from) {
return renderString('GroupV2--member-add--invited--other', i18n, {
memberName: renderContact(from),
inviteeName: renderContact(conversationId),
});
}
return renderString('GroupV2--member-add--invited--unknown', i18n, {
inviteeName: renderContact(conversationId),
});
}
if (weAreJoiner) { if (weAreJoiner) {
return renderString('GroupV2--member-add--from-invite--you', i18n, [ if (inviter) {
renderContact(inviter), return renderString('GroupV2--member-add--from-invite--you', i18n, [
]); renderContact(inviter),
]);
}
return renderString(
'GroupV2--member-add--from-invite--you-no-from',
i18n
);
} }
if (weAreInviter) { if (weAreInviter) {
return renderString('GroupV2--member-add--from-invite--from-you', i18n, [ return renderString('GroupV2--member-add--from-invite--from-you', i18n, [
renderContact(conversationId), renderContact(conversationId),
]); ]);
} }
return renderString('GroupV2--member-add--from-invite--other', i18n, { if (inviter) {
inviteeName: renderContact(conversationId), return renderString('GroupV2--member-add--from-invite--other', i18n, {
inviterName: renderContact(inviter), inviteeName: renderContact(conversationId),
}); inviterName: renderContact(inviter),
});
}
return renderString(
'GroupV2--member-add--from-invite--other-no-from',
i18n,
{
inviteeName: renderContact(conversationId),
}
);
} else if (detail.type === 'member-remove') { } else if (detail.type === 'member-remove') {
const { conversationId } = detail; const { conversationId } = detail;
const weAreLeaver = conversationId === ourConversationId; const weAreLeaver = conversationId === ourConversationId;

View file

@ -78,7 +78,7 @@ export type GroupV2MemberAddChangeType = {
export type GroupV2MemberAddFromInviteChangeType = { export type GroupV2MemberAddFromInviteChangeType = {
type: 'member-add-from-invite'; type: 'member-add-from-invite';
conversationId: string; conversationId: string;
inviter: string; inviter?: string;
}; };
export type GroupV2MemberPrivilegeChangeType = { export type GroupV2MemberPrivilegeChangeType = {
type: 'member-privilege'; type: 'member-privilege';
@ -946,7 +946,7 @@ function extractDiffs({
if (!oldMember) { if (!oldMember) {
const pendingMember = oldPendingMemberLookup[conversationId]; const pendingMember = oldPendingMemberLookup[conversationId];
if (pendingMember && pendingMember.addedByUserId) { if (pendingMember) {
details.push({ details.push({
type: 'member-add-from-invite', type: 'member-add-from-invite',
conversationId, conversationId,