Page MenuHomePhabricator

D13073.diff
No OneTemporary

D13073.diff

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
@@ -60,7 +60,6 @@
import {
threadPermissionPropagationPrefixes,
threadPermissions,
- configurableCommunityPermissions,
type ThreadPermission,
type ThreadPermissionsInfo,
type ThreadRolePermissionsBlob,
@@ -108,6 +107,7 @@
} from '../utils/member-info-utils.js';
import { entries, values } from '../utils/objects.js';
import { useSelector } from '../utils/redux-utils.js';
+import { userSurfacedPermissionsFromRolePermissions } from '../utils/role-utils.js';
import { usingOlmViaTunnelbrokerForDMs } from '../utils/services-utils.js';
import { firstLine } from '../utils/string-utils.js';
import { pendingThreadIDRegex } from '../utils/validation-utils.js';
@@ -1577,24 +1577,11 @@
Object.keys(threadInfo.roles).forEach(roleID => {
const roleName = threadInfo.roles[roleID].name;
- const rolePermissions = Object.keys(
- decodeMinimallyEncodedRoleInfo(threadInfo.roles[roleID]).permissions,
- );
-
- const setOfUserSurfacedPermissions = new Set<UserSurfacedPermission>();
-
- rolePermissions.forEach(rolePermission => {
- const userSurfacedPermission = Object.keys(
- configurableCommunityPermissions,
- ).find(key =>
- configurableCommunityPermissions[key].has(rolePermission),
- );
-
- if (userSurfacedPermission) {
- setOfUserSurfacedPermissions.add(userSurfacedPermission);
- }
- });
- roleNamesToPermissions[roleName] = setOfUserSurfacedPermissions;
+ const rolePermissions = decodeMinimallyEncodedRoleInfo(
+ threadInfo.roles[roleID],
+ ).permissions;
+ roleNamesToPermissions[roleName] =
+ userSurfacedPermissionsFromRolePermissions(rolePermissions);
});
return roleNamesToPermissions;
diff --git a/lib/utils/role-utils.js b/lib/utils/role-utils.js
--- a/lib/utils/role-utils.js
+++ b/lib/utils/role-utils.js
@@ -132,9 +132,28 @@
return currentRolePermissions;
}
+function userSurfacedPermissionsFromRolePermissions(
+ rolePermissions: ThreadRolePermissionsBlob,
+): Set<UserSurfacedPermission> {
+ const setOfUserSurfacedPermissions = new Set<UserSurfacedPermission>();
+
+ Object.keys(rolePermissions).forEach(rolePermission => {
+ const userSurfacedPermission = Object.keys(
+ configurableCommunityPermissions,
+ ).find(key => configurableCommunityPermissions[key].has(rolePermission));
+
+ if (userSurfacedPermission) {
+ setOfUserSurfacedPermissions.add(userSurfacedPermission);
+ }
+ });
+
+ return setOfUserSurfacedPermissions;
+}
+
export {
constructRoleDeletionMessagePrompt,
useRolesFromCommunityThreadInfo,
toggleUserSurfacedPermission,
useMembersGroupedByRole,
+ userSurfacedPermissionsFromRolePermissions,
};

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 30, 11:15 AM (21 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
2204872
Default Alt Text
D13073.diff (2 KB)

Event Timeline