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

Function useRoleMemberCountsForCommunity

lib/shared/thread-utils.js:1547–1576  ·  view source on GitHub ↗
(
  threadInfo: ThreadInfo,
)

Source from the content-addressed store, hash-verified

1545};
1546
1547function useRoleMemberCountsForCommunity(
1548 threadInfo: ThreadInfo,
1549): RoleAndMemberCount {
1550 return React.useMemo(() => {
1551 const roleIDsToNames: { [string]: string } = {};
1552
1553 Object.keys(threadInfo.roles).forEach(roleID => {
1554 roleIDsToNames[roleID] = threadInfo.roles[roleID].name;
1555 });
1556
1557 const roleNamesToMemberCount: RoleAndMemberCount = {};
1558
1559 threadInfo.members.forEach(({ role: roleID }) => {
1560 invariant(roleID, 'Community member should have a role');
1561 const roleName = roleIDsToNames[roleID];
1562
1563 roleNamesToMemberCount[roleName] =
1564 (roleNamesToMemberCount[roleName] ?? 0) + 1;
1565 });
1566
1567 // For all community roles with no members, add them to the list with 0
1568 Object.keys(roleIDsToNames).forEach(roleName => {
1569 if (roleNamesToMemberCount[roleIDsToNames[roleName]] === undefined) {
1570 roleNamesToMemberCount[roleIDsToNames[roleName]] = 0;
1571 }
1572 });
1573
1574 return roleNamesToMemberCount;
1575 }, [threadInfo.members, threadInfo.roles]);
1576}
1577
1578function useRoleNamesToSpecialRole(threadInfo: ThreadInfo): {
1579 +[roleName: string]: ?SpecialRole,

Calls 2

forEachMethod · 0.65
keysMethod · 0.65

Tested by

no test coverage detected