From ab96bb09aba9d450c5290bab2a117f74345f8c11 Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 2 May 2022 20:41:10 -0700 Subject: [PATCH 1/2] Add more detailed analytics for saving. Remove intercom events --- packages/api/src/resolvers/article/index.ts | 6 --- .../resolvers/article_saving_request/index.ts | 16 +++++++- packages/api/src/resolvers/save/index.ts | 37 +++++++++++++++++-- packages/api/src/routers/auth/auth_router.ts | 2 - 4 files changed, 49 insertions(+), 12 deletions(-) diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index d857cc31d..378af64c2 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -144,7 +144,6 @@ export const createArticleResolver = authorized< env: env.server.apiEnv, }, }) - await createIntercomEvent('link-saved', uid) const user = userDataToUser(await models.user.get(uid)) try { @@ -424,7 +423,6 @@ export const getArticleResolver: ResolverFn< env: env.server.apiEnv, }, }) - await createIntercomEvent('get-article', claims.uid) const page = await getPageByParam({ userId: claims.uid, slug }) if (!page) { @@ -481,8 +479,6 @@ export const getArticlesResolver = authorized< }, }) - await createIntercomEvent('get_articles', claims.uid) - const [pages, totalCount] = (await searchPages( { from: Number(startCursor), @@ -844,8 +840,6 @@ export const searchResolver = authorized< }, }) - await createIntercomEvent('search', claims.uid) - let results: (SearchItemData | Page)[] let totalCount: number diff --git a/packages/api/src/resolvers/article_saving_request/index.ts b/packages/api/src/resolvers/article_saving_request/index.ts index 44b2112ba..dd6373028 100644 --- a/packages/api/src/resolvers/article_saving_request/index.ts +++ b/packages/api/src/resolvers/article_saving_request/index.ts @@ -14,13 +14,27 @@ import { createPageSaveRequest } from '../../services/create_page_save_request' import { createIntercomEvent } from '../../utils/intercom' import { getPageById } from '../../elastic/pages' import { isErrorWithCode } from '../user' +import { analytics } from '../../utils/analytics' +import { env } from '../../env' +import { inputRule } from 'graphql-shield' + export const createArticleSavingRequestResolver = authorized< CreateArticleSavingRequestSuccess, CreateArticleSavingRequestError, MutationCreateArticleSavingRequestArgs >(async (_, { input: { url } }, { models, claims, pubsub }) => { - await createIntercomEvent('link-save-request', claims.uid) + + analytics.track({ + userId: claims.uid, + event: 'link_saved', + properties: { + url: url, + method: 'article_saving_request', + env: env.server.apiEnv, + }, + }) + try { const request = await createPageSaveRequest(claims.uid, url, models, pubsub) return { diff --git a/packages/api/src/resolvers/save/index.ts b/packages/api/src/resolvers/save/index.ts index 37e35e4bd..a223aef55 100644 --- a/packages/api/src/resolvers/save/index.ts +++ b/packages/api/src/resolvers/save/index.ts @@ -11,6 +11,8 @@ import { saveUrl } from '../../services/save_url' import { saveFile } from '../../services/save_file' import { authorized, userDataToUser } from '../../utils/helpers' import { createIntercomEvent } from '../../utils/intercom' +import { analytics } from '../../utils/analytics' +import { env } from '../../env' export const savePageResolver = authorized< SaveSuccess, @@ -21,7 +23,16 @@ export const savePageResolver = authorized< models, claims: { uid }, } = ctx - await createIntercomEvent('link-saved', uid) + analytics.track({ + userId: uid, + event: 'link_saved', + properties: { + url: input.url, + method: 'page', + source: input.source, + env: env.server.apiEnv, + }, + }) const user = userDataToUser(await models.user.get(uid)) if (!user) { @@ -44,7 +55,17 @@ export const saveUrlResolver = authorized< models, claims: { uid }, } = ctx - await createIntercomEvent('link-saved', uid) + + analytics.track({ + userId: uid, + event: 'link_saved', + properties: { + url: input.url, + method: 'url', + source: input.source, + env: env.server.apiEnv, + }, + }) const user = userDataToUser(await models.user.get(uid)) if (!user) { @@ -63,7 +84,17 @@ export const saveFileResolver = authorized< models, claims: { uid }, } = ctx - await createIntercomEvent('link-saved', uid) + + analytics.track({ + userId: uid, + event: 'link_saved', + properties: { + url: input.url, + method: 'file', + source: input.source, + env: env.server.apiEnv, + }, + }) 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 5bb2bfc2f..8aca87e3c 100644 --- a/packages/api/src/routers/auth/auth_router.ts +++ b/packages/api/src/routers/auth/auth_router.ts @@ -333,10 +333,8 @@ export function authRouter() { if (env.server.apiEnv && !env.dev.isLocal && IntercomClient) { if (newUser) { - await createIntercomEvent('signed-up', user.id) redirect(res) } else { - await createIntercomEvent('logged-in', user.id) redirect(res) } } else { From 95b163a437d9ce119a66dcd1365418a39aef150b Mon Sep 17 00:00:00 2001 From: Jackson Harper Date: Mon, 2 May 2022 20:58:05 -0700 Subject: [PATCH 2/2] Prettier clean up --- packages/api/src/resolvers/article/index.ts | 1 - packages/api/src/resolvers/article_saving_request/index.ts | 4 ---- packages/api/src/resolvers/save/index.ts | 1 - packages/api/src/routers/auth/auth_router.ts | 2 +- packages/web/components/templates/homeFeed/AddLinkModal.tsx | 2 +- 5 files changed, 2 insertions(+), 8 deletions(-) diff --git a/packages/api/src/resolvers/article/index.ts b/packages/api/src/resolvers/article/index.ts index 378af64c2..230cdefb8 100644 --- a/packages/api/src/resolvers/article/index.ts +++ b/packages/api/src/resolvers/article/index.ts @@ -66,7 +66,6 @@ import { WithDataSourcesContext } from '../types' import { parseSearchQuery } from '../../utils/search' import { createPageSaveRequest } from '../../services/create_page_save_request' -import { createIntercomEvent } from '../../utils/intercom' import { analytics } from '../../utils/analytics' import { env } from '../../env' diff --git a/packages/api/src/resolvers/article_saving_request/index.ts b/packages/api/src/resolvers/article_saving_request/index.ts index dd6373028..d4a542fb5 100644 --- a/packages/api/src/resolvers/article_saving_request/index.ts +++ b/packages/api/src/resolvers/article_saving_request/index.ts @@ -11,20 +11,16 @@ import { } from '../../generated/graphql' import { authorized, pageToArticleSavingRequest } from '../../utils/helpers' import { createPageSaveRequest } from '../../services/create_page_save_request' -import { createIntercomEvent } from '../../utils/intercom' import { getPageById } from '../../elastic/pages' import { isErrorWithCode } from '../user' import { analytics } from '../../utils/analytics' import { env } from '../../env' -import { inputRule } from 'graphql-shield' - export const createArticleSavingRequestResolver = authorized< CreateArticleSavingRequestSuccess, CreateArticleSavingRequestError, MutationCreateArticleSavingRequestArgs >(async (_, { input: { url } }, { models, claims, pubsub }) => { - analytics.track({ userId: claims.uid, event: 'link_saved', diff --git a/packages/api/src/resolvers/save/index.ts b/packages/api/src/resolvers/save/index.ts index a223aef55..ea6960049 100644 --- a/packages/api/src/resolvers/save/index.ts +++ b/packages/api/src/resolvers/save/index.ts @@ -10,7 +10,6 @@ import { savePage } from '../../services/save_page' import { saveUrl } from '../../services/save_url' import { saveFile } from '../../services/save_file' import { authorized, userDataToUser } from '../../utils/helpers' -import { createIntercomEvent } from '../../utils/intercom' import { analytics } from '../../utils/analytics' import { env } from '../../env' diff --git a/packages/api/src/routers/auth/auth_router.ts b/packages/api/src/routers/auth/auth_router.ts index 8aca87e3c..147530351 100644 --- a/packages/api/src/routers/auth/auth_router.ts +++ b/packages/api/src/routers/auth/auth_router.ts @@ -19,7 +19,7 @@ import express from 'express' import axios from 'axios' import { env } from '../../env' import url from 'url' -import { createIntercomEvent, IntercomClient } from '../../utils/intercom' +import { IntercomClient } from '../../utils/intercom' import { kx } from '../../datalayer/knex_config' import UserModel from '../../datalayer/user' import { buildLogger } from '../../utils/logger' diff --git a/packages/web/components/templates/homeFeed/AddLinkModal.tsx b/packages/web/components/templates/homeFeed/AddLinkModal.tsx index 162eb147c..baff29452 100644 --- a/packages/web/components/templates/homeFeed/AddLinkModal.tsx +++ b/packages/web/components/templates/homeFeed/AddLinkModal.tsx @@ -23,7 +23,7 @@ export function AddLinkModal(props: AddLinkModalProps): JSX.Element { const [link, setLink] = useState('') const handleLinkSubmission = useCallback(async (link: string) => { - const result = await createArticleFromURLMutation({ url: link }) + const result = await saveUrlMutation(link) // const result = await saveUrlMutation(link) if (result && result.jobId) { // eslint-disable-next-line @typescript-eslint/no-unused-vars