@@ -23,46 +23,71 @@ class AXSManager: AXSAuthorizer, PrivacyListener {
2323 private let privacyService : PrivacyService
2424
2525 private var userID = PersistedValue < String > ( storageKey: " io.rover.axs " )
26-
26+ private var flashMemberID = PersistedValue < String > ( storageKey: " io.rover.axs.flashMemberID " )
27+ private var flashMobileID = PersistedValue < String > ( storageKey: " io.rover.axs.flashMobileID " )
28+
2729 private var axsUserInfo : [ String : String ] ? {
28- guard let userID = self . userID. value else {
29- return nil
30+ var dictionary = [ String: String] ( )
31+
32+ if let userID = self . userID. value {
33+ dictionary [ " userID " ] = userID
34+ }
35+
36+ if let flashMemberID = self . flashMemberID. value {
37+ dictionary [ " flashMemberID " ] = flashMemberID
38+ }
39+
40+ if let flashMobileID = self . flashMobileID. value {
41+ dictionary [ " flashMobileID " ] = flashMobileID
3042 }
3143
32- return [ " userID " : userID ]
44+ return dictionary
3345 }
34-
46+
3547 init ( userInfoManager: UserInfoManager , privacyService: PrivacyService ) {
3648 self . userInfoManager = userInfoManager
3749 self . privacyService = privacyService
3850 }
3951
4052// MARK: AxsAuthorizer
41-
53+
4254 func setUserId( _ id: String ) {
55+ setUserID ( id, flashMemberID: nil , flashMobileID: nil )
56+ }
57+
58+ func setUserID( _ userID: String ? , flashMemberID: String ? , flashMobileID: String ? ) {
4359 guard privacyService. trackingMode == . default else {
4460 return
4561 }
4662
47- self . userID. value = id
63+ guard let userID else {
64+ clearCredentials ( )
65+ return
66+ }
67+
68+ self . userID. value = userID
69+ self . flashMemberID. value = flashMemberID
70+ self . flashMobileID. value = flashMobileID
71+
72+ guard let userInfo = axsUserInfo else {
73+ return
74+ }
75+
76+ updateUserInfo ( userInfo)
4877
49- if let userInfo = axsUserInfo {
50- self . userInfoManager. updateUserInfo {
51- if let existingAxsUserInfo = $0. rawValue [ " axs " ] as? Attributes {
52- // axs data already exists, just clobber it:
53- $0. rawValue [ " axs " ] = Attributes ( rawValue: existingAxsUserInfo. rawValue. merging ( userInfo) { $1 } )
54- } else {
55- // axs data does not already exist, so set it:
56- $0. rawValue [ " axs " ] = Attributes ( rawValue: userInfo)
57- }
58- }
59-
60- os_log ( " AXSID has been set: %s " , log: . general, userID. value!)
78+ os_log ( " AXS IDs have been set. user ID: %s, flashMemberID: %s, flashMobileID: %s " , log: . general, userID, flashMemberID ?? " nil " , flashMobileID ?? " nil " )
79+ }
80+
81+ private func updateUserInfo( _ userInfo: [ String : String ] ) {
82+ self . userInfoManager. updateUserInfo {
83+ $0. rawValue [ " axs " ] = Attributes ( rawValue: userInfo)
6184 }
6285 }
63-
86+
6487 func clearCredentials( ) {
6588 self . userID. value = nil
89+ self . flashMemberID. value = nil
90+ self . flashMobileID. value = nil
6691 self . userInfoManager. updateUserInfo { attributes in
6792 attributes. rawValue [ " axs " ] = nil
6893 }
@@ -72,7 +97,7 @@ class AXSManager: AXSAuthorizer, PrivacyListener {
7297
7398 func trackingModeDidChange( _ trackingMode: PrivacyService . TrackingMode ) {
7499 if ( trackingMode != . default) {
75- os_log ( " Tracking disabled, axs data cleared " , log: . axs)
100+ os_log ( " Tracking disabled, AXS data cleared " , log: . axs)
76101 clearCredentials ( )
77102 }
78103 }
0 commit comments