Changeset View
Changeset View
Standalone View
Standalone View
lib/shared/thread-utils.js
Show First 20 Lines • Show All 1,511 Lines • ▼ Show 20 Lines | dispatchActionPromise( | ||||
{ customKeyName }, | { customKeyName }, | ||||
); | ); | ||||
} | } | ||||
function getAvailableThreadMemberActions( | function getAvailableThreadMemberActions( | ||||
memberInfo: RelativeMemberInfo, | memberInfo: RelativeMemberInfo, | ||||
threadInfo: ThreadInfo, | threadInfo: ThreadInfo, | ||||
canEdit: ?boolean = true, | canEdit: ?boolean = true, | ||||
): $ReadOnlyArray<'remove_user' | 'remove_admin' | 'make_admin'> { | ): $ReadOnlyArray<'change_role' | 'remove_user'> { | ||||
const role = memberInfo.role; | const role = memberInfo.role; | ||||
if (!canEdit || !role) { | if (!canEdit || !role) { | ||||
return []; | return []; | ||||
} | } | ||||
const canRemoveMembers = threadHasPermission( | const canRemoveMembers = threadHasPermission( | ||||
threadInfo, | threadInfo, | ||||
threadPermissions.REMOVE_MEMBERS, | threadPermissions.REMOVE_MEMBERS, | ||||
); | ); | ||||
const canChangeRoles = threadHasPermission( | const canChangeRoles = threadHasPermission( | ||||
threadInfo, | threadInfo, | ||||
threadPermissions.CHANGE_ROLE, | threadPermissions.CHANGE_ROLE, | ||||
); | ); | ||||
const result = []; | const result = []; | ||||
if (canChangeRoles && memberInfo.username && threadHasAdminRole(threadInfo)) { | |||||
result.push('change_role'); | |||||
} | |||||
if ( | if ( | ||||
canRemoveMembers && | canRemoveMembers && | ||||
!memberInfo.isViewer && | !memberInfo.isViewer && | ||||
(canChangeRoles || threadInfo.roles[role]?.isDefault) | (canChangeRoles || threadInfo.roles[role]?.isDefault) | ||||
) { | ) { | ||||
result.push('remove_user'); | result.push('remove_user'); | ||||
} | } | ||||
if (canChangeRoles && memberInfo.username && threadHasAdminRole(threadInfo)) { | |||||
result.push( | |||||
memberIsAdmin(memberInfo, threadInfo) ? 'remove_admin' : 'make_admin', | |||||
); | |||||
} | |||||
return result; | return result; | ||||
} | } | ||||
function patchThreadInfoToIncludeMentionedMembersOfParent( | function patchThreadInfoToIncludeMentionedMembersOfParent( | ||||
threadInfo: ThreadInfo, | threadInfo: ThreadInfo, | ||||
parentThreadInfo: ThreadInfo, | parentThreadInfo: ThreadInfo, | ||||
messageText: string, | messageText: string, | ||||
viewerID: string, | viewerID: string, | ||||
▲ Show 20 Lines • Show All 97 Lines • Show Last 20 Lines |