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

Function createPendingThread

lib/shared/thread-utils.js:474–527  ·  view source on GitHub ↗
(args: CreatePendingThreadArgs)

Source from the content-addressed store, hash-verified

472};
473
474function createPendingThread(args: CreatePendingThreadArgs): ThreadInfo {
475 const { viewerID, threadType, members, sourceMessageID } = args;
476 const now = Date.now();
477 if (!members.some(member => member.id === viewerID)) {
478 throw new Error(
479 'createPendingThread should be called with the viewer as a member',
480 );
481 }
482
483 const memberIDs = members.map(member => member.id);
484 const threadID = getPendingThreadID(
485 threadType,
486 memberIDs,
487 sourceMessageID,
488 threadSpecs[threadType].protocol().protocolName,
489 );
490
491 const permissions: ThreadRolePermissionsBlob = {
492 [threadPermissions.KNOW_OF]: true,
493 [threadPermissions.VISIBLE]: true,
494 [threadPermissions.VOICED]: true,
495 };
496
497 const membershipPermissions = getAllThreadPermissions(
498 makePermissionsBlob(permissions, null, threadID, threadType),
499 threadID,
500 );
501 const role: RoleInfo = {
502 ...minimallyEncodeRoleInfo({
503 id: `${threadID}/role`,
504 name: 'Members',
505 permissions,
506 isDefault: true,
507 }),
508 specialRole: specialRoles.DEFAULT_ROLE,
509 };
510
511 const rawThreadInfo = threadSpecs[threadType].protocol().createPendingThread({
512 createPendingThreadArgs: args,
513 creationTime: now,
514 membershipPermissions,
515 role,
516 threadID,
517 memberIDs,
518 });
519
520 const userInfos: { [string]: UserInfo } = {};
521 for (const member of members) {
522 const { id, username, avatar } = member;
523 userInfos[id] = { id, username, avatar };
524 }
525
526 return threadInfoFromRawThreadInfo(rawThreadInfo, viewerID, userInfos);
527}
528
529type PendingPersonalThread = {
530 +threadInfo: ThreadInfo,

Calls 5

getAllThreadPermissionsFunction · 0.90
makePermissionsBlobFunction · 0.90
minimallyEncodeRoleInfoFunction · 0.90
getPendingThreadIDFunction · 0.85

Tested by

no test coverage detected