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 @@ -295,6 +295,7 @@ }; const exampleMinimallyEncodedRawThreadInfoA: MinimallyEncodedRawThreadInfo = { + minimallyEncoded: true, id: '85171', type: threadTypes.PERSONAL, name: '', 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 @@ -24,7 +24,7 @@ threadCurrentUserInfoValidator, } from '../types/thread-types.js'; import { entries, invertObjectToMap } from '../utils/objects.js'; -import { tID, tRegex, tShape } from '../utils/validation-utils.js'; +import { tBool, tID, tRegex, tShape } from '../utils/validation-utils.js'; import type { TRegex } from '../utils/validation-utils.js'; // `baseRolePermissionEncoding` maps permission names to indices. @@ -304,6 +304,7 @@ }); export type MinimallyEncodedRawThreadInfo = { + minimallyEncoded: true, ...RawThreadInfo, +members: $ReadOnlyArray, +roles: { +[id: string]: MinimallyEncodedRoleInfo }, @@ -312,6 +313,7 @@ const minimallyEncodedRawThreadInfoValidator: TInterface = tShape({ + minimallyEncoded: tBool(true), ...rawThreadInfoValidator.meta.props, members: t.list(minimallyEncodedMemberInfoValidator), roles: t.dict(tID, minimallyEncodedRoleInfoValidator), @@ -323,6 +325,7 @@ ): MinimallyEncodedRawThreadInfo => { const { members, roles, currentUser, ...rest } = rawThreadInfo; return { + minimallyEncoded: true, ...rest, members: members.map(minimallyEncodeMemberInfo), roles: _mapValues(minimallyEncodeRoleInfo)(roles), @@ -333,7 +336,7 @@ const decodeMinimallyEncodedRawThreadInfo = ( minimallyEncodedRawThreadInfo: MinimallyEncodedRawThreadInfo, ): RawThreadInfo => { - const { members, roles, currentUser, ...rest } = + const { minimallyEncoded, members, roles, currentUser, ...rest } = minimallyEncodedRawThreadInfo; return { ...rest,