Skip to content

Commit d717426

Browse files
authored
Merge pull request #301 from SourcePointUSA/SP-7045_configurable_timeout
[SP-7045] Add configurable timeout
2 parents a9eb499 + 1d31603 commit d717426

File tree

4 files changed

+19
-8
lines changed

4 files changed

+19
-8
lines changed

ConsentViewController/Classes/SPConsentManager.swift

+11-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import Foundation
2626
public var userData: SPUserData { storage.userData }
2727
var messageControllersStack: [SPMessageViewController] = []
2828
var idfaStatus: SPIDFAStatus { SPIDFAStatus.current() }
29+
static let DefaultTimeout = TimeInterval(30)
2930

3031
var ccpaUUID: String { storage.localState["ccpa"]?.dictionaryValue?["uuid"] as? String ?? "" }
3132
var gdprUUID: String { storage.localState["gdpr"]?.dictionaryValue?["uuid"] as? String ?? "" }
@@ -35,13 +36,20 @@ import Foundation
3536
SPUserDefaults(storage: UserDefaults.standard).clear()
3637
}
3738

39+
/// The timeout interval in seconds for the message being displayed
40+
public var messageTimeoutInSeconds = SPConsentManager.DefaultTimeout {
41+
didSet {
42+
spClient.setRequestTimeout(self.messageTimeoutInSeconds)
43+
}
44+
}
45+
3846
public convenience init(accountId: Int, propertyName: SPPropertyName, campaigns: SPCampaigns, delegate: SPDelegate?) {
3947
self.init(
4048
accountId: accountId,
4149
propertyName: propertyName,
4250
campaigns: campaigns,
4351
delegate: delegate,
44-
spClient: SourcePointClient(accountId: accountId, propertyName: propertyName, timeout: 30),
52+
spClient: SourcePointClient(accountId: accountId, propertyName: propertyName, timeout: SPConsentManager.DefaultTimeout),
4553
storage: SPUserDefaults(storage: UserDefaults.standard)
4654
)
4755
}
@@ -101,6 +109,7 @@ import Foundation
101109
messageId: messageId,
102110
contents: content,
103111
campaignType: type,
112+
timeout: messageTimeoutInSeconds,
104113
delegate: self
105114
)
106115
#endif
@@ -278,6 +287,7 @@ import Foundation
278287
messageId: messageId,
279288
contents: SPJson(),
280289
campaignType: campaignType,
290+
timeout: messageTimeoutInSeconds,
281291
delegate: self
282292
).loadPrivacyManager(url: pmURL)
283293
}

ConsentViewController/Classes/SPMessageViewController.swift

+3-1
Original file line numberDiff line numberDiff line change
@@ -64,11 +64,13 @@ extension RenderingAppEvents: ExpressibleByStringLiteral {
6464
weak var messageUIDelegate: SPMessageUIDelegate?
6565
public var campaignType: SPCampaignType
6666
public var messageId: Int?
67+
public var timeout: TimeInterval
6768

68-
init(messageId: Int?, campaignType: SPCampaignType, delegate: SPMessageUIDelegate?, nibName: String? = nil) {
69+
init(messageId: Int?, campaignType: SPCampaignType, timeout: TimeInterval, delegate: SPMessageUIDelegate?, nibName: String? = nil) {
6970
self.campaignType = campaignType
7071
self.messageUIDelegate = delegate
7172
self.messageId = messageId
73+
self.timeout = timeout
7274
super.init(nibName: nibName, bundle: Bundle.framework)
7375
}
7476

ConsentViewController/Classes/Views/iOS/SPWebMessageViewController.swift

+4-5
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Foundation
99
import WebKit
1010

1111
@objcMembers class SPWebMessageViewController: SPMessageViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler, UIScrollViewDelegate {
12-
var timeout: TimeInterval?
1312
var webviewConfig: WKWebViewConfiguration? { nil }
1413
let url: URL
1514
let contents: SPJson
@@ -35,10 +34,10 @@ import WebKit
3534
return nil
3635
}()
3736

38-
init(url: URL, messageId: Int?, contents: SPJson, campaignType: SPCampaignType, delegate: SPMessageUIDelegate?) {
37+
init(url: URL, messageId: Int?, contents: SPJson, campaignType: SPCampaignType, timeout: TimeInterval, delegate: SPMessageUIDelegate?) {
3938
self.url = url
4039
self.contents = contents
41-
super.init(messageId: messageId, campaignType: campaignType, delegate: delegate)
40+
super.init(messageId: messageId, campaignType: campaignType, timeout: timeout, delegate: delegate)
4241
}
4342

4443
required init?(coder: NSCoder) {
@@ -134,11 +133,11 @@ import WebKit
134133
var isFirstLayerMessage = true
135134

136135
override func loadMessage() {
137-
webview?.load(URLRequest(url: url))
136+
webview?.load(URLRequest(url: url, timeoutInterval: timeout))
138137
}
139138

140139
override func loadPrivacyManager(url: URL) {
141-
webview?.load(URLRequest(url: url))
140+
webview?.load(URLRequest(url: url, timeoutInterval: timeout))
142141
}
143142

144143
override func closePrivacyManager() {

Example/ConsentViewController_ExampleTests/SPErrorSpec.swift

+1-1
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ class SPErrorSpec: QuickSpec {
6161

6262
describe("ConnectionTimeOutError") {
6363
it("has spCode: connection_timeout") {
64-
expect(ConnectionTimeOutError(url: nil, timeout: nil).spCode).to(equal("sp_metric_connection_timeout"))
64+
expect(ConnectionTimeOutError(url: nil, timeout: nil, campaignType: .unknown).spCode).to(equal("sp_metric_connection_timeout"))
6565
}
6666
}
6767

0 commit comments

Comments
 (0)