( threadInfos: $ReadOnlyArray<RawThreadInfo | ThreadInfo>, )
| 148 | }, |
| 149 | }; |
| 150 | function useCommunityRootMembersToRole( |
| 151 | threadInfos: $ReadOnlyArray<RawThreadInfo | ThreadInfo>, |
| 152 | ): CommunityRootMembersToRoleType { |
| 153 | const communityRootMembersToRole = React.useMemo(() => { |
| 154 | const communityThreadInfos = threadInfos.filter(threadInfo => |
| 155 | threadTypeIsCommunityRoot(threadInfo.type), |
| 156 | ); |
| 157 | |
| 158 | if (communityThreadInfos.length === 0) { |
| 159 | return {}; |
| 160 | } |
| 161 | |
| 162 | const communityRoots = _keyBy('id')(communityThreadInfos); |
| 163 | return _mapValues((threadInfo: ThreadInfo) => { |
| 164 | const keyedMembers = _keyBy('id')(threadInfo.members); |
| 165 | const keyedMembersToRole = _mapValues( |
| 166 | (member: MemberInfoWithPermissions | RelativeMemberInfo) => { |
| 167 | return member.role ? threadInfo.roles[member.role] : null; |
| 168 | }, |
| 169 | )(keyedMembers); |
| 170 | return keyedMembersToRole; |
| 171 | })(communityRoots); |
| 172 | }, [threadInfos]); |
| 173 | |
| 174 | return communityRootMembersToRole; |
| 175 | } |
| 176 | |
| 177 | function useThreadsWithPermission( |
| 178 | threadInfos: $ReadOnlyArray<ThreadInfo>, |
no test coverage detected