From a14cae022d1bbb7f2a98f0ec88672394273d8eb0 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 16 Oct 2024 12:13:46 +0100 Subject: [PATCH 1/3] feat(fe2): adds viewer receive events for better workflow metrics --- .../lib/viewer/composables/setup/postSetup.ts | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts index 9a3f0fd9d..92d349b2b 100644 --- a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts +++ b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts @@ -52,6 +52,7 @@ import { setupDebugMode } from '~~/lib/viewer/composables/setup/dev' import type { Reference } from '@apollo/client' import type { Modifier } from '@apollo/client/cache' import { useEmbed } from '~/lib/viewer/composables/setup/embed' +import { useMixpanel } from '~~/lib/core/composables/mp' function useViewerIsBusyEventHandler() { const state = useInjectedViewerState() @@ -154,6 +155,33 @@ function useViewerObjectAutoLoading() { }) } +function useViewerReceiveTracking() { + // Here we make the viewer pretend it's a connector and send out receive events. + // Note, this is important for us to track to be able to get a picture of how much data is consumed + // in our viewer. + const { + resources: { + response: { modelsAndVersionIds } + } + } = useInjectedViewerState() + const mixpanel = useMixpanel() + const { userId } = useActiveUser() + const receivedVersions = new Set() + watch(modelsAndVersionIds, (newVal) => { + for (const { model, versionId } of newVal) { + if (receivedVersions.has(versionId)) { + continue + } + receivedVersions.add(versionId) + mixpanel.track('Receive', { + hostApp: 'viewer', + sourceHostApp: model.loadedVersion.items[0].sourceApplication, + isMultiplayer: model.loadedVersion.items[0].authorUser?.id !== userId.value + }) + } + }) +} + /** * Listening to model/version updates through subscriptions and making various * cache updates so that we don't need to always refetch queries @@ -791,6 +819,7 @@ function useDisableZoomOnEmbed() { export function useViewerPostSetup() { if (import.meta.server) return useViewerObjectAutoLoading() + useViewerReceiveTracking() useViewerSelectionEventHandler() useViewerIsBusyEventHandler() useViewerSubscriptionEventTracker() @@ -805,4 +834,5 @@ export function useViewerPostSetup() { useViewerMeasurementIntegration() useDisableZoomOnEmbed() setupDebugMode() + // TODO: add here the use receive tracking } From c8ca4e5142b3f2e4fff5278cddf4087945180827 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 16 Oct 2024 12:15:33 +0100 Subject: [PATCH 2/3] chore(fe2): comment --- .../frontend-2/lib/viewer/composables/setup/postSetup.ts | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts index 92d349b2b..73f922160 100644 --- a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts +++ b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts @@ -155,10 +155,12 @@ function useViewerObjectAutoLoading() { }) } +/** + * Here we make the viewer pretend it's a connector and send out receive events. Note, this is important for us to track to be able to get a picture of how much data is consumed + * in our viewer. + */ function useViewerReceiveTracking() { - // Here we make the viewer pretend it's a connector and send out receive events. - // Note, this is important for us to track to be able to get a picture of how much data is consumed - // in our viewer. + // const { resources: { response: { modelsAndVersionIds } From f7dcde74ea34dc1dd74f57d2bba2b5171c9eb0f0 Mon Sep 17 00:00:00 2001 From: Dimitrie Stefanescu Date: Wed, 16 Oct 2024 12:17:59 +0100 Subject: [PATCH 3/3] chore(fe2): removes unecessary comment --- packages/frontend-2/lib/viewer/composables/setup/postSetup.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts index 73f922160..b57200c6d 100644 --- a/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts +++ b/packages/frontend-2/lib/viewer/composables/setup/postSetup.ts @@ -836,5 +836,4 @@ export function useViewerPostSetup() { useViewerMeasurementIntegration() useDisableZoomOnEmbed() setupDebugMode() - // TODO: add here the use receive tracking }