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

Function useThreadsWithPermission

lib/shared/thread-utils.js:177–207  ·  view source on GitHub ↗
(
  threadInfos: $ReadOnlyArray<ThreadInfo>,
  permission: ThreadPermission,
)

Source from the content-addressed store, hash-verified

175}
176
177function useThreadsWithPermission(
178 threadInfos: $ReadOnlyArray<ThreadInfo>,
179 permission: ThreadPermission,
180): $ReadOnlyArray<ThreadInfo> {
181 const loggedInUserInfo = useLoggedInUserInfo();
182 const userInfos = useSelector(state => state.userStore.userInfos);
183
184 return React.useMemo(() => {
185 return threadInfos.filter((threadInfo: ThreadInfo) => {
186 const canBeFrozen = threadSpecs[threadInfo.type]
187 .protocol()
188 .canBeFrozen(threadInfo);
189 if (!canBeFrozen || !loggedInUserInfo) {
190 return hasPermission(threadInfo.currentUser.permissions, permission);
191 }
192
193 const threadFrozen = threadIsWithBlockedUserOnlyWithoutAdminRoleCheck(
194 threadInfo,
195 loggedInUserInfo.id,
196 userInfos,
197 false,
198 );
199
200 const permissions = threadFrozen
201 ? filterOutDisabledPermissions(threadInfo.currentUser.permissions)
202 : threadInfo.currentUser.permissions;
203
204 return hasPermission(permissions, permission);
205 });
206 }, [threadInfos, loggedInUserInfo, userInfos, permission]);
207}
208
209function useThreadHasPermission(
210 threadInfo: ?ThreadInfo,

Callers 3

useThreadHasPermissionFunction · 0.85
useThreadsInChatListFunction · 0.85

Calls 5

useLoggedInUserInfoFunction · 0.90
useSelectorFunction · 0.90
hasPermissionFunction · 0.90

Tested by

no test coverage detected