MCPcopy Create free account
hub / github.com/CommE2E/comm / useAvailableThreadMemberActions

Function useAvailableThreadMemberActions

lib/shared/thread-utils.js:1462–1506  ·  view source on GitHub ↗
(
  memberInfo: RelativeMemberInfo,
  threadInfo: ThreadInfo,
  canEdit: ?boolean = true,
)

Source from the content-addressed store, hash-verified

1460}
1461
1462function useAvailableThreadMemberActions(
1463 memberInfo: RelativeMemberInfo,
1464 threadInfo: ThreadInfo,
1465 canEdit: ?boolean = true,
1466): $ReadOnlyArray<'change_role' | 'remove_user'> {
1467 const canRemoveMembers = useThreadHasPermission(
1468 threadInfo,
1469 threadPermissions.REMOVE_MEMBERS,
1470 );
1471 const canChangeRoles = useThreadHasPermission(
1472 threadInfo,
1473 threadPermissions.CHANGE_ROLE,
1474 );
1475
1476 return React.useMemo(() => {
1477 const { role } = memberInfo;
1478 if (!canEdit || !role || roleIsInviteeRole(threadInfo.roles[role])) {
1479 return [];
1480 }
1481
1482 const result = [];
1483
1484 const protocol = threadSpecs[threadInfo.type].protocol();
1485 const viewerCanUpdateOwnRole = protocol.viewerCanUpdateOwnRole;
1486
1487 if (
1488 canChangeRoles &&
1489 memberInfo.username &&
1490 threadHasAdminRole(threadInfo) &&
1491 (!memberInfo.isViewer || viewerCanUpdateOwnRole)
1492 ) {
1493 result.push('change_role');
1494 }
1495
1496 if (
1497 canRemoveMembers &&
1498 !memberInfo.isViewer &&
1499 (canChangeRoles || roleIsDefaultRole(threadInfo.roles[role]))
1500 ) {
1501 result.push('remove_user');
1502 }
1503
1504 return result;
1505 }, [canChangeRoles, canEdit, canRemoveMembers, memberInfo, threadInfo]);
1506}
1507
1508function patchThreadInfoToIncludeMentionedMembersOfParent(
1509 threadInfo: ThreadInfo,

Callers 2

member.react.jsFile · 0.90

Calls 5

useThreadHasPermissionFunction · 0.85
roleIsInviteeRoleFunction · 0.85
threadHasAdminRoleFunction · 0.85
roleIsDefaultRoleFunction · 0.85
pushMethod · 0.80

Tested by

no test coverage detected