diff --git a/src/status_im/contexts/centralized_metrics/events.cljs b/src/status_im/contexts/centralized_metrics/events.cljs index 431e1ccead..b93fa1ad11 100644 --- a/src/status_im/contexts/centralized_metrics/events.cljs +++ b/src/status_im/contexts/centralized_metrics/events.cljs @@ -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 diff --git a/src/status_im/contexts/centralized_metrics/tracking.cljs b/src/status_im/contexts/centralized_metrics/tracking.cljs index 9712989402..8b30c64b1b 100644 --- a/src/status_im/contexts/centralized_metrics/tracking.cljs +++ b/src/status_im/contexts/centralized_metrics/tracking.cljs @@ -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]] diff --git a/src/status_im/navigation/screens.cljs b/src/status_im/navigation/screens.cljs index 577fabcdb9..84ac31c1d1 100644 --- a/src/status_im/navigation/screens.cljs +++ b/src/status_im/navigation/screens.cljs @@ -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