Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Cherry pick to release branch #20963

Merged
merged 4 commits into from
Aug 6, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion src/status_im/contexts/centralized_metrics/events.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,3 @@
#(rf/dispatch [:profile.login/login-with-biometric-if-available
(get-in db [:profile/login :key-uid])]))
:shell? true}]]]})))

56 changes: 40 additions & 16 deletions src/status_im/contexts/centralized_metrics/tracking.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -3,37 +3,61 @@
[legacy.status-im.utils.build :as build]
[react-native.platform :as platform]))

(defn user-journey-event
[action]
(defn key-value-event
[event-name val-key value]
{:metric
{:eventName "user-journey"
{:eventName event-name
:platform platform/os
:appVersion build/app-short-version
:eventValue {:action action}}})
:eventValue {val-key value}}})

(defn user-journey-event
[action]
(key-value-event "user-journey" :action action))

(defn navigation-event
[view-id]
(key-value-event "navigation" :viewId view-id))

(def ^:const app-started-event "app-started")
(def ^:const navigate-to-create-profile-event "navigate-to-create-profile")
(def ^:const communities-tab-clicked "communities-tab-clicked")
(def ^:const wallet-tab-clicked "wallet-tab-clicked")
(def ^:const chats-tab-clicked "chats-tab-clicked")

(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.sign-in-intro
:screen/onboarding.sign-in
:screen/onboarding.syncing-progress
:screen/onboarding.syncing-progress-intro
:screen/onboarding.syncing-results
:screen/onboarding.welcome})

(defn track-view-id-event
[view-id]
(case view-id
:communities-stack (user-journey-event communities-tab-clicked)
:chats-stack (user-journey-event chats-tab-clicked)
:wallet-stack (user-journey-event wallet-tab-clicked)
nil))
(when (contains? view-ids-to-track view-id)
(navigation-event (name view-id))))

(defn tracked-event
[[event-name second-parameter]]
(case event-name
:onboarding/navigate-to-create-profile
(user-journey-event navigate-to-create-profile-event)

:profile/get-profiles-overview-success
(user-journey-event app-started-event)

:centralized-metrics/toggle-centralized-metrics
(key-value-event "events.metrics-enabled" :enabled second-parameter)

:set-view-id
(track-view-id-event second-parameter)

Expand Down
76 changes: 60 additions & 16 deletions src/status_im/contexts/centralized_metrics/tracking_test.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -5,31 +5,75 @@
[react-native.platform :as platform]
[status-im.contexts.centralized-metrics.tracking :as tracking]))

(def platform-os platform/os)
(def app-version build/app-short-version)

(deftest key-value-event-test
(testing "creates correct key-value event"
(let [event-name "test-event"
val-key :test-key
value "test-value"
expected {:metric
{:eventName event-name
:platform platform-os
:appVersion app-version
:eventValue {val-key value}}}]
(is (= expected (tracking/key-value-event event-name val-key value))))))

(deftest user-journey-event-test
(testing "creates correct metric event"
(let [action "some-action"
expected {:metric {:eventName "user-journey"
:platform platform/os
:appVersion build/app-short-version
:eventValue {:action action}}}]
(testing "creates correct user journey event"
(let [action "test-action"
expected {:metric
{:eventName "user-journey"
:platform platform-os
:appVersion app-version
:eventValue {:action action}}}]
(is (= expected (tracking/user-journey-event action))))))

(deftest navigation-event-test
(testing "creates correct navigation event"
(let [view-id :test-view-id
expected {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId view-id}}}]
(is (= expected (tracking/navigation-event view-id))))))

(deftest track-view-id-event-test
(testing "returns correct event for view-id"
(is (= (tracking/user-journey-event tracking/communities-tab-clicked)
(testing "returns correct navigation event for view-id"
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "communities-stack"}}}
(tracking/track-view-id-event :communities-stack)))
(is (= (tracking/user-journey-event tracking/chats-tab-clicked)
(tracking/track-view-id-event :chats-stack)))
(is (= (tracking/user-journey-event tracking/wallet-tab-clicked)
(tracking/track-view-id-event :wallet-stack)))
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "onboarding.create-profile"}}}
(tracking/track-view-id-event :screen/onboarding.create-profile)))
(is (nil? (tracking/track-view-id-event :unknown-stack)))))

(deftest tracked-event-test
(testing "returns correct event for given inputs"
(is (= (tracking/user-journey-event tracking/navigate-to-create-profile-event)
(tracking/tracked-event [:onboarding/navigate-to-create-profile])))
(is (= (tracking/user-journey-event tracking/app-started-event)
(is (= {:metric
{:eventName "user-journey"
:platform platform-os
:appVersion app-version
:eventValue {:action tracking/app-started-event}}}
(tracking/tracked-event [:profile/get-profiles-overview-success])))
(is (= (tracking/track-view-id-event :wallet-stack)
(is (= {:metric
{:eventName "events.metrics-enabled"
:platform platform-os
:appVersion app-version
:eventValue {:enabled true}}}
(tracking/tracked-event [:centralized-metrics/toggle-centralized-metrics true])))
(is (= {:metric
{:eventName "navigation"
:platform platform-os
:appVersion app-version
:eventValue {:viewId "wallet-stack"}}}
(tracking/tracked-event [:set-view-id :wallet-stack])))
(is (nil? (tracking/tracked-event [:unknown-event])))))
13 changes: 7 additions & 6 deletions src/status_im/contexts/wallet/home/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,13 @@
:label (i18n/label :t/add-account)
:sub-label (i18n/label :t/add-account-description)
:on-press #(rf/dispatch [:navigate-to :screen/wallet.create-account])}
{:icon :i/reveal
:accessibility-label :add-a-contact
:label (i18n/label :t/add-address-to-watch)
:sub-label (i18n/label :t/add-address-to-watch-description)
:on-press #(rf/dispatch [:navigate-to :screen/wallet.add-address-to-watch])
:add-divider? true}]]])
(when (ff/enabled? ::ff/wallet.add-watched-address)
{:icon :i/reveal
:accessibility-label :add-a-contact
:label (i18n/label :t/add-address-to-watch)
:sub-label (i18n/label :t/add-address-to-watch-description)
:on-press #(rf/dispatch [:navigate-to :screen/wallet.add-address-to-watch])
:add-divider? true})]]])

(defn- new-account-card-data
[]
Expand Down
7 changes: 6 additions & 1 deletion src/status_im/contexts/wallet/send/events.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@
{:db (cond-> db
:always (update-in [:wallet :ui :send]
#(-> %
(dissoc :collectible)
(dissoc :collectible :tx-type)
(assoc :token-not-supported-in-receiver-networks?
unsupported-token?)))
token-symbol (assoc-in [:wallet :ui :send :token-symbol] token-symbol)
Expand All @@ -217,6 +217,11 @@
entry-point (assoc-in [:wallet :ui :send :entry-point] entry-point))
:fx [[:dispatch [:wallet/clean-suggested-routes]]
[:dispatch
;; ^:flush-dom allows us to make sure the re-frame DB state is always synced
;; before the navigation occurs, so the new screen is always rendered with
;; the DB state set by this event. By adding the metadata we are omitting
;; a 1-frame blink when the screen is mounted.
^:flush-dom
[:wallet/wizard-navigate-forward
{:current-screen stack-id
:start-flow? start-flow?
Expand Down
1 change: 1 addition & 0 deletions src/status_im/feature_flags.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
:FLAG_WALLET_SETTINGS_IMPORT_ALL_KEYPAIRS)
::shell.jump-to (enabled-in-env? :ENABLE_JUMP_TO)

::wallet.add-watched-address (enabled-in-env? :FLAG_ADD_WATCHED_ADDRESS)
::wallet.advanced-sending (enabled-in-env? :FLAG_ADVANCED_SENDING)
::wallet.assets-modal-hide (enabled-in-env? :FLAG_ASSETS_MODAL_HIDE)
::wallet.assets-modal-manage-tokens (enabled-in-env? :FLAG_ASSETS_MODAL_MANAGE_TOKENS)
Expand Down
4 changes: 2 additions & 2 deletions status-go-version.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,6 @@
"owner": "status-im",
"repo": "status-go",
"version": "release/0.182.x",
"commit-sha1": "7e87fd0d059539abc0f9525b4347e5926783b762",
"src-sha256": "0i9jij2vkh055m522x1ivv80b5q0qbq3rbh9m6xhah31jx5kwnwh"
"commit-sha1": "8ff95326c49b06b4bc0bbf01a4dea1dab96945a5",
"src-sha256": "1nwa21n6r831b28qcl7n4fx5v0qmrihiazzirsxca3x0xw3x4caj"
}
1 change: 1 addition & 0 deletions test/appium/tests/critical/test_wallet.py
Original file line number Diff line number Diff line change
Expand Up @@ -240,6 +240,7 @@ def test_wallet_add_remove_regular_account(self):
self.errors.verify_no_errors()

@marks.testrail_id(727232)
@marks.skip("The feature is disabled in https://github.com/status-im/status-mobile/pull/20955")
@marks.xfail(reason="Missing networks in account address, https://github.com/status-im/status-mobile/issues/20166")
def test_wallet_add_remove_watch_only_account(self):
self.wallet_view.just_fyi("Adding new watch only account")
Expand Down