Anon metrics transfer
Saving my initial noodling Saving my initial noodling Filtering working much better, data collection working better Added jsonrpc call params Added transformations ns and funcs whitelisting the new rpc method Addressed PR feedback Fix lint Add reasons to why txf ns exists Transform event instead of the contexts Signed-off-by: Shivek Khurana <shivek@status.im>
This commit is contained in:
parent
a99e7f660f
commit
2abd430e02
|
@ -0,0 +1,27 @@
|
|||
(ns status-im.anon-metrics.interceptors
|
||||
(:require [status-im.ethereum.json-rpc :as json-rpc]
|
||||
[taoensso.timbre :as log]
|
||||
[re-frame.interceptor :refer [->interceptor]]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.build :as build]
|
||||
[status-im.anon-metrics.transformers :as txf]))
|
||||
|
||||
(defn transform-and-log [context]
|
||||
(log/info :catch-event-fn (get-in context [:coeffects :event]))
|
||||
(when-let [transformed-payload (txf/transform context)]
|
||||
(json-rpc/call {:method "appmetrics_saveAppMetrics"
|
||||
:params [[{:event (-> context :coeffects :event first)
|
||||
:value transformed-payload
|
||||
:app_version build/version
|
||||
:os platform/os}]]
|
||||
:on-failure log/error})))
|
||||
|
||||
(defn catch-events-before [context]
|
||||
(log/info "catch-events/interceptor fired")
|
||||
(transform-and-log context)
|
||||
context)
|
||||
|
||||
(def catch-events
|
||||
(->interceptor
|
||||
:id :catch-events
|
||||
:before catch-events-before))
|
|
@ -0,0 +1,17 @@
|
|||
(ns status-im.anon-metrics.transformers
|
||||
"`status-go` defines the shape of expected events so that we don't overcollect data (by mistake or intentionally).
|
||||
`transformers` ns transform the event payload to match the expected shape on `status-go` side.")
|
||||
|
||||
(defn navigate-to-txf [event]
|
||||
{:view-id (second event)
|
||||
:params (-> event
|
||||
(nth 2)
|
||||
(select-keys [:screen]))})
|
||||
|
||||
(def transformations
|
||||
{:navigate-to navigate-to-txf})
|
||||
|
||||
(defn transform [ctx]
|
||||
(let [event (-> ctx :coeffects :event)]
|
||||
(when-let [txf (-> event first transformations)]
|
||||
(txf event))))
|
|
@ -178,7 +178,8 @@
|
|||
"mailservers_addChatRequestRange" {}
|
||||
"mailservers_addChatRequestRanges" {}
|
||||
"mailservers_getChatRequestRanges" {}
|
||||
"mailservers_deleteChatRequestRange" {}})
|
||||
"mailservers_deleteChatRequestRange" {}
|
||||
"appmetrics_saveAppMetrics" {}})
|
||||
|
||||
(defn on-error-retry
|
||||
[call-method {:keys [method number-of-retries delay on-error] :as arg}]
|
||||
|
|
|
@ -2,7 +2,8 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.ui.screens.routing.core :as navigation]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.utils.fx :as fx]))
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.anon-metrics.interceptors :as anon-metrics]))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::navigate-to
|
||||
|
@ -44,7 +45,8 @@
|
|||
::navigate-to [go-to-view-id screen-params]})
|
||||
|
||||
(fx/defn navigate-to
|
||||
{:events [:navigate-to]}
|
||||
{:events [:navigate-to]
|
||||
:interceptors [anon-metrics/catch-events]}
|
||||
[cofx go-to-view-id screen-params]
|
||||
(navigate-to-cofx cofx go-to-view-id screen-params))
|
||||
|
||||
|
@ -59,7 +61,8 @@
|
|||
{::navigate-reset config})
|
||||
|
||||
(fx/defn navigate-replace
|
||||
{:events [:navigate-replace]}
|
||||
{:events [:navigate-replace]
|
||||
:interceptors [anon-metrics/catch-events]}
|
||||
[{:keys [db]} go-to-view-id screen-params]
|
||||
(let [db (cond-> (assoc db :view-id go-to-view-id)
|
||||
(seq screen-params)
|
||||
|
|
Loading…
Reference in New Issue