diff --git a/app/messages/api/queue/insert-messages.ts b/app/messages/api/queue/insert-messages.ts index c36577b..0834fc5 100644 --- a/app/messages/api/queue/insert-messages.ts +++ b/app/messages/api/queue/insert-messages.ts @@ -22,15 +22,15 @@ const insertMessagesQueue = Queue( } const sms = messages - .map>((message) => ({ + .map((message) => ({ organizationId, + id: message.sid, phoneNumberId: phoneNumber.id, content: encrypt(message.body, phoneNumber.organization.encryptionKey), from: message.from, to: message.to, status: translateStatus(message.status), direction: translateDirection(message.direction), - twilioSid: message.sid, sentAt: new Date(message.dateCreated), })) .sort((a, b) => a.sentAt.getTime() - b.sentAt.getTime()); diff --git a/app/onboarding/api/queue/set-twilio-webhooks.ts b/app/onboarding/api/queue/set-twilio-webhooks.ts index 5308804..d91edb9 100644 --- a/app/onboarding/api/queue/set-twilio-webhooks.ts +++ b/app/onboarding/api/queue/set-twilio-webhooks.ts @@ -1,9 +1,10 @@ import { getConfig } from "blitz"; import { Queue } from "quirrel/blitz"; -import twilio from "twilio"; +import type twilio from "twilio"; import type { ApplicationInstance } from "twilio/lib/rest/api/v2010/account/application"; import db from "../../../../db"; +import getTwilioClient from "../../../../integrations/twilio"; type Payload = { organizationId: string; @@ -22,27 +23,16 @@ const setTwilioWebhooks = Queue("api/queue/set-twilio-webhooks", async } const organization = phoneNumber.organization; - if (!organization.twilioAccountSid || !organization.twilioAuthToken) { - return; - } - - const mainTwilioClient = twilio(organization.twilioAccountSid, organization.twilioAuthToken); - const [twimlApp, apiKey] = await Promise.all([ - getTwimlApplication(mainTwilioClient, organization.twimlAppSid), - mainTwilioClient.newKeys.create({ friendlyName: "Shellphone API key" }), - ]); + const twilioClient = getTwilioClient(organization); + const twimlApp = await getTwimlApplication(twilioClient, organization.twimlAppSid); const twimlAppSid = twimlApp.sid; await Promise.all([ db.organization.update({ where: { id: organizationId }, - data: { - twimlAppSid, - twilioApiKey: apiKey.sid, - twilioApiSecret: apiKey.secret, - }, + data: { twimlAppSid }, }), - mainTwilioClient.incomingPhoneNumbers.get(phoneNumber.id).update({ + twilioClient.incomingPhoneNumbers.get(phoneNumber.id).update({ smsApplicationSid: twimlAppSid, voiceApplicationSid: twimlAppSid, }), diff --git a/app/onboarding/mutations/set-phone-number.ts b/app/onboarding/mutations/set-phone-number.ts index 388f02e..3aab977 100644 --- a/app/onboarding/mutations/set-phone-number.ts +++ b/app/onboarding/mutations/set-phone-number.ts @@ -34,6 +34,16 @@ export default resolver.pipe(resolver.zod(Body), resolver.authorize(), async ({ }); context.session.$setPrivateData({ hasCompletedOnboarding: true }); + const mainTwilioClient = twilio(organization.twilioAccountSid, organization.twilioAuthToken); + const apiKey = await mainTwilioClient.newKeys.create({ friendlyName: "Shellphone API key" }); + await db.organization.update({ + where: { id: organizationId }, + data: { + twilioApiKey: apiKey.sid, + twilioApiSecret: apiKey.secret, + }, + }); + const phoneNumberId = phoneNumberSid; await Promise.all([ fetchMessagesQueue.enqueue(