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 @@ -990,6 +990,15 @@ return threadInfo; } +function filterOutDisabledPermissions(permissionsBitmask: string): string { + const decodedPermissions: ThreadPermissionsInfo = + threadPermissionsFromBitmaskHex(permissionsBitmask); + const updatedPermissions = { ...decodedPermissions, ...disabledPermissions }; + const encodedUpdatedPermissions: string = + permissionsToBitmaskHex(updatedPermissions); + return encodedUpdatedPermissions; +} + function getCurrentUser( threadInfo: RawThreadInfo | ThreadInfo, viewerID: ?string, @@ -998,17 +1007,11 @@ if (!threadFrozenDueToBlock(threadInfo, viewerID, userInfos)) { return threadInfo.currentUser; } - const decodedPermissions = threadPermissionsFromBitmaskHex( - threadInfo.currentUser.permissions, - ); - const updatedPermissions = { - ...decodedPermissions, - ...disabledPermissions, - }; - const encodedUpdatedPermissions = permissionsToBitmaskHex(updatedPermissions); return { ...threadInfo.currentUser, - permissions: encodedUpdatedPermissions, + permissions: filterOutDisabledPermissions( + threadInfo.currentUser.permissions, + ), }; } @@ -1871,6 +1874,7 @@ createPendingSidebar, pendingThreadType, createRealThreadFromPendingThread, + filterOutDisabledPermissions, getCurrentUser, threadFrozenDueToBlock, threadFrozenDueToViewerBlock,