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

Function createPendingThread

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

Source from the content-addressed store, hash-verified

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

Calls 5

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

Tested by

no test coverage detected