From 505f888e3775f918ed5a121e9fce6b437835739b Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Tue, 1 Mar 2022 11:20:31 -0800 Subject: [PATCH] Update to latest intercom client --- packages/api/src/events/user/user_created.ts | 14 +++---- packages/api/src/resolvers/article/index.ts | 6 +-- .../resolvers/article_saving_request/index.ts | 2 +- packages/api/src/resolvers/save/index.ts | 6 +-- packages/api/src/routers/auth/auth_router.ts | 10 ++--- packages/api/src/utils/intercom.ts | 38 +++++++------------ 6 files changed, 29 insertions(+), 47 deletions(-) diff --git a/packages/api/src/events/user/user_created.ts b/packages/api/src/events/user/user_created.ts index 9e3986af6..f634f73d4 100644 --- a/packages/api/src/events/user/user_created.ts +++ b/packages/api/src/events/user/user_created.ts @@ -60,17 +60,13 @@ export class CreateIntercomAccount const customAttributes: { source_user_id: string } = { source_user_id: profile.user.sourceUserId, } - await IntercomClient?.users.create({ + await IntercomClient?.contacts.createUser({ email: profile.user.email, - user_id: profile.user.id, + externalId: profile.user.id, name: profile.user.name, - avatar: { - image_url: profile.pictureUrl || null, - type: 'avatar', - }, - custom_attributes: customAttributes, - created_at: Math.floor(new Date(profile.user.createdAt).getTime() / 1000), - signed_up_at: Math.floor(Date.now() / 1000), + avatar: profile.pictureUrl, + customAttributes: customAttributes, + signedUpAt: Math.floor(Date.now() / 1000), }) } } diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 56a3872d1..14b69cad2 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -126,7 +126,7 @@ export const createArticleResolver = authorized< env: env.server.apiEnv, }, }) - createIntercomEvent('link-saved', uid) + await createIntercomEvent('link-saved', uid) const articleSavingRequest = articleSavingRequestId ? (await models.articleSavingRequest.get(articleSavingRequestId)) || @@ -507,7 +507,7 @@ export const getArticleResolver: ResolverFn< env: env.server.apiEnv, }, }) - createIntercomEvent('get-article', claims.uid) + await createIntercomEvent('get-article', claims.uid) const article = await models.userArticle.getByUserIdAndSlug( claims.uid, @@ -555,7 +555,7 @@ export const getArticlesResolver = authorized< env: env.server.apiEnv, }, }) - createIntercomEvent('search', claims.uid) + await createIntercomEvent('search', claims.uid) const [userArticles, totalCount] = (await authTrx((tx) => models.userArticle.getPaginated( diff --git a/packages/api/src/resolvers/article_saving_request/index.ts b/packages/api/src/resolvers/article_saving_request/index.ts index 868ddd2f5..68acd39a6 100644 --- a/packages/api/src/resolvers/article_saving_request/index.ts +++ b/packages/api/src/resolvers/article_saving_request/index.ts @@ -20,7 +20,7 @@ export const createArticleSavingRequestResolver = authorized< CreateArticleSavingRequestError, MutationCreateArticleSavingRequestArgs >(async (_, { input: { url } }, { models, claims }) => { - createIntercomEvent('link-save-request', claims.uid) + await createIntercomEvent('link-save-request', claims.uid) const request = await createPageSaveRequest(claims.uid, url, models) return { articleSavingRequest: request, diff --git a/packages/api/src/resolvers/save/index.ts b/packages/api/src/resolvers/save/index.ts index c800dd8b6..0b134a00a 100644 --- a/packages/api/src/resolvers/save/index.ts +++ b/packages/api/src/resolvers/save/index.ts @@ -21,7 +21,7 @@ export const savePageResolver = authorized< models, claims: { uid }, } = ctx - createIntercomEvent('link-saved', uid) + await createIntercomEvent('link-saved', uid) const user = userDataToUser(await models.user.get(uid)) if (!user) { @@ -44,7 +44,7 @@ export const saveUrlResolver = authorized< models, claims: { uid }, } = ctx - createIntercomEvent('link-saved', uid) + await createIntercomEvent('link-saved', uid) const user = userDataToUser(await models.user.get(uid)) if (!user) { @@ -63,7 +63,7 @@ export const saveFileResolver = authorized< models, claims: { uid }, } = ctx - createIntercomEvent('link-saved', uid) + await createIntercomEvent('link-saved', uid) const user = userDataToUser(await models.user.get(uid)) if (!user) { diff --git a/packages/api/src/routers/auth/auth_router.ts b/packages/api/src/routers/auth/auth_router.ts index 0e63ae533..5bb2bfc2f 100644 --- a/packages/api/src/routers/auth/auth_router.ts +++ b/packages/api/src/routers/auth/auth_router.ts @@ -333,13 +333,11 @@ export function authRouter() { if (env.server.apiEnv && !env.dev.isLocal && IntercomClient) { if (newUser) { - createIntercomEvent('signed-up', user.id, function () { - redirect(res) - }) + await createIntercomEvent('signed-up', user.id) + redirect(res) } else { - createIntercomEvent('logged-in', user.id, function () { - redirect(res) - }) + await createIntercomEvent('logged-in', user.id) + redirect(res) } } else { redirect(res) diff --git a/packages/api/src/utils/intercom.ts b/packages/api/src/utils/intercom.ts index fbc3124fa..bc8ad9042 100644 --- a/packages/api/src/utils/intercom.ts +++ b/packages/api/src/utils/intercom.ts @@ -1,35 +1,23 @@ -import * as Intercom from 'intercom-client' +import { Client } from 'intercom-client' import { env } from '../env' export const IntercomClient = env.server.apiEnv && !env.dev.isLocal - ? new Intercom.Client({ - token: env.intercom.token, + ? new Client({ + tokenAuth: { token: env.intercom.token }, }) : null -IntercomClient?.useRequestOpts({ - headers: { - 'Intercom-Version': 1.4, - }, -}) - -export function createIntercomEvent( +export async function createIntercomEvent( eventName: string, - userId: string, - callback?: () => void -): void { - if (!callback) { - // eslint-disable-next-line @typescript-eslint/no-empty-function - callback = () => {} + userId: string +): Promise { + if (!IntercomClient) { + return } - if (!IntercomClient) return callback() - IntercomClient.events.create( - { - event_name: eventName, - user_id: userId, - created_at: Math.floor(Date.now() / 1000), // this is mandatory for events - }, - callback - ) + return IntercomClient.events.create({ + eventName: eventName, + userId: userId, + createdAt: Math.floor(Date.now() / 1000), // this is mandatory for events + }) }