Skip to content

Commit

Permalink
Remove announcementGroup capability checks
Browse files Browse the repository at this point in the history
  • Loading branch information
josh-signal committed May 9, 2022
1 parent dcf0c52 commit 144d594
Show file tree
Hide file tree
Showing 5 changed files with 2 additions and 71 deletions.
4 changes: 0 additions & 4 deletions _locales/en/messages.json
Original file line number Diff line number Diff line change
Expand Up @@ -4066,10 +4066,6 @@
"message": "You cannot send messages to that group.",
"description": "Shown in toast when you attempt to forward a message to an announcement only group"
},
"GroupV2--add--missing-capability": {
"message": "These people cannot be added to the group until they upgrade Signal.",
"description": "Shown in a confirmation dialog when members who cannot view announcement only group cannot be added"
},
"GroupV2--cannot-start-group-call": {
"message": "Only admins of the group can start a call.",
"description": "Shown in toast when a non-admin starts a group call in an announcements only group"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ import { action } from '@storybook/addon-actions';
import { times } from 'lodash';

import { setupI18n } from '../../../util/setupI18n';
import { CapabilityError } from '../../../types/errors';
import enMessages from '../../../../_locales/en/messages.json';
import type { Props } from './ConversationDetails';
import { ConversationDetails } from './ConversationDetails';
Expand Down Expand Up @@ -189,16 +188,6 @@ story.add('Group Links On', () => {
return <ConversationDetails {...props} isAdmin />;
});

story.add('Group add with missing capabilities', () => (
<ConversationDetails
{...createProps()}
canEditGroupInfo
addMembers={async () => {
throw new CapabilityError('stories');
}}
/>
));

story.add('1:1', () => (
<ConversationDetails {...createProps()} isGroup={false} />
));
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ import { getMutedUntilText } from '../../../util/getMutedUntilText';
import type { LocalizerType, ThemeType } from '../../../types/Util';
import type { MediaItemType } from '../../../types/MediaItem';
import type { BadgeType } from '../../../badges/types';
import { CapabilityError } from '../../../types/errors';
import { missingCaseError } from '../../../util/missingCaseError';

import { DisappearingTimerSelect } from '../../DisappearingTimerSelect';
Expand Down Expand Up @@ -166,8 +165,6 @@ export const ConversationDetails: React.ComponentType<Props> = ({
useState<RequestState>(RequestState.Inactive);
const [addGroupMembersRequestState, setAddGroupMembersRequestState] =
useState<RequestState>(RequestState.Inactive);
const [membersMissingCapability, setMembersMissingCapability] =
useState(false);

if (conversation === undefined) {
throw new Error('ConversationDetails rendered without a conversation');
Expand Down Expand Up @@ -260,12 +257,7 @@ export const ConversationDetails: React.ComponentType<Props> = ({
setModalState(ModalState.NothingOpen);
setAddGroupMembersRequestState(RequestState.Inactive);
} catch (err) {
if (err instanceof CapabilityError) {
setMembersMissingCapability(true);
setAddGroupMembersRequestState(RequestState.InactiveWithError);
} else {
setAddGroupMembersRequestState(RequestState.InactiveWithError);
}
setAddGroupMembersRequestState(RequestState.InactiveWithError);
}
}}
onClose={() => {
Expand Down Expand Up @@ -317,16 +309,6 @@ export const ConversationDetails: React.ComponentType<Props> = ({

return (
<div className="conversation-details-panel">
{membersMissingCapability && (
<ConfirmationDialog
cancelText={i18n('Confirmation--confirm')}
i18n={i18n}
onClose={() => setMembersMissingCapability(false)}
>
{i18n('GroupV2--add--missing-capability')}
</ConfirmationDialog>
)}

<ConversationDetailsHeader
areWeASubscriber={areWeASubscriber}
badges={badges}
Expand Down
36 changes: 1 addition & 35 deletions ts/models/conversations.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ import { CallMode } from '../types/Calling';
import * as EmbeddedContact from '../types/EmbeddedContact';
import * as Conversation from '../types/Conversation';
import * as Stickers from '../types/Stickers';
import { CapabilityError } from '../types/errors';
import type {
ContactWithHydratedAvatar,
GroupV1InfoType,
Expand Down Expand Up @@ -616,14 +615,6 @@ export class ConversationModel extends window.Backbone
);
}

if (
this.get('announcementsOnly') &&
!toRequest.get('capabilities')?.announcementGroup
) {
log.warn(`addPendingApprovalRequest/${idLog}: member needs to upgrade.`);
return undefined;
}

// We need the user's profileKeyCredential, which requires a roundtrip with the
// server, and most definitely their profileKey. A getProfiles() call will
// ensure that we have as much as we can get with the data we have.
Expand Down Expand Up @@ -668,16 +659,6 @@ export class ConversationModel extends window.Backbone
);
}

if (
this.get('announcementsOnly') &&
!toRequest.get('capabilities')?.announcementGroup
) {
log.warn(
`addMember/${idLog}: ${toRequest.idForLogging()} needs to upgrade.`
);
return undefined;
}

const uuid = toRequest.get('uuid');
if (!uuid) {
throw new Error(
Expand Down Expand Up @@ -2301,18 +2282,6 @@ export class ConversationModel extends window.Backbone
}

async addMembersV2(conversationIds: ReadonlyArray<string>): Promise<void> {
if (this.get('announcementsOnly')) {
const isEveryMemberCapable = conversationIds.every(conversationId => {
const model = window.ConversationController.get(conversationId);
return Boolean(model?.get('capabilities')?.announcementGroup);
});
if (!isEveryMemberCapable) {
throw new CapabilityError(
'addMembersV2: some or all members need to upgrade.'
);
}
}

await this.modifyGroupV2({
name: 'addMembersV2',
createGroupChange: () =>
Expand Down Expand Up @@ -3603,10 +3572,7 @@ export class ConversationModel extends window.Backbone
return false;
}

const members = getConversationMembers(this.attributes);
return members.every(conversationAttrs =>
Boolean(conversationAttrs.capabilities?.announcementGroup)
);
return true;
}

getMemberIds(): Array<string> {
Expand Down
2 changes: 0 additions & 2 deletions ts/types/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,4 @@ export function toLogFormat(error: unknown): string {
return String(error);
}

export class CapabilityError extends Error {}

export class ProfileDecryptError extends Error {}

0 comments on commit 144d594

Please sign in to comment.