From 2e8f10ab6486fa4b9ef9887788b4cf0028512c40 Mon Sep 17 00:00:00 2001 From: Barak Gila Date: Mon, 26 Sep 2022 14:31:53 -0700 Subject: [PATCH] extract to separate file --- web/lib/service/analytics.ts | 39 ++++-------------------------------- web/lib/service/sprig.ts | 30 +++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 35 deletions(-) create mode 100644 web/lib/service/sprig.ts diff --git a/web/lib/service/analytics.ts b/web/lib/service/analytics.ts index df3338f0..7ebc2495 100644 --- a/web/lib/service/analytics.ts +++ b/web/lib/service/analytics.ts @@ -6,43 +6,14 @@ import { Identify, } from '@amplitude/analytics-browser' +import * as Sprig from 'web/lib/service/sprig' + import { ENV_CONFIG } from 'common/envs/constants' init(ENV_CONFIG.amplitudeApiKey ?? '', undefined, { includeReferrer: true }) export { track } -// Integrate Sprig - -try { - ;(function (l, e, a, p) { - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - if (window.Sprig) return - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - window.Sprig = function (...args) { - S._queue.push(args) - } - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - const S = window.Sprig - S.appId = a - S._queue = [] - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - window.UserLeap = S - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - a = l.createElement('script') - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - a.async = 1 - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - a.src = e + '?id=' + S.appId - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - p = l.getElementsByTagName('script')[0] - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - p.parentNode.insertBefore(a, p) - })(document, 'https://cdn.sprig.com/shim.js', ENV_CONFIG.sprigEnvironmentId) -} catch (error) { - console.log('Error initializing Sprig, please complain to Barak', error) -} - // Convenience functions: export const trackCallback = @@ -64,14 +35,12 @@ export const withTracking = export async function identifyUser(userId: string) { setUserId(userId) - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - window.Sprig.setUserId(userId) + Sprig.setUserId(userId) } export async function setUserProperty(property: string, value: string) { const identifyObj = new Identify() identifyObj.set(property, value) await identify(identifyObj) - // @ts-expect-error Sprig doesn't yet have a native typescript snippet - window.Sprig.setAttribute(property, value) + Sprig.setAttributes(identifyObj) } diff --git a/web/lib/service/sprig.ts b/web/lib/service/sprig.ts new file mode 100644 index 00000000..db75a2ce --- /dev/null +++ b/web/lib/service/sprig.ts @@ -0,0 +1,30 @@ +// @ts-nocheck +// Integrate Sprig + +try { + ;(function (l, e, a, p) { + if (window.Sprig) return + window.Sprig = function (...args) { + S._queue.push(args) + } + const S = window.Sprig + S.appId = a + S._queue = [] + window.UserLeap = S + a = l.createElement('script') + a.async = 1 + a.src = e + '?id=' + S.appId + p = l.getElementsByTagName('script')[0] + p.parentNode.insertBefore(a, p) + })(document, 'https://cdn.sprig.com/shim.js', ENV_CONFIG.sprigEnvironmentId) +} catch (error) { + console.log('Error initializing Sprig, please complain to Barak', error) +} + +export function setUserId(userId: string): void { + window.Sprig.setUserId(userId) +} + +export function setAttributes(attributes: Object): void { + window.Sprig.setAttributes(attributes) +} \ No newline at end of file