@@ -24,11 +24,7 @@ public class TracksProvider: AnalyticsProvider {
2424//
2525public extension TracksProvider {
2626 func refreshUserData( ) {
27- if StoresManager . shared. isAuthenticated, let account = StoresManager . shared. sessionManager. defaultAccount {
28- tracksService. switchToAuthenticatedUser ( withUsername: account. username, userID: String ( account. userID) , skipAliasEventCreation: true )
29- } else {
30- tracksService. switchToAnonymousUser ( withAnonymousID: StoresManager . shared. sessionManager. anonymousUserID)
31- }
27+ switchTracksUsersIfNeeded ( )
3228 refreshMetadata ( )
3329 }
3430
@@ -51,6 +47,27 @@ public extension TracksProvider {
5147// MARK: - Private Helpers
5248//
5349private extension TracksProvider {
50+ func switchTracksUsersIfNeeded( ) {
51+ let currentAnalyticsUsername = UserDefaults . standard [ . analyticsUsername] as? String ?? " "
52+ if StoresManager . shared. isAuthenticated, let account = StoresManager . shared. sessionManager. defaultAccount {
53+ if currentAnalyticsUsername. isEmpty {
54+ // No previous username logged
55+ UserDefaults . standard [ . analyticsUsername] = account. username
56+ tracksService. switchToAuthenticatedUser ( withUsername: account. username, userID: String ( account. userID) , skipAliasEventCreation: false )
57+ } else if currentAnalyticsUsername == account. username {
58+ // Username did not change - just make sure Tracks client has it
59+ tracksService. switchToAuthenticatedUser ( withUsername: account. username, userID: String ( account. userID) , skipAliasEventCreation: true )
60+ } else {
61+ // Username changed for some reason - switch back to anonymous first
62+ tracksService. switchToAnonymousUser ( withAnonymousID: StoresManager . shared. sessionManager. anonymousUserID)
63+ tracksService. switchToAuthenticatedUser ( withUsername: account. username, userID: String ( account. userID) , skipAliasEventCreation: false )
64+ }
65+ } else {
66+ UserDefaults . standard [ . analyticsUsername] = nil
67+ tracksService. switchToAnonymousUser ( withAnonymousID: StoresManager . shared. sessionManager. anonymousUserID)
68+ }
69+ }
70+
5471 func refreshMetadata( ) {
5572 DDLogInfo ( " ♻️ Refreshing tracks metadata... " )
5673 var userProperties = [ String: Any] ( )
0 commit comments