Skip to content

Commit 28f1524

Browse files
authored
Merge pull request #845 from Iterable/evan/MOB-9974
[MOB-9974] fix event replay from visitor to known user
2 parents 0561323 + cd981cb commit 28f1524

File tree

5 files changed

+633
-524
lines changed

5 files changed

+633
-524
lines changed

swift-sdk/Internal/AnonymousUserManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -143,7 +143,7 @@ public class AnonymousUserManager: AnonymousUserManagerProtocol {
143143
}
144144

145145
// Syncs locally saved data through track APIs
146-
private func syncEvents() {
146+
public func syncEvents() {
147147
let events = localStorage.anonymousUserEvents
148148
var successfulSyncedData: [Int] = []
149149

swift-sdk/Internal/AnonymousUserManagerProtocol.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ import Foundation
1313
func trackAnonUpdateUser(_ dataFields: [AnyHashable: Any])
1414
func updateAnonSession()
1515
func getAnonCriteria()
16-
func syncNonSyncedEvents()
16+
func syncEvents()
1717
}

swift-sdk/Internal/InternalIterableAPI.swift

Lines changed: 27 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -137,13 +137,6 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
137137
let merge = identityResolution?.mergeOnAnonymousToKnown ?? config.identityResolution.mergeOnAnonymousToKnown
138138
let replay = identityResolution?.replayOnVisitorToKnown ?? config.identityResolution.replayOnVisitorToKnown
139139

140-
if(config.enableAnonTracking) {
141-
if(email != nil) {
142-
attemptAndProcessMerge(merge: merge ?? true, replay: replay ?? true, destinationUser: email, isEmail: true, failureHandler: failureHandler)
143-
}
144-
self.localStorage.userIdAnnon = nil
145-
}
146-
147140
if self._email == email && email != nil {
148141
self.checkAndUpdateAuthToken(authToken)
149142
return
@@ -158,6 +151,16 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
158151
self._email = email
159152
self._userId = nil
160153

154+
if config.enableAnonTracking, let email = email {
155+
attemptAndProcessMerge(
156+
merge: merge ?? true,
157+
replay: replay ?? true,
158+
destinationUser: email,
159+
isEmail: true,
160+
failureHandler: failureHandler
161+
)
162+
self.localStorage.userIdAnnon = nil
163+
}
161164
self._successCallback = successHandler
162165
self._failureCallback = failureHandler
163166
self.storeIdentifierData()
@@ -171,16 +174,6 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
171174
let merge = identityResolution?.mergeOnAnonymousToKnown ?? config.identityResolution.mergeOnAnonymousToKnown
172175
let replay = identityResolution?.replayOnVisitorToKnown ?? config.identityResolution.replayOnVisitorToKnown
173176

174-
if(config.enableAnonTracking) {
175-
if(userId != nil && userId != localStorage.userIdAnnon) {
176-
attemptAndProcessMerge(merge: merge ?? true, replay: replay ?? true, destinationUser: userId, isEmail: false, failureHandler: failureHandler)
177-
}
178-
179-
if(!isAnon) {
180-
self.localStorage.userIdAnnon = nil
181-
}
182-
}
183-
184177
if self._userId == userId && userId != nil {
185178
self.checkAndUpdateAuthToken(authToken)
186179
return
@@ -195,6 +188,22 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
195188
self._email = nil
196189
self._userId = userId
197190

191+
if config.enableAnonTracking {
192+
if let userId = userId, userId != localStorage.userIdAnnon {
193+
attemptAndProcessMerge(
194+
merge: merge ?? true,
195+
replay: replay ?? true,
196+
destinationUser: userId,
197+
isEmail: false,
198+
failureHandler: failureHandler
199+
)
200+
}
201+
202+
if !isAnon {
203+
localStorage.userIdAnnon = nil
204+
}
205+
}
206+
198207
self._successCallback = successHandler
199208
self._failureCallback = failureHandler
200209
self.storeIdentifierData()
@@ -210,7 +219,7 @@ final class InternalIterableAPI: NSObject, PushTrackerProtocol, AuthProvider {
210219

211220
if mergeResult == MergeResult.mergenotrequired || mergeResult == MergeResult.mergesuccessful {
212221
if (replay) {
213-
self.anonymousUserManager.syncNonSyncedEvents()
222+
self.anonymousUserManager.syncEvents()
214223
}
215224
} else {
216225
failureHandler?(error, nil)

0 commit comments

Comments
 (0)