Page MenuHomePhabricator

D9827.id33079.diff
No OneTemporary

D9827.id33079.diff

diff --git a/keyserver/src/creators/role-creator.js b/keyserver/src/creators/role-creator.js
--- a/keyserver/src/creators/role-creator.js
+++ b/keyserver/src/creators/role-creator.js
@@ -125,7 +125,12 @@
});
const threadInfo = threadInfos[community];
- if (threadInfo.type === threadTypes.COMMUNITY_ROOT) {
+ const isCommunityRoot = threadInfo.type === threadTypes.COMMUNITY_ROOT;
+ const paramsHaveVociedInAnnouncementChannelsPermission =
+ configuredPermissions.includes(
+ threadPermissions.VOICED_IN_ANNOUNCEMENT_CHANNELS,
+ );
+ if (isCommunityRoot || paramsHaveVociedInAnnouncementChannelsPermission) {
rolePermissions.push(threadPermissions.VOICED);
}
diff --git a/keyserver/src/fetchers/thread-fetchers.js b/keyserver/src/fetchers/thread-fetchers.js
--- a/keyserver/src/fetchers/thread-fetchers.js
+++ b/keyserver/src/fetchers/thread-fetchers.js
@@ -253,6 +253,9 @@
const codeVersionBelow221 = !hasMinCodeVersion(viewer.platformDetails, {
native: 221,
});
+ const codeVersionBelow283 = !hasMinCodeVersion(viewer.platformDetails, {
+ native: 283,
+ });
const threadInfos = {};
for (const threadID in serverResult.threadInfos) {
@@ -264,6 +267,7 @@
filterThreadEditAvatarPermission: codeVersionBelow213,
excludePinInfo: codeVersionBelow209,
filterManageInviteLinksPermission: codeVersionBelow221,
+ filterVoicedInAnnouncementChannelsPermission: codeVersionBelow283,
},
);
if (threadInfo) {
diff --git a/lib/permissions/minimally-encoded-thread-permissions-test-data.js b/lib/permissions/minimally-encoded-thread-permissions-test-data.js
--- a/lib/permissions/minimally-encoded-thread-permissions-test-data.js
+++ b/lib/permissions/minimally-encoded-thread-permissions-test-data.js
@@ -93,6 +93,10 @@
value: true,
source: '1',
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
isSender: false,
},
@@ -176,6 +180,10 @@
value: false,
source: null,
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
isSender: true,
},
@@ -281,6 +289,10 @@
value: false,
source: null,
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
subscription: {
home: true,
@@ -451,6 +463,10 @@
source: null,
value: false,
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
isSender: false,
},
@@ -542,6 +558,10 @@
source: null,
value: false,
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
isSender: true,
},
@@ -655,6 +675,10 @@
source: null,
value: false,
},
+ voiced_in_announcement_channels: {
+ value: false,
+ source: null,
+ },
},
subscription: {
home: true,
diff --git a/lib/permissions/minimally-encoded-thread-permissions.js b/lib/permissions/minimally-encoded-thread-permissions.js
--- a/lib/permissions/minimally-encoded-thread-permissions.js
+++ b/lib/permissions/minimally-encoded-thread-permissions.js
@@ -57,6 +57,7 @@
edit_thread_avatar: BigInt(18),
manage_pins: BigInt(19),
manage_invite_links: BigInt(20),
+ voiced_in_announcement_channels: BigInt(21),
});
// `minimallyEncodedThreadPermissions` is used to map each permission
diff --git a/lib/permissions/minimally-encoded-thread-permissions.test.js b/lib/permissions/minimally-encoded-thread-permissions.test.js
--- a/lib/permissions/minimally-encoded-thread-permissions.test.js
+++ b/lib/permissions/minimally-encoded-thread-permissions.test.js
@@ -44,6 +44,7 @@
edit_thread_avatar: { value: false, source: null },
manage_pins: { value: false, source: null },
manage_invite_links: { value: false, source: null },
+ voiced_in_announcement_channels: { value: false, source: null },
};
describe('minimallyEncodedThreadPermissions', () => {
@@ -95,6 +96,7 @@
edit_thread_avatar: { value: false, source: null },
manage_pins: { value: false, source: null },
manage_invite_links: { value: false, source: null },
+ voiced_in_announcement_channels: { value: false, source: null },
};
it('should decode ThreadPermissionsInfo from bitmask', () => {
diff --git a/lib/permissions/thread-permissions.js b/lib/permissions/thread-permissions.js
--- a/lib/permissions/thread-permissions.js
+++ b/lib/permissions/thread-permissions.js
@@ -263,6 +263,7 @@
[threadPermissions.CHANGE_ROLE]: true,
[threadPermissions.MANAGE_PINS]: true,
[threadPermissions.MANAGE_INVITE_LINKS]: true,
+ [threadPermissions.VOICED_IN_ANNOUNCEMENT_CHANNELS]: true,
[descendantKnowOf]: true,
[descendantVisible]: true,
[topLevelDescendantJoinThread]: true,
diff --git a/lib/shared/thread-utils.js b/lib/shared/thread-utils.js
--- a/lib/shared/thread-utils.js
+++ b/lib/shared/thread-utils.js
@@ -715,6 +715,7 @@
+filterThreadEditAvatarPermission?: boolean,
+excludePinInfo?: boolean,
+filterManageInviteLinksPermission?: boolean,
+ +filterVoicedInAnnouncementChannelsPermission?: boolean,
};
function rawThreadInfoFromServerThreadInfo(
serverThreadInfo: ServerThreadInfo,
@@ -726,6 +727,8 @@
const excludePinInfo = options?.excludePinInfo;
const filterManageInviteLinksPermission =
options?.filterManageInviteLinksPermission;
+ const filterVoicedInAnnouncementChannelsPermission =
+ options?.filterVoicedInAnnouncementChannelsPermission;
const filterThreadPermissions = _omitBy(
(v, k) =>
@@ -742,7 +745,9 @@
threadPermissions.MANAGE_PINS,
].includes(k)) ||
(filterManageInviteLinksPermission &&
- [threadPermissions.MANAGE_INVITE_LINKS].includes(k)),
+ [threadPermissions.MANAGE_INVITE_LINKS].includes(k)) ||
+ (filterVoicedInAnnouncementChannelsPermission &&
+ [threadPermissions.VOICED_IN_ANNOUNCEMENT_CHANNELS].includes(k)),
);
const members = [];
diff --git a/lib/types/thread-permission-types.js b/lib/types/thread-permission-types.js
--- a/lib/types/thread-permission-types.js
+++ b/lib/types/thread-permission-types.js
@@ -32,6 +32,7 @@
EDIT_THREAD_AVATAR: 'edit_thread_avatar',
MANAGE_PINS: 'manage_pins',
MANAGE_INVITE_LINKS: 'manage_invite_links',
+ VOICED_IN_ANNOUNCEMENT_CHANNELS: 'voiced_in_announcement_channels',
});
export type ThreadPermission = $Values<typeof threadPermissions>;
@@ -59,7 +60,8 @@
ourThreadPermissions === 'edit_message' ||
ourThreadPermissions === 'edit_thread_avatar' ||
ourThreadPermissions === 'manage_pins' ||
- ourThreadPermissions === 'manage_invite_links',
+ ourThreadPermissions === 'manage_invite_links' ||
+ ourThreadPermissions === 'voiced_in_announcement_channels',
'string is not threadPermissions enum',
);
return ourThreadPermissions;
@@ -158,8 +160,9 @@
userSurfacedPermission:
userSurfacedPermissions.VOICED_IN_ANNOUNCEMENT_CHANNELS,
};
-const voiced = threadPermissions.VOICED;
-const voicedPermissions = new Set([voiced]);
+const voicedInAnnouncementChannels =
+ threadPermissions.VOICED_IN_ANNOUNCEMENT_CHANNELS;
+const voicedPermissions = new Set([voicedInAnnouncementChannels]);
const createAndEditChannelsPermission = {
title: 'Create and edit channels',
diff --git a/native/redux/persist.js b/native/redux/persist.js
--- a/native/redux/persist.js
+++ b/native/redux/persist.js
@@ -909,6 +909,8 @@
return state;
},
+ [58]: state =>
+ updateClientDBThreadStoreThreadInfos(state, updateRolesAndPermissions),
};
// After migration 31, we'll no longer want to persist `messageStore.messages`
@@ -1024,7 +1026,7 @@
'connection',
],
debug: __DEV__,
- version: 57,
+ version: 58,
transforms: [
messageStoreMessagesBlocklistTransform,
reportStoreTransform,

File Metadata

Mime Type
text/plain
Expires
Wed, Oct 23, 11:21 PM (22 h, 2 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2354771
Default Alt Text
D9827.id33079.diff (7 KB)

Event Timeline