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

Function useAddDMThreadMembers

lib/shared/dm-ops/dm-op-utils.js:269–346  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

267}
268
269function useAddDMThreadMembers(): (
270 newMemberIDs: $ReadOnlyArray<string>,
271 threadInfo: ThreadInfo,
272) => Promise<void> {
273 const viewerID = useSelector(
274 state => state.currentUserInfo && state.currentUserInfo.id,
275 );
276 const processAndSendDMOperation = useProcessAndSendDMOperation();
277 const threadInfos = useSelector(state => state.threadStore.threadInfos);
278
279 return React.useCallback(
280 async (newMemberIDs: $ReadOnlyArray<string>, threadInfo: ThreadInfo) => {
281 const rawThreadInfo = threadInfos[threadInfo.id];
282 invariant(rawThreadInfo.thick, 'thread should be thick');
283 const existingThreadDetails =
284 getCreateThickRawThreadInfoInputFromThreadInfo(rawThreadInfo);
285
286 const messageID = uuid.v4();
287
288 invariant(viewerID, 'viewerID should be set');
289 const addViewerToThreadMembersOperation: DMAddViewerToThreadMembersOperation =
290 {
291 type: 'add_viewer_to_thread_members',
292 existingThreadDetails,
293 editorID: viewerID,
294 time: Date.now(),
295 messageID,
296 addedUserIDs: newMemberIDs,
297 };
298 const viewerOperationSpecification: OutboundDMOperationSpecification = {
299 type: dmOperationSpecificationTypes.OUTBOUND,
300 op: addViewerToThreadMembersOperation,
301 recipients: {
302 type: 'some_users',
303 userIDs: newMemberIDs,
304 },
305 sendOnly: true,
306 };
307
308 invariant(viewerID, 'viewerID should be set');
309 const addMembersOperation: DMAddMembersOperation = {
310 type: 'add_members',
311 threadID: threadInfo.id,
312 editorID: viewerID,
313 time: Date.now(),
314 messageID,
315 addedUserIDs: newMemberIDs,
316 };
317 const newMemberIDsSet = new Set<string>(newMemberIDs);
318 const recipientsThreadID =
319 threadInfo.type === thickThreadTypes.THICK_SIDEBAR &&
320 threadInfo.parentThreadID
321 ? threadInfo.parentThreadID
322 : threadInfo.id;
323
324 const existingMembers =
325 threadInfos[recipientsThreadID]?.members
326 ?.map(member => member.id)

Callers 3

AddMembersModalContentFunction · 0.90

Calls 4

useSelectorFunction · 0.90
hasMethod · 0.65

Tested by

no test coverage detected