diff --git a/lib/types/minimally-encoded-thread-permissions-types.js b/lib/types/minimally-encoded-thread-permissions-types.js --- a/lib/types/minimally-encoded-thread-permissions-types.js +++ b/lib/types/minimally-encoded-thread-permissions-types.js @@ -4,18 +4,15 @@ import type { TInterface } from 'tcomb'; import t from 'tcomb'; +import { clientAvatarValidator } from './avatar-types.js'; +import { threadSubscriptionValidator } from './subscription-types.js'; +import { threadTypeValidator } from './thread-types-enum.js'; import type { MemberInfo, RawThreadInfo, RoleInfo, ThreadCurrentUserInfo, } from './thread-types.js'; -import { - memberInfoValidator, - rawThreadInfoValidator, - roleInfoValidator, - threadCurrentUserInfoValidator, -} from './thread-types.js'; import { decodeThreadRolePermissionsBitmaskArray, permissionsToBitmaskHex, @@ -34,8 +31,10 @@ const tHexEncodedRolePermission: TRegex = tRegex(/^[0-9a-fA-F]{3,}$/); const minimallyEncodedRoleInfoValidator: TInterface = tShape({ - ...roleInfoValidator.meta.props, minimallyEncoded: tBool(true), + id: tID, + name: t.String, + isDefault: t.Boolean, permissions: t.list(tHexEncodedRolePermission), }); @@ -68,9 +67,11 @@ const tHexEncodedPermissionsBitmask: TRegex = tRegex(/^[0-9a-fA-F]+$/); const minimallyEncodedThreadCurrentUserInfoValidator: TInterface = tShape({ - ...threadCurrentUserInfoValidator.meta.props, minimallyEncoded: tBool(true), + role: t.maybe(tID), + subscription: threadSubscriptionValidator, permissions: tHexEncodedPermissionsBitmask, + unread: t.maybe(t.Boolean), }); const minimallyEncodeThreadCurrentUserInfo = ( @@ -101,9 +102,11 @@ const minimallyEncodedMemberInfoValidator: TInterface = tShape({ - ...memberInfoValidator.meta.props, minimallyEncoded: tBool(true), + id: t.String, + role: t.maybe(tID), permissions: tHexEncodedPermissionsBitmask, + isSender: t.Boolean, }); const minimallyEncodeMemberInfo = ( @@ -136,11 +139,23 @@ const minimallyEncodedRawThreadInfoValidator: TInterface = tShape({ - ...rawThreadInfoValidator.meta.props, minimallyEncoded: tBool(true), + id: tID, + type: threadTypeValidator, + name: t.maybe(t.String), + avatar: t.maybe(clientAvatarValidator), + description: t.maybe(t.String), + color: t.String, + creationTime: t.Number, + parentThreadID: t.maybe(tID), + containingThreadID: t.maybe(tID), + community: t.maybe(tID), members: t.list(minimallyEncodedMemberInfoValidator), roles: t.dict(tID, minimallyEncodedRoleInfoValidator), currentUser: minimallyEncodedThreadCurrentUserInfoValidator, + sourceMessageID: t.maybe(tID), + repliesCount: t.Number, + pinnedCount: t.maybe(t.Number), }); const minimallyEncodeRawThreadInfo = (