diff --git a/keyserver/src/creators/account-creator.js b/keyserver/src/creators/account-creator.js --- a/keyserver/src/creators/account-creator.js +++ b/keyserver/src/creators/account-creator.js @@ -16,6 +16,7 @@ ReservedUsernameMessage, } from 'lib/types/crypto-types.js'; import { messageTypes } from 'lib/types/message-types-enum.js'; +import type { RawMessageInfo } from 'lib/types/message-types.js'; import { threadTypes } from 'lib/types/thread-types-enum.js'; import { ServerError } from 'lib/utils/errors.js'; import { values } from 'lib/utils/objects.js'; @@ -75,7 +76,7 @@ throw new ServerError('invalid_username'); } - const promises = [searchForUser(request.username), thisKeyserverAdmin()]; + const promises = [searchForUser(request.username)]; const { calendarQuery, signedIdentityKeysBlob, @@ -85,7 +86,7 @@ promises.push(verifyCalendarQueryThreadIDs(calendarQuery)); } - const [existingUser, admin] = await Promise.all(promises); + const [existingUser] = await Promise.all(promises); if (reservedUsernamesSet.has(request.username.toLowerCase())) { throw new ServerError('username_reserved'); } @@ -143,60 +144,17 @@ })(); await Promise.all([ - updateThread( - createScriptViewer(admin.id), - { - threadID: genesis().id, - changes: { newMemberIDs: [id] }, - }, - { forceAddMembers: true, silenceMessages: true, ignorePermissions: true }, - ), viewerAcknowledgmentUpdater(viewer, policyTypes.tosAndPrivacyPolicy), persistOlmNotifSessionPromise, ]); - const [privateThreadResult, ashoatThreadResult] = await Promise.all([ - createPrivateThread(viewer), - createThread( - viewer, - { - type: threadTypes.PERSONAL, - initialMemberIDs: [admin.id], - }, - { forceAddMembers: true }, - ), - ]); - const ashoatThreadID = ashoatThreadResult.newThreadID; - const privateThreadID = privateThreadResult.newThreadID; + const rawMessageInfos = await sendMessagesOnAccountCreation(viewer); - let messageTime = Date.now(); - const ashoatMessageDatas = ashoatMessages.map(message => ({ - type: messageTypes.TEXT, - threadID: ashoatThreadID, - creatorID: admin.id, - time: messageTime++, - text: message, - })); - const privateMessageDatas = privateMessages.map(message => ({ - type: messageTypes.TEXT, - threadID: privateThreadID, - creatorID: commbot.userID, - time: messageTime++, - text: message, - })); - const messageDatas = [...ashoatMessageDatas, ...privateMessageDatas]; - const [messageInfos, threadsResult, userInfos, currentUserInfo] = - await Promise.all([ - createMessages(viewer, messageDatas), - fetchThreadInfos(viewer), - fetchKnownUserInfos(viewer), - fetchLoggedInUserInfo(viewer), - ]); - const rawMessageInfos = [ - ...ashoatThreadResult.newMessageInfos, - ...privateThreadResult.newMessageInfos, - ...messageInfos, - ]; + const [threadsResult, userInfos, currentUserInfo] = await Promise.all([ + fetchThreadInfos(viewer), + fetchKnownUserInfos(viewer), + fetchLoggedInUserInfo(viewer), + ]); ignorePromiseRejections( createAndSendReservedUsernameMessage([ @@ -215,7 +173,9 @@ }; } -async function processAccountCreationCommon(viewer: Viewer) { +async function sendMessagesOnAccountCreation( + viewer: Viewer, +): Promise { const admin = await thisKeyserverAdmin(); await updateThread( @@ -257,7 +217,13 @@ text: message, })); const messageDatas = [...ashoatMessageDatas, ...privateMessageDatas]; - await Promise.all([createMessages(viewer, messageDatas)]); + const messageInfos = await createMessages(viewer, messageDatas); + + return [ + ...ashoatThreadResult.newMessageInfos, + ...privateThreadResult.newMessageInfos, + ...messageInfos, + ]; } async function createAndSendReservedUsernameMessage( @@ -282,6 +248,6 @@ export { createAccount, - processAccountCreationCommon, + sendMessagesOnAccountCreation, createAndSendReservedUsernameMessage, }; diff --git a/keyserver/src/responders/user-responders.js b/keyserver/src/responders/user-responders.js --- a/keyserver/src/responders/user-responders.js +++ b/keyserver/src/responders/user-responders.js @@ -25,7 +25,7 @@ UpdateUserSettingsRequest, PolicyAcknowledgmentRequest, ClaimUsernameResponse, -} from 'lib/types/account-types'; +} from 'lib/types/account-types.js'; import { userSettingsTypes, notificationTypeValues, @@ -93,7 +93,7 @@ } from './entry-responders.js'; import { createAndSendReservedUsernameMessage, - processAccountCreationCommon, + sendMessagesOnAccountCreation, createAccount, } from '../creators/account-creator.js'; import createIDs from '../creators/id-creator.js'; @@ -678,11 +678,11 @@ shouldMarkPoliciesAsAcceptedAfterCookieCreation: !existingUserID, }); - // 11. Create threads with call to `processAccountCreationCommon(...)`, + // 11. Create messages with call to `sendMessagesOnAccountCreation(...)`, // if the account has just been registered. Also, set the username as // reserved. if (!existingUserID) { - await processAccountCreationCommon(viewer); + await sendMessagesOnAccountCreation(viewer); ignorePromiseRejections( createAndSendReservedUsernameMessage([ @@ -818,10 +818,10 @@ shouldMarkPoliciesAsAcceptedAfterCookieCreation: !existingUsername, }); - // 6. Create threads with call to `processAccountCreationCommon(...)`, + // 6. Create messages with call to `sendMessagesOnAccountCreation(...)`, // if the account has just been registered. if (!existingUsername) { - await processAccountCreationCommon(viewer); + await sendMessagesOnAccountCreation(viewer); } return result;