From 6b3d521c0b495e784bad3a2cd17928973704e1bd Mon Sep 17 00:00:00 2001 From: Rui Date: Wed, 18 Sep 2024 14:26:10 -0700 Subject: [PATCH 1/2] Add user property tracking --- dydx/dydxAnalytics/dydxAnalytics/UserProperty.swift | 9 +++++++++ .../Workers/dydxPushNotificationToggleWorker.swift | 6 +++++- dydxV4/dydxV4/_Tracking/dydxCompositeTracking.swift | 6 ------ 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/dydx/dydxAnalytics/dydxAnalytics/UserProperty.swift b/dydx/dydxAnalytics/dydxAnalytics/UserProperty.swift index 81de7d05..318a4766 100644 --- a/dydx/dydxAnalytics/dydxAnalytics/UserProperty.swift +++ b/dydx/dydxAnalytics/dydxAnalytics/UserProperty.swift @@ -5,6 +5,8 @@ // Created by Michael Maguire on 8/8/24. // +import Utilities + // these should be added in firebase as user properties custom definitions https://firebase.google.com/docs/analytics/user-properties?platform=ios public enum UserProperty: String { case walletAddress @@ -15,4 +17,11 @@ public enum UserProperty: String { case subaccountNumber case statsigFlags case statsigStableId + case pushNotificationsEnabled +} + +public extension TrackingProtocol { + func setUserProperty(_ value: Any?, forUserProperty userProperty: UserProperty) { + self.setValue(value, forUserProperty: userProperty.rawValue) + } } diff --git a/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift b/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift index 0cf8ae4d..bc7a2191 100644 --- a/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift +++ b/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift @@ -11,16 +11,20 @@ import dydxStateManager import ParticlesKit import RoutingKit import Utilities +import dydxAnalytics public final class dydxPushNotificationToggleWorker: BaseWorker { public override func start() { super.start() - // Sync the app settings value to the system notification settings + // Sync the app settings value to the system notification settings and log user property changeObservation(from: nil, to: NotificationService.shared, keyPath: #keyPath(NotificationHandler.permission)) { _, _, _, _ in + let pushNotificationEnabled = NotificationService.shared?.permission == .authorized SettingsStore.shared?.setValue(pushNotificationEnabled, forKey: dydxSettingsStoreKey.shouldDisplayInAppNotifications.rawValue) + + Tracking.shared?.setUserProperty(pushNotificationEnabled, forUserProperty: .pushNotificationsEnabled) } } } diff --git a/dydxV4/dydxV4/_Tracking/dydxCompositeTracking.swift b/dydxV4/dydxV4/_Tracking/dydxCompositeTracking.swift index 7d92ed10..828ae44e 100644 --- a/dydxV4/dydxV4/_Tracking/dydxCompositeTracking.swift +++ b/dydxV4/dydxV4/_Tracking/dydxCompositeTracking.swift @@ -16,12 +16,6 @@ import dydxAnalytics import StatsigInjections import dydxFormatter -private extension TrackingProtocol { - func setUserProperty(_ value: Any?, forUserProperty userProperty: UserProperty) { - self.setValue(value, forUserProperty: userProperty.rawValue) - } -} - public class dydxCompositeTracking: CompositeTracking { private var viewEvents: DictionaryEntity? private var onboardingEvents: DictionaryEntity? From 0ae57e523397e05e2fff2499ec0d223dff93ed56 Mon Sep 17 00:00:00 2001 From: Rui Date: Wed, 18 Sep 2024 15:23:28 -0700 Subject: [PATCH 2/2] Update to "Not Now" --- .../Workers/dydxPushNotificationToggleWorker.swift | 2 +- .../dydxViews/_v4/Primers/dydxNotificationPrimerView.swift | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift b/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift index bc7a2191..52b2c254 100644 --- a/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift +++ b/dydx/dydxPresenters/dydxPresenters/_v4/GlobalWorkers/Workers/dydxPushNotificationToggleWorker.swift @@ -20,7 +20,7 @@ public final class dydxPushNotificationToggleWorker: BaseWorker { // Sync the app settings value to the system notification settings and log user property changeObservation(from: nil, to: NotificationService.shared, keyPath: #keyPath(NotificationHandler.permission)) { _, _, _, _ in - + let pushNotificationEnabled = NotificationService.shared?.permission == .authorized SettingsStore.shared?.setValue(pushNotificationEnabled, forKey: dydxSettingsStoreKey.shouldDisplayInAppNotifications.rawValue) diff --git a/dydx/dydxViews/dydxViews/_v4/Primers/dydxNotificationPrimerView.swift b/dydx/dydxViews/dydxViews/_v4/Primers/dydxNotificationPrimerView.swift index bef08158..fadb305c 100644 --- a/dydx/dydxViews/dydxViews/_v4/Primers/dydxNotificationPrimerView.swift +++ b/dydx/dydxViews/dydxViews/_v4/Primers/dydxNotificationPrimerView.swift @@ -40,7 +40,7 @@ public class dydxNotificationPrimerViewModel: PlatformViewModel { } .createView(parentStyle: style) - let cancelText = Text(DataLocalizer.localize(path: "APP.GENERAL.CANCEL", params: nil)) + let cancelText = Text(DataLocalizer.localize(path: "APP.GENERAL.NOT_NOW", params: nil)) PlatformButtonViewModel(content: cancelText.wrappedViewModel, state: .secondary) { [weak self] in self?.cancelAction?() }