Skip to content

Commit 7f49d58

Browse files
WIP: clean up
1 parent b835b8f commit 7f49d58

9 files changed

+30
-48
lines changed

Sources/ODP/OdpEventManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ open class OdpEventManager {
4949

5050
// MARK: - events
5151

52-
func registerVUID(vuid: String) {
52+
func sendInitializedEvent(vuid: String) {
5353
sendEvent(type: Constants.ODP.eventType,
5454
action: "client_initialized",
5555
identifiers: [

Sources/ODP/OdpManager.swift

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ public class OdpManager {
3838
/// - eventManager: ODPEventManager
3939
public init(sdkKey: String,
4040
disable: Bool,
41+
vuid: String? = nil,
4142
cacheSize: Int,
4243
cacheTimeoutInSecs: Int,
4344
timeoutForSegmentFetchInSecs: Int? = nil,
@@ -46,7 +47,7 @@ public class OdpManager {
4647
eventManager: OdpEventManager? = nil) {
4748

4849
self.enabled = !disable
49-
50+
self.vuid = vuid
5051
guard enabled else {
5152
logger.i(.odpNotEnabled)
5253
return
@@ -60,6 +61,9 @@ public class OdpManager {
6061
self.odpConfig = OdpConfig()
6162
self.segmentManager.odpConfig = odpConfig
6263
self.eventManager.odpConfig = odpConfig
64+
if let vuid = vuid, OdpVuidManager.isVuid(vuid) {
65+
self.eventManager.sendInitializedEvent(vuid: vuid)
66+
}
6367
}
6468

6569
func fetchQualifiedSegments(userId: String,
@@ -79,7 +83,7 @@ public class OdpManager {
7983
completionHandler: completionHandler)
8084
}
8185

82-
func identifyUser(userId: String, vuid: String) {
86+
func identifyUser(userId: String) {
8387
guard enabled else {
8488
logger.d("ODP identify event is not dispatched (ODP disabled).")
8589
return
@@ -90,14 +94,13 @@ public class OdpManager {
9094
return
9195
}
9296

93-
var _vuid = vuid
94-
var fsUserId: String? = userId
9597
if OdpVuidManager.isVuid(userId) {
9698
// overwrite if userId is vuid (when userContext is created with vuid)
97-
_vuid = userId
98-
fsUserId = nil
99+
eventManager.identifyUser(vuid: userId, userId: nil)
100+
} else if let _vuid = vuid {
101+
eventManager.identifyUser(vuid: _vuid, userId: userId)
99102
}
100-
eventManager.identifyUser(vuid: _vuid, userId: fsUserId)
103+
101104
}
102105

103106
/// Send an event to the ODP server.

Sources/ODP/OdpVuidManager.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class OdpVuidManager {
3838
let vuid = (vuidFull.count <= maxLength) ? vuidFull : String(vuidFull.prefix(maxLength))
3939
return vuid
4040
}
41-
41+
4242
static func isVuid(_ visitorId: String) -> Bool {
4343
return visitorId.starts(with: "vuid_")
4444
}

Sources/Optimizely+Decide/OptimizelyUserContext.swift

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,11 +84,10 @@ public class OptimizelyUserContext {
8484
self.atomicAttributes = AtomicProperty(property: attributes, lock: lock)
8585
self.atomicForcedDecisions = AtomicProperty(property: nil, lock: lock)
8686
self.atomicQualifiedSegments = AtomicProperty(property: nil, lock: lock)
87-
let _vuid = optimizely.vuid
8887
if identify {
8988
// async call so event building overhead is not blocking context creation
9089
lock.async {
91-
self.optimizely?.identifyUserToOdp(userId: userId, vuid: _vuid)
90+
self.optimizely?.identifyUserToOdp(userId: userId)
9291
}
9392
}
9493
}

Sources/Optimizely/OptimizelyClient.swift

Lines changed: 4 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,10 @@ open class OptimizelyClient: NSObject {
9292
self.defaultDecideOptions = defaultDecideOptions ?? []
9393

9494
super.init()
95-
95+
self.vuidManager = OdpVuidManager(enabled: sdkSettings.enableVuid)
9696
self.odpManager = odpManager ?? OdpManager(sdkKey: sdkKey,
9797
disable: sdkSettings.disableOdp,
98+
vuid: vuidManager.vuid,
9899
cacheSize: sdkSettings.segmentsCacheSize,
99100
cacheTimeoutInSecs: sdkSettings.segmentsCacheTimeoutInSecs,
100101
timeoutForSegmentFetchInSecs: sdkSettings.timeoutForSegmentFetchInSecs,
@@ -117,28 +118,9 @@ open class OptimizelyClient: NSObject {
117118
self.decisionService = HandlerRegistryService.shared.injectDecisionService(sdkKey: self.sdkKey)
118119
self.notificationCenter = HandlerRegistryService.shared.injectNotificationCenter(sdkKey: self.sdkKey)
119120

120-
self.vuidManager = OdpVuidManager(enabled: sdkSettings.enableVuid)
121-
if self.vuidManager.enabled {
122-
self.odpManager.vuid = vuidManager.vuid
123-
// Cushes due to odpManager didn't initialize yet.
124-
// self.odpManager.eventManager.registerVUID(vuid: vuidManager.vuid)
125-
}
126-
127-
// FIXME: Need a better solution
128-
DispatchQueue.global().asyncAfter(deadline: .now() + 0.1) { [weak self] in
129-
self?.registerVUID()
130-
}
131-
132-
133121
logger.d("SDK Version: \(version)")
134122
}
135123

136-
private func registerVUID() {
137-
if self.vuidManager.enabled {
138-
self.odpManager.eventManager.registerVUID(vuid: self.vuidManager.vuid)
139-
}
140-
}
141-
142124
/// Start Optimizely SDK (Asynchronous)
143125
///
144126
/// If an updated datafile is available in the server, it's downloaded and the SDK is configured with
@@ -1000,8 +982,8 @@ extension OptimizelyClient {
1000982
return self.vuidManager.enabled
1001983
}
1002984

1003-
func identifyUserToOdp(userId: String, vuid: String) {
1004-
odpManager.identifyUser(userId: userId, vuid: self.vuid)
985+
func identifyUserToOdp(userId: String) {
986+
odpManager.identifyUser(userId: userId)
1005987
}
1006988

1007989
func fetchQualifiedSegments(userId: String,

Tests/OptimizelyTests-Common/OdpEventManagerTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ class OdpEventManagerTests: XCTestCase {
8989
}
9090

9191
func testRegisterVUID_noApiKey() {
92-
manager.registerVUID(vuid: "v1")
92+
manager.sendInitializedEvent(vuid: "v1")
9393

9494
XCTAssertEqual(1, manager.eventQueue.count)
9595

@@ -149,7 +149,7 @@ class OdpEventManagerTests: XCTestCase {
149149

150150
XCTAssertTrue(manager.odpConfig.eventQueueingAllowed, "initially datafile not ready and assumed queueing is allowed")
151151

152-
manager.registerVUID(vuid: "v1") // each of these will try to flush
152+
manager.sendInitializedEvent(vuid: "v1") // each of these will try to flush
153153
manager.identifyUser(vuid: "v1", userId: "u1")
154154
manager.sendEvent(type: "t1", action: "a1", identifiers: [:], data: [:])
155155

@@ -184,7 +184,7 @@ class OdpEventManagerTests: XCTestCase {
184184

185185
XCTAssertTrue(manager.odpConfig.eventQueueingAllowed, "initially datafile not ready and assumed queueing is allowed")
186186

187-
manager.registerVUID(vuid: "v1") // each of these will try to flush
187+
manager.sendInitializedEvent(vuid: "v1") // each of these will try to flush
188188
manager.identifyUser(vuid: "v1", userId: "u1")
189189
manager.sendEvent(type: "t1", action: "a1", identifiers: [:], data: [:])
190190

@@ -215,7 +215,7 @@ class OdpEventManagerTests: XCTestCase {
215215
func testFlush_maxSize() {
216216
manager.maxQueueSize = 2
217217

218-
manager.registerVUID(vuid: "v1") // each of these will try to flush
218+
manager.sendInitializedEvent(vuid: "v1") // each of these will try to flush
219219
manager.identifyUser(vuid: "v1", userId: "u1")
220220
manager.sendEvent(type: "t1", action: "a1", identifiers: [:], data: [:])
221221

Tests/OptimizelyTests-Common/OdpManagerTests.swift

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,7 @@ class OdpManagerTests: XCTestCase {
7373
XCTAssertNil(manager.odpConfig)
7474

7575
// these calls should be dropped gracefully with nil
76-
let vuid = "vuid_123"
77-
manager.identifyUser(userId: "user1", vuid: vuid)
76+
manager.identifyUser(userId: "user1")
7877
try? manager.sendEvent(type: "t1", action: "a1", identifiers: [:], data: [:])
7978

8079
XCTAssertNil(manager.eventManager)
@@ -129,8 +128,7 @@ class OdpManagerTests: XCTestCase {
129128
// MARK: - identifyUser
130129

131130
func testIdentifyUser_datafileNotReady() {
132-
let vuid = "vuid_123"
133-
manager.identifyUser(userId: "user-1", vuid: vuid)
131+
manager.identifyUser(userId: "user-1")
134132

135133
XCTAssertEqual(eventManager.receivedIdentifyUserId, "user-1")
136134
}
@@ -139,7 +137,7 @@ class OdpManagerTests: XCTestCase {
139137
let vuid = "vuid_123"
140138
manager.vuid = vuid
141139
manager.updateOdpConfig(apiKey: "key-1", apiHost: "host-1", segmentsToCheck: [])
142-
manager.identifyUser(userId: "user-1", vuid: "vuid_123")
140+
manager.identifyUser(userId: "user-1")
143141

144142
XCTAssert(OdpVuidManager.isVuid(eventManager.receivedIdentifyVuid))
145143
XCTAssertEqual(eventManager.receivedIdentifyUserId, "user-1")
@@ -149,22 +147,22 @@ class OdpManagerTests: XCTestCase {
149147
manager.updateOdpConfig(apiKey: "key-1", apiHost: "host-1", segmentsToCheck: [])
150148

151149
let vuidAsUserId = OdpVuidManager.newVuid
152-
manager.identifyUser(userId: vuidAsUserId, vuid: "")
150+
manager.identifyUser(userId: vuidAsUserId)
153151

154152
XCTAssertEqual(eventManager.receivedIdentifyVuid, vuidAsUserId)
155153
XCTAssertNil(eventManager.receivedIdentifyUserId)
156154
}
157155

158156
func testIdentifyUser_odpNotIntegrated() {
159157
manager.updateOdpConfig(apiKey: nil, apiHost: nil, segmentsToCheck: [])
160-
manager.identifyUser(userId: "user-1", vuid: "")
158+
manager.identifyUser(userId: "user-1")
161159

162160
XCTAssertNil(eventManager.receivedIdentifyUserId, "identifyUser event requeut should be discarded if ODP not integrated.")
163161
}
164162

165163
func testIdentifyUser_odpDisabled() {
166164
manager.enabled = false
167-
manager.identifyUser(userId: "user-1", vuid: "")
165+
manager.identifyUser(userId: "user-1")
168166

169167
XCTAssertNil(eventManager.receivedIdentifyUserId, "identifyUser event requeut should be discarded if ODP disabled.")
170168
}
@@ -387,7 +385,7 @@ class OdpManagerTests: XCTestCase {
387385

388386
var resetCalled = false
389387

390-
override func registerVUID(vuid: String) {
388+
override func sendInitializedEvent(vuid: String) {
391389
self.receivedRegisterVuid = vuid
392390
}
393391

Tests/OptimizelyTests-Common/OptimizelyUserContextTests_ODP.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ class MockOdpManager: OdpManager {
327327
super.fetchQualifiedSegments(userId: userId, options: options, completionHandler: completionHandler)
328328
}
329329

330-
override func identifyUser(userId: String, vuid: String) {
330+
override func identifyUser(userId: String) {
331331
self.userId = userId
332332
self.identifyCalled = true
333333
}

Tests/OptimizelyTests-Common/OptimizelyUserContextTests_ODP_Aync_Await.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ extension OptimizelyUserContextTests_ODP_Aync_Await {
140140
super.fetchQualifiedSegments(userId: userId, options: options, completionHandler: completionHandler)
141141
}
142142

143-
override func identifyUser(userId: String, vuid: String) {
143+
override func identifyUser(userId: String) {
144144
self.userId = userId
145145
self.identifyCalled = true
146146
}

0 commit comments

Comments
 (0)