Skip to content

Commit bc333bd

Browse files
Feature/con 617 screen transition events (#80)
* [CON-617] screenTransitionEvents * saves progress v1 * key replace * saves progress v3 * update tests * deletes package resolved * resolve conficts vol 2
1 parent 2df1d33 commit bc333bd

File tree

6 files changed

+97
-12
lines changed

6 files changed

+97
-12
lines changed

Example/PinwheelSDK/LinkConfigTableViewController.swift

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -175,8 +175,16 @@ extension LinkConfigTableViewController: PinwheelDelegate {
175175
print("onEvent(name: .inputAllocation")
176176
case .inputRequired:
177177
print("onEvent(name: .inputRequired")
178+
case .screenTransition:
179+
print("onEvent(name: .screenTransition")
178180
case .cardSwitchBegin:
179181
print("onEvent(name: .cardSwitchBegin")
182+
case .ddFormBegin:
183+
print("onEvent(name: .ddFormBegin")
184+
case .ddFormCreate:
185+
print("onEvent(name: .ddFormCreate")
186+
case .ddFormDownload:
187+
print("onEvent(name: .ddFormDownload")
180188
case .exit:
181189
print("onEvent(name: .exit")
182190
self.dismiss(animated: true)
@@ -185,12 +193,7 @@ extension LinkConfigTableViewController: PinwheelDelegate {
185193
self.dismiss(animated: true)
186194
case .error:
187195
print("onEvent(name: .error")
188-
case .ddFormBegin:
189-
print("onEvent(name: .ddFormBegin")
190-
case .ddFormCreate:
191-
print("onEvent(name: .ddFormCreate")
192-
case .ddFormDownload:
193-
print("onEvent(name: .ddFormDownload")
196+
194197
}
195198
}
196199

Example/Tests/Tests.swift

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -480,6 +480,26 @@ class TableOfContentsSpec: QuickSpec {
480480
expect(delegate.onErrorPayload?.message).to(equal("Uh oh"))
481481
expect(delegate.onErrorPayload?.pendingRetry).to(beTrue())
482482
}
483+
484+
it("onEvent is called for screen_transition") {
485+
let delegate = PinwheelVCDelegate()
486+
let userContentController = WKUserContentController()
487+
let body: JSONDictionary = [
488+
"type": "PINWHEEL_EVENT",
489+
"eventName": "screen_transition",
490+
"payload": [
491+
"screenName" : "SEARCH_DEFAULT",
492+
"selectedPlatformId": nil,
493+
"selectedPlatformName": nil
494+
]
495+
]
496+
let message = TestMessage("screenTransitionEventHandler", body: asString(jsonDictionary: body))
497+
let pinwheelVC = PinwheelViewController(token: linkToken, delegate: delegate)
498+
pinwheelVC.userContentController(userContentController, didReceive: message)
499+
let payload = delegate.onEventPayload as? PinwheelScreenTransitionPayload
500+
expect(payload?.screenName).to(equal("SEARCH_DEFAULT"))
501+
expect(payload?.selectedPlatformId).to(beNil())
502+
}
483503
}
484504
}
485505
}

Sources/PinwheelSDK/Classes/Events/PinwheelEventType.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,12 @@ public enum PinwheelEventType: String {
1717
case inputAmount = "input_amount"
1818
case inputAllocation = "input_allocation"
1919
case inputRequired = "input_required"
20+
case screenTransition = "screen_transition"
2021
case cardSwitchBegin = "card_switch_begin"
21-
case exit
22-
case success
23-
case error
2422
case ddFormBegin = "dd_form_begin"
2523
case ddFormCreate = "dd_form_create"
2624
case ddFormDownload = "dd_form_download"
25+
case exit
26+
case success
27+
case error
2728
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
//
2+
// PinwheelScreenTransitionEvent.swift
3+
// PinwheelSDK
4+
//
5+
// Created by Elena Churilova on 5/4/23.
6+
//
7+
8+
import Foundation
9+
10+
public struct PinwheelScreenTransitionEvent: Codable {
11+
public init(type: String, eventName: String, payload: PinwheelScreenTransitionPayload) {
12+
self.type = type
13+
self.eventName = eventName
14+
self.payload = payload
15+
}
16+
17+
public var type: String
18+
public var eventName: String
19+
public var payload: PinwheelScreenTransitionPayload
20+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//
2+
// PinwheelScreenTransitionPayload.swift
3+
// PinwheelSDK
4+
//
5+
// Created by Elena Churilova on 5/4/23.
6+
//
7+
8+
import Foundation
9+
10+
public struct PinwheelScreenTransitionPayload: PinwheelEventPayload {
11+
public init(screenName: String, selectedEmployerId: String?, selectedEmployerName: String?, selectedPlatformId: String?, selectedPlatformName: String?) {
12+
self.screenName = screenName
13+
self.selectedEmployerId = selectedEmployerId
14+
self.selectedEmployerName = selectedEmployerName
15+
self.selectedPlatformId = selectedPlatformId
16+
self.selectedPlatformName = selectedPlatformName
17+
}
18+
19+
public let screenName: String
20+
public let selectedEmployerId: String?
21+
public let selectedEmployerName: String?
22+
public let selectedPlatformId: String?
23+
public let selectedPlatformName: String?
24+
25+
26+
}

Sources/PinwheelSDK/Classes/Pinwheel.swift

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -212,6 +212,13 @@ public class PinwheelViewController: UIViewController, WKUIDelegate, WKScriptMes
212212
}
213213
case PinwheelEventHandler.inputRequiredEventHandler.rawValue:
214214
self.delegate?.onEvent(name: .inputRequired, event: nil)
215+
216+
case PinwheelEventHandler.screenTransitionEventHandler.rawValue:
217+
if let bodyData = bodyDataFromMessage(message),
218+
let event = try? JSONDecoder().decode(PinwheelScreenTransitionEvent.self, from: bodyData) {
219+
self.delegate?.onEvent(name: .screenTransition, event: event.payload)
220+
}
221+
215222
case PinwheelEventHandler.cardSwitchBeginEventHandler.rawValue:
216223
self.delegate?.onEvent(name: .cardSwitchBegin, event: nil)
217224
case PinwheelEventHandler.exitEventHandler.rawValue:
@@ -375,6 +382,13 @@ public class PinwheelViewController: UIViewController, WKUIDelegate, WKScriptMes
375382
window.webkit.messageHandlers.\(PinwheelEventHandler.inputRequiredEventHandler.rawValue).postMessage(JSON.stringify(event.data));
376383
}
377384
break;
385+
386+
case "\(PinwheelEventType.screenTransition.rawValue)":
387+
if (window.webkit.messageHandlers.\(PinwheelEventHandler.screenTransitionEventHandler.rawValue)) {
388+
window.webkit.messageHandlers.\(PinwheelEventHandler.screenTransitionEventHandler.rawValue).postMessage(JSON.stringify(event.data));
389+
}
390+
break;
391+
378392
case "\(PinwheelEventType.cardSwitchBegin.rawValue)":
379393
if (window.webkit.messageHandlers.\(PinwheelEventHandler.cardSwitchBeginEventHandler.rawValue)) {
380394
window.webkit.messageHandlers.\(PinwheelEventHandler.cardSwitchBeginEventHandler.rawValue).postMessage(JSON.stringify(event.data));
@@ -468,11 +482,12 @@ private enum PinwheelEventHandler: String, CaseIterable {
468482
case inputAmountEventHandler
469483
case inputAllocationEventHandler
470484
case inputRequiredEventHandler
485+
case screenTransitionEventHandler
471486
case cardSwitchBeginEventHandler
472-
case exitEventHandler
473-
case successEventHandler
474-
case errorEventHandler
475487
case ddFormBeginEventHandler
476488
case ddFormCreateEventHandler
477489
case ddFormDownloadEventHandler
490+
case exitEventHandler
491+
case successEventHandler
492+
case errorEventHandler
478493
}

0 commit comments

Comments
 (0)