From 591adc4aed9776566ea10734b87870e958268332 Mon Sep 17 00:00:00 2001 From: Atul Madhugiri Date: Wed, 15 Nov 2023 07:49:50 -0500 Subject: [PATCH] [lib] Update `checkIfDefaultMembersAreVoiced` to handle `MinimallyEncodedThreadInfo` Summary: IF `RoleInfo` is `minimallyEncoded`, decode the `permissions` and then proceed with truthiness check. Test Plan: Flow Reviewers: ashoat, ginsu, tomek, rohan Reviewed By: ashoat Differential Revision: https://phab.comm.dev/D9889 --- lib/shared/thread-utils.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/lib/shared/thread-utils.js b/lib/shared/thread-utils.js index dd6e9bd060..3ec2af2f44 100644 --- a/lib/shared/thread-utils.js +++ b/lib/shared/thread-utils.js @@ -65,6 +65,7 @@ import type { MinimallyEncodedThreadCurrentUserInfo, MinimallyEncodedThreadInfo, } from '../types/minimally-encoded-thread-permissions-types.js'; +import { decodeMinimallyEncodedRoleInfo } from '../types/minimally-encoded-thread-permissions-types.js'; import { userRelationshipStatus } from '../types/relationship-types.js'; import { threadPermissionPropagationPrefixes, @@ -1480,7 +1481,9 @@ function useSidebarExistsOrCanBeCreated( return !!messageItem.threadCreatedFromMessage || canCreateSidebarFromMessage; } -function checkIfDefaultMembersAreVoiced(threadInfo: ThreadInfo): boolean { +function checkIfDefaultMembersAreVoiced( + threadInfo: ThreadInfo | MinimallyEncodedThreadInfo, +): boolean { const defaultRoleID = Object.keys(threadInfo.roles).find( roleID => threadInfo.roles[roleID].isDefault, ); @@ -1489,7 +1492,11 @@ function checkIfDefaultMembersAreVoiced(threadInfo: ThreadInfo): boolean { 'all threads should have a default role', ); const defaultRole = threadInfo.roles[defaultRoleID]; - return !!defaultRole.permissions[threadPermissions.VOICED]; + const defaultRolePermissions = defaultRole.minimallyEncoded + ? decodeMinimallyEncodedRoleInfo(defaultRole).permissions + : defaultRole.permissions; + + return !!defaultRolePermissions[threadPermissions.VOICED]; } const draftKeySuffix = '/message_composer';