chore: enrich onboarding navigation events for analytics

This commit is contained in:
Sean Hagstrom 2024-09-28 12:41:13 +01:00
parent 2357c2088f
commit ed190b592f
No known key found for this signature in database
GPG Key ID: 5257FEDF56307320
3 changed files with 32 additions and 23 deletions

View File

@ -17,7 +17,10 @@
(when-let [event (tracking/tracked-event (interceptor/get-coeffect context :event))]
(log/debug "tracking event" event)
(when (push-event? (interceptor/get-coeffect context :db))
(native-module/add-centralized-metric event)))
(cond
(and (coll? event)
(vector? event)) (doall (map native-module/add-centralized-metric event))
:else (native-module/add-centralized-metric event))))
context)
(def interceptor

View File

@ -1,7 +1,9 @@
(ns status-im.contexts.centralized-metrics.tracking
(:require
[clojure.string]
[legacy.status-im.utils.build :as build]
[react-native.platform :as platform]))
[react-native.platform :as platform]
[status-im.navigation.screens :as screens]))
(defn key-value-event
[event-name val-key value]
@ -19,36 +21,35 @@
[view-id]
(key-value-event "navigation" :viewId view-id))
(defn screen-event
[screen event-data]
(let [screen-id (:name screen)
event-id (get-in screen [:metrics :event :id] screen-id)]
{:metric
{:eventName (name event-id)
:platform platform/os
:appVersion build/app-short-version
:eventValue (assoc event-data
:viewId (name screen-id)
:viewName (-> screen-id symbol str))}}))
(def ^:const app-started-event "app-started")
(def ^:const view-ids-to-track
#{;; Tabs
:communities-stack
:chats-stack
:wallet-stack
;; Onboarding
:screen/onboarding.intro
:screen/onboarding.new-to-status
:screen/onboarding.sync-or-recover-profile
:screen/onboarding.enter-seed-phrase
:screen/onboarding.create-profile
:screen/onboarding.create-profile-password
:screen/onboarding.enable-biometrics
:screen/onboarding.generating-keys
:screen/onboarding.enable-notifications
:screen/onboarding.preparing-status
:screen/onboarding.sign-in-intro
:screen/onboarding.sign-in
:screen/onboarding.syncing-progress
:screen/onboarding.syncing-progress-intro
:screen/onboarding.syncing-results
:screen/onboarding.welcome})
:wallet-stack})
(defn track-view-id-event
[view-id]
(when (contains? view-ids-to-track view-id)
(navigation-event (name view-id))))
(let [screens-by-name screens/onboarding-screens-by-name]
(if-let [screen (get screens-by-name view-id)]
(when (get-in screen [:metrics :track?] false)
[(navigation-event (name view-id))
(screen-event screen {})])
(when (contains? view-ids-to-track view-id)
(navigation-event (name view-id))))))
(defn tracked-event
[[event-name second-parameter]]

View File

@ -1,6 +1,7 @@
(ns status-im.navigation.screens
(:require
[legacy.status-im.ui.screens.screens :as old-screens]
[legacy.status-im.utils.core :as utils]
[quo.foundations.colors :as colors]
[status-im.common.emoji-picker.view :as emoji-picker]
[status-im.common.enter-seed-phrase.view :as enter-seed-phrase]
@ -532,6 +533,7 @@
(def onboarding-new-to-status
{:name :screen/onboarding.new-to-status
:metrics {:flow :onboarding
:event {:id :onboarding.create-profile}
:track? true}
:options {:theme :dark
:layout options/onboarding-transparent-layout
@ -715,6 +717,9 @@
onboarding-syncing-progress-intro
onboarding-syncing-results])
(def onboarding-screens-by-name
(utils/index-by :name (onboarding-screens)))
;; ## All Screens
(defn screens