Changeset View
Changeset View
Standalone View
Standalone View
lib/shared/thread-utils.js
Show First 20 Lines • Show All 702 Lines • ▼ Show 20 Lines | type RawThreadInfoOptions = { | ||||
+filterMemberList?: ?boolean, | +filterMemberList?: ?boolean, | ||||
+hideThreadStructure?: ?boolean, | +hideThreadStructure?: ?boolean, | ||||
+shimThreadTypes?: ?{ | +shimThreadTypes?: ?{ | ||||
+[inType: ThreadType]: ThreadType, | +[inType: ThreadType]: ThreadType, | ||||
}, | }, | ||||
+filterDetailedThreadEditPermissions?: boolean, | +filterDetailedThreadEditPermissions?: boolean, | ||||
+filterThreadEditAvatarPermission?: boolean, | +filterThreadEditAvatarPermission?: boolean, | ||||
+excludePinInfo?: boolean, | +excludePinInfo?: boolean, | ||||
+filterManageInviteLinksPermission?: boolean, | |||||
}; | }; | ||||
function rawThreadInfoFromServerThreadInfo( | function rawThreadInfoFromServerThreadInfo( | ||||
serverThreadInfo: ServerThreadInfo, | serverThreadInfo: ServerThreadInfo, | ||||
viewerID: string, | viewerID: string, | ||||
options?: RawThreadInfoOptions, | options?: RawThreadInfoOptions, | ||||
): ?RawThreadInfo { | ): ?RawThreadInfo { | ||||
const includeVisibilityRules = options?.includeVisibilityRules; | const includeVisibilityRules = options?.includeVisibilityRules; | ||||
const filterMemberList = options?.filterMemberList; | const filterMemberList = options?.filterMemberList; | ||||
const hideThreadStructure = options?.hideThreadStructure; | const hideThreadStructure = options?.hideThreadStructure; | ||||
const shimThreadTypes = options?.shimThreadTypes; | const shimThreadTypes = options?.shimThreadTypes; | ||||
const filterDetailedThreadEditPermissions = | const filterDetailedThreadEditPermissions = | ||||
options?.filterDetailedThreadEditPermissions; | options?.filterDetailedThreadEditPermissions; | ||||
const filterThreadEditAvatarPermission = | const filterThreadEditAvatarPermission = | ||||
options?.filterThreadEditAvatarPermission; | options?.filterThreadEditAvatarPermission; | ||||
const excludePinInfo = options?.excludePinInfo; | const excludePinInfo = options?.excludePinInfo; | ||||
const filterManageInviteLinksPermission = | |||||
options?.filterManageInviteLinksPermission; | |||||
const filterThreadPermissions = _omitBy( | const filterThreadPermissions = _omitBy( | ||||
(v, k) => | (v, k) => | ||||
(filterDetailedThreadEditPermissions && | (filterDetailedThreadEditPermissions && | ||||
[ | [ | ||||
threadPermissions.EDIT_THREAD_COLOR, | threadPermissions.EDIT_THREAD_COLOR, | ||||
threadPermissions.EDIT_THREAD_DESCRIPTION, | threadPermissions.EDIT_THREAD_DESCRIPTION, | ||||
].includes(k)) || | ].includes(k)) || | ||||
(filterThreadEditAvatarPermission && | (filterThreadEditAvatarPermission && | ||||
[ | [ | ||||
threadPermissions.EDIT_THREAD_AVATAR, | threadPermissions.EDIT_THREAD_AVATAR, | ||||
threadPermissionPropagationPrefixes.DESCENDANT + | threadPermissionPropagationPrefixes.DESCENDANT + | ||||
threadPermissions.EDIT_THREAD_AVATAR, | threadPermissions.EDIT_THREAD_AVATAR, | ||||
].includes(k)) || | ].includes(k)) || | ||||
(excludePinInfo && | (excludePinInfo && | ||||
[ | [ | ||||
threadPermissions.MANAGE_PINS, | threadPermissions.MANAGE_PINS, | ||||
threadPermissionPropagationPrefixes.DESCENDANT + | threadPermissionPropagationPrefixes.DESCENDANT + | ||||
threadPermissions.MANAGE_PINS, | threadPermissions.MANAGE_PINS, | ||||
].includes(k)), | ].includes(k)) || | ||||
(filterManageInviteLinksPermission && | |||||
[threadPermissions.MANAGE_INVITE_LINKS].includes(k)), | |||||
); | ); | ||||
const members = []; | const members = []; | ||||
let currentUser; | let currentUser; | ||||
for (const serverMember of serverThreadInfo.members) { | for (const serverMember of serverThreadInfo.members) { | ||||
if ( | if ( | ||||
filterMemberList && | filterMemberList && | ||||
serverMember.id !== viewerID && | serverMember.id !== viewerID && | ||||
▲ Show 20 Lines • Show All 896 Lines • Show Last 20 Lines |