Skip to content

Commit 6b13c61

Browse files
committed
Merge branch 'develop'
2 parents 565ad13 + 3fa4f21 commit 6b13c61

17 files changed

+292
-108
lines changed

AutocompleteClient.xcodeproj/project.pbxproj

Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
/* Begin PBXBuildFile section */
1010
08465ECA2161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08465EC92161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift */; };
1111
08465ECC2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08465ECB2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift */; };
12+
0874A32E216BCE2700812CDC /* ConstructorIOABTestCellTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */; };
1213
0879E93F215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0879E93E215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift */; };
1314
088F7D1C210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 088F7D1B210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift */; };
1415
088F7D1E210FA3C6005B9FB4 /* CIOTrackInputFocusData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 088F7D1D210FA3C6005B9FB4 /* CIOTrackInputFocusData.swift */; };
@@ -17,6 +18,7 @@
1718
089399DF2161B92600BFE3D9 /* TrackInputFocusRequestBuilderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089399DE2161B92600BFE3D9 /* TrackInputFocusRequestBuilderTests.swift */; };
1819
089399E12161C51800BFE3D9 /* TrackSearchSubmitRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089399E02161C51800BFE3D9 /* TrackSearchSubmitRequestBuilder.swift */; };
1920
089399E32161C67D00BFE3D9 /* TrackSearchResultsLoadedRequestBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 089399E22161C67D00BFE3D9 /* TrackSearchResultsLoadedRequestBuilder.swift */; };
21+
08CCD3EF216675DD00C3F234 /* CIOABTestCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08CCD3EE216675DD00C3F234 /* CIOABTestCell.swift */; };
2022
08FFB76C215EBBF8008CAA7D /* CIOTrackAutocompleteSelectData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08FFB76B215EBBF8008CAA7D /* CIOTrackAutocompleteSelectData.swift */; };
2123
08FFB76E215EC1E2008CAA7D /* CIOTrackSearchSubmitData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08FFB76D215EC1DF008CAA7D /* CIOTrackSearchSubmitData.swift */; };
2224
651F5B9E3E0C5CC7A2090EC8 /* Pods_AutocompleteClientTests.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C8134D150C9D4CC91DD5715F /* Pods_AutocompleteClientTests.framework */; };
@@ -189,6 +191,7 @@
189191
/* Begin PBXFileReference section */
190192
08465EC92161C96900AEBD76 /* TrackSearchResultClickRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSearchResultClickRequestBuilder.swift; sourceTree = "<group>"; };
191193
08465ECB2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSessionStartRequestBuilder.swift; sourceTree = "<group>"; };
194+
0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ConstructorIOABTestCellTests.swift; sourceTree = "<group>"; };
192195
0879E93E215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TrackAutocompleteSelectRequestBuilderTests.swift; sourceTree = "<group>"; };
193196
088F7D1B210FA3B4005B9FB4 /* CIOSessionManagerDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIOSessionManagerDelegate.swift; sourceTree = "<group>"; };
194197
088F7D1D210FA3C6005B9FB4 /* CIOTrackInputFocusData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIOTrackInputFocusData.swift; sourceTree = "<group>"; };
@@ -197,6 +200,7 @@
197200
089399DE2161B92600BFE3D9 /* TrackInputFocusRequestBuilderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackInputFocusRequestBuilderTests.swift; sourceTree = "<group>"; };
198201
089399E02161C51800BFE3D9 /* TrackSearchSubmitRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSearchSubmitRequestBuilder.swift; sourceTree = "<group>"; };
199202
089399E22161C67D00BFE3D9 /* TrackSearchResultsLoadedRequestBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TrackSearchResultsLoadedRequestBuilder.swift; sourceTree = "<group>"; };
203+
08CCD3EE216675DD00C3F234 /* CIOABTestCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = CIOABTestCell.swift; path = AutocompleteClient/FW/Logic/ABTesting/CIOABTestCell.swift; sourceTree = SOURCE_ROOT; };
200204
08FFB76B215EBBF8008CAA7D /* CIOTrackAutocompleteSelectData.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CIOTrackAutocompleteSelectData.swift; sourceTree = "<group>"; };
201205
08FFB76D215EC1DF008CAA7D /* CIOTrackSearchSubmitData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CIOTrackSearchSubmitData.swift; sourceTree = "<group>"; };
202206
A466AF5E4660C198B64CE5CE /* Pods-AutocompleteClientTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-AutocompleteClientTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-AutocompleteClientTests/Pods-AutocompleteClientTests.release.xcconfig"; sourceTree = "<group>"; };
@@ -393,8 +397,17 @@
393397
088F7D24210FA43C005B9FB4 /* DateProvider.swift */,
394398
);
395399
name = Date;
396-
path = "New Group";
397-
sourceTree = "<group>";
400+
path = "/Users/rubikzube/Github/constructor.io/constructorio-client-swift/AutocompleteClient/FW/Logic/Session/Date";
401+
sourceTree = "<absolute>";
402+
};
403+
08CCD3ED216675C700C3F234 /* ABTesting */ = {
404+
isa = PBXGroup;
405+
children = (
406+
08CCD3EE216675DD00C3F234 /* CIOABTestCell.swift */,
407+
);
408+
name = ABTesting;
409+
path = "/Users/rubikzube/Github/constructor.io/constructorio-client-swift/AutocompleteClient/FW/Logic/ABTesting";
410+
sourceTree = "<absolute>";
398411
};
399412
08F771702162C277005FDF06 /* FW */ = {
400413
isa = PBXGroup;
@@ -521,6 +534,7 @@
521534
F60BEA231F57288B008F0053 /* Logic */ = {
522535
isa = PBXGroup;
523536
children = (
537+
08CCD3ED216675C700C3F234 /* ABTesting */,
524538
F65BBCB621515E34007FEB22 /* ClientID */,
525539
F1F68DE11F58B8AF00B42602 /* Error */,
526540
F63809071F5E853900C3B322 /* Highlighting */,
@@ -545,6 +559,7 @@
545559
F64E94DC212D7EC300E50EDE /* ConstructorIOTrackingTests.swift */,
546560
F64E94E8212DC93300E50EDE /* ConstructorIOAutocompleteTests.swift */,
547561
F63808FE1F5D6C1000C3B322 /* ConstructorIOTests.swift */,
562+
0874A32D216BCE2700812CDC /* ConstructorIOABTestCellTests.swift */,
548563
);
549564
path = Worker;
550565
sourceTree = "<group>";
@@ -1489,6 +1504,7 @@
14891504
F60BEA201F5726CB008F0053 /* EmptyScreenView.swift in Sources */,
14901505
F631A5DA1F5867E300A49BD1 /* CIOErrorView.swift in Sources */,
14911506
F638090D1F5E880900C3B322 /* CIOHighlighter.swift in Sources */,
1507+
08CCD3EF216675DD00C3F234 /* CIOABTestCell.swift in Sources */,
14921508
F6548834208633E20044E403 /* NSAttributedString+Build.swift in Sources */,
14931509
F1F68DD81F58B69000B42602 /* CIOResult.swift in Sources */,
14941510
088F7D27210FA43C005B9FB4 /* CurrentTimeDateProvider.swift in Sources */,
@@ -1526,6 +1542,7 @@
15261542
F62510D120568F250040E3DF /* SessionManagerTests.swift in Sources */,
15271543
0879E93F215F290D00018BBA /* TrackAutocompleteSelectRequestBuilderTests.swift in Sources */,
15281544
F63808FF1F5D6C1000C3B322 /* ConstructorIOTests.swift in Sources */,
1545+
0874A32E216BCE2700812CDC /* ConstructorIOABTestCellTests.swift in Sources */,
15291546
F64F46B71F59767D0094C697 /* AutocompleteViewModelTests.swift in Sources */,
15301547
F64F46AF1F59641D0094C697 /* TestResource.swift in Sources */,
15311548
08465ECC2161D0B100AEBD76 /* TrackSessionStartRequestBuilder.swift in Sources */,

AutocompleteClient/Constants/Constants.swift

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ struct Constants {
4848
}
4949
}
5050
}
51+
52+
struct ABTesting {
53+
static let keyFormat = "ef-%@"
54+
}
5155

5256
struct Query {
5357
static let apiKey = "key"
@@ -104,7 +108,8 @@ struct Constants {
104108
static let originalQuery = "original_query"
105109
static let groupName = "group[group_name]"
106110
static let groupID = "group[group_id]"
107-
static let itemId = "item_id"
111+
static let name = "name"
112+
static let customerID = "customer_id"
108113
static let revenue = "revenue"
109114
static let dateTime = "_dt"
110115
static let defaultItemSectionName = "Products"
@@ -130,7 +135,7 @@ struct Constants {
130135
static let format = "%@/behavior?action=search-results"
131136
}
132137

133-
struct TrackSearchClickThrough {
138+
struct TrackSearchResultClick {
134139
static let format = "%@/autocomplete/%@/click_through"
135140
}
136141

AutocompleteClient/FW/Config/ConstructorIOConfig.swift

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,15 @@ import Foundation
1111
public struct ConstructorIOConfig {
1212

1313
public let apiKey: String
14+
public var defaultItemSectionName: String?
1415
public var resultCount: AutocompleteResultCount?
16+
public var testCells: [CIOABTestCell]?
1517

16-
public init(apiKey: String, resultCount: AutocompleteResultCount? = nil){
18+
public init(apiKey: String, resultCount: AutocompleteResultCount? = nil, defaultItemSectionName: String? = nil, testCells: [CIOABTestCell]? = nil){
1719
self.apiKey = apiKey
1820
self.resultCount = resultCount
21+
self.defaultItemSectionName = defaultItemSectionName
22+
self.testCells = testCells
1923
}
2024

2125
}

AutocompleteClient/FW/Logging/CIOPrintLogger.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ import Foundation
1010

1111
public class CIOPrintLogger: CIOLogger{
1212
public func log(_ message: String){
13-
print(message)
13+
#if DEBUG
14+
print(message)
15+
#endif
1416
}
1517
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
//
2+
// CIOABTestCell.swift
3+
// AutocompleteClient
4+
//
5+
// Copyright © Constructor.io. All rights reserved.
6+
// http://constructor.io/
7+
//
8+
9+
import Foundation
10+
11+
public struct CIOABTestCell{
12+
let key: String
13+
let value: String
14+
15+
}

AutocompleteClient/FW/Logic/Request/Builder/RequestBuilder+QueryItems.swift

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,19 +30,24 @@ extension RequestBuilder{
3030
queryItems.add(URLQueryItem(name: Constants.Track.searchTerm, value: searchTerm))
3131
}
3232

33-
func set(itemID: String?) {
34-
guard let itemID = itemID else { return }
35-
queryItems.add(URLQueryItem(name: Constants.Track.itemId, value: itemID))
33+
func set(name: String?) {
34+
guard let name = name else { return }
35+
queryItems.add(URLQueryItem(name: Constants.Track.name, value: name))
36+
}
37+
38+
func set(customerID: String?) {
39+
guard let customerID = customerID else { return }
40+
queryItems.add(URLQueryItem(name: Constants.Track.customerID, value: customerID))
3641
}
3742

3843
func set(autocompleteSection: String?) {
3944
guard let sectionName = autocompleteSection else { return }
4045
queryItems.add(URLQueryItem(name: Constants.Track.autocompleteSection, value: sectionName))
4146
}
4247

43-
func set(revenue: Int?) {
48+
func set(revenue: Double?) {
4449
guard let revenue = revenue else { return }
45-
queryItems.add(URLQueryItem(name: Constants.Track.revenue, value: String(revenue)))
50+
queryItems.add(URLQueryItem(name: Constants.Track.revenue, value: String(format: "%.2lf", revenue)))
4651
}
4752

4853
func set(numResults: Int?) {
@@ -57,4 +62,9 @@ extension RequestBuilder{
5762
queryItems.add(URLQueryItem(name: name, value: String($0.value)))
5863
}
5964
}
65+
66+
func set(testCellKey: String, testCellValue: String){
67+
let formattedKey = String(format: Constants.ABTesting.keyFormat, testCellKey)
68+
queryItems.add(URLQueryItem(name: formattedKey, value: testCellValue))
69+
}
6070
}

AutocompleteClient/FW/Logic/Request/CIOTrackConversionData.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,26 @@ import Foundation
1414
public struct CIOTrackConversionData: CIORequestData {
1515

1616
public let searchTerm: String
17-
public let itemID: String
17+
public let itemName: String
18+
public let customerID: String
1819
public var sectionName: String?
19-
public let revenue: Int?
20+
public let revenue: Double?
2021

2122
public var url: String{
2223
return String(format: Constants.TrackConversion.format, Constants.Track.baseURLString, self.searchTerm.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)
2324
}
2425

25-
public init(searchTerm: String, itemID: String, sectionName: String? = nil, revenue: Int? = nil) {
26+
public init(searchTerm: String, itemName: String, customerID: String, sectionName: String? = nil, revenue: Double? = nil) {
2627
self.searchTerm = searchTerm
27-
self.itemID = itemID
28+
self.itemName = itemName
29+
self.customerID = customerID
2830
self.sectionName = sectionName
2931
self.revenue = revenue
3032
}
3133

3234
public func decorateRequest(requestBuilder: RequestBuilder) {
33-
requestBuilder.set(itemID: self.itemID)
35+
requestBuilder.set(name: self.itemName)
36+
requestBuilder.set(customerID: self.customerID)
3437
requestBuilder.set(autocompleteSection: self.sectionName)
3538
requestBuilder.set(revenue: self.revenue)
3639
}

AutocompleteClient/FW/Logic/Request/CIOTrackSearchResultClickData.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,24 @@ import Foundation
1313
*/
1414
public struct CIOTrackSearchResultClickData: CIORequestData {
1515
public let searchTerm: String
16-
public let itemID: String
16+
public let itemName: String
17+
public let customerID: String
1718
public var sectionName: String?
1819

1920
public var url: String {
20-
return String(format: Constants.TrackSearchClickThrough.format, Constants.Track.baseURLString, self.searchTerm.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)
21+
return String(format: Constants.TrackSearchResultClick.format, Constants.Track.baseURLString, self.searchTerm.addingPercentEncoding(withAllowedCharacters: .urlPathAllowed)!)
2122
}
2223

23-
public init(searchTerm: String, itemID: String, sectionName: String? = nil) {
24+
public init(searchTerm: String, itemName: String, customerID: String, sectionName: String? = nil) {
2425
self.searchTerm = searchTerm
25-
self.itemID = itemID
26+
self.itemName = itemName
27+
self.customerID = customerID
2628
self.sectionName = sectionName
2729
}
2830

2931
public func decorateRequest(requestBuilder: RequestBuilder){
30-
requestBuilder.set(itemID: self.itemID)
32+
requestBuilder.set(name: self.itemName)
33+
requestBuilder.set(customerID: self.customerID)
3134
requestBuilder.set(autocompleteSection: self.sectionName)
3235
}
3336
}

AutocompleteClient/FW/Logic/Worker/ConstructorIO.swift

Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -33,16 +33,6 @@ public class ConstructorIO: CIOSessionManagerDelegate {
3333
}
3434
}
3535

36-
private var itemSectionName: String?
37-
var defaultItemSectionName: String{
38-
get{
39-
return self.itemSectionName ?? Constants.Track.defaultItemSectionName
40-
}
41-
set{
42-
self.itemSectionName = newValue
43-
}
44-
}
45-
4636
public init(config: ConstructorIOConfig) {
4737
self.config = config
4838

@@ -116,26 +106,30 @@ public class ConstructorIO: CIOSessionManagerDelegate {
116106
/// Track search result clicked on.
117107
///
118108
/// - Parameters:
119-
/// - itemID: ID of an item.
109+
/// - name: item name.
110+
/// - customerID: customer ID.
120111
/// - searchTerm: Search term that the user searched for. If nil is passed, 'TERM_UNKNOWN' will be sent to the server.
121112
/// - sectionName The name of the autocomplete section the term came from
122113
/// - completionHandler: The callback to execute on completion.
123-
public func trackSearchResultClick(itemID: String, searchTerm: String?, sectionName: String?, completionHandler: TrackingCompletionHandler? = nil){
124-
let data = CIOTrackSearchResultClickData(searchTerm: (searchTerm ?? "TERM_UNKNOWN"), itemID: itemID, sectionName: (sectionName ?? self.defaultItemSectionName))
114+
public func trackSearchResultClick(itemName: String, customerID: String, searchTerm: String? = nil, sectionName: String? = nil, completionHandler: TrackingCompletionHandler? = nil){
115+
let section = sectionName ?? self.config.defaultItemSectionName ?? Constants.Track.defaultItemSectionName
116+
let data = CIOTrackSearchResultClickData(searchTerm: (searchTerm ?? "TERM_UNKNOWN"), itemName: itemName, customerID: customerID, sectionName: section)
125117
let request = self.buildRequest(data: data)
126118
execute(request, completionHandler: completionHandler)
127119
}
128120

129121
/// Track a conversion.
130122
///
131123
/// - Parameters:
132-
/// - itemID: ID of an item.
124+
/// - name: item name.
125+
/// - customerID: customer ID.
133126
/// - revenue: Revenue of an item.
134127
/// - searchTerm: Search term that the user searched for. If nil is passed, 'TERM_UNKNOWN' will be sent to the server.
135128
/// - sectionName The name of the autocomplete section the term came from
136129
/// - completionHandler: The callback to execute on completion.
137-
public func trackConversion(itemID: String, revenue: Int?, searchTerm: String?, sectionName: String?, completionHandler: TrackingCompletionHandler? = nil){
138-
let data = CIOTrackConversionData(searchTerm: (searchTerm ?? "TERM_UNKNOWN"), itemID: itemID, sectionName: (sectionName ?? self.defaultItemSectionName), revenue: revenue)
130+
public func trackConversion(itemName: String, customerID: String, revenue: Double?, searchTerm: String? = nil, sectionName: String? = nil, completionHandler: TrackingCompletionHandler? = nil){
131+
let section = sectionName ?? self.config.defaultItemSectionName ?? Constants.Track.defaultItemSectionName
132+
let data = CIOTrackConversionData(searchTerm: (searchTerm ?? "TERM_UNKNOWN"), itemName: itemName, customerID: customerID, sectionName: section, revenue: revenue)
139133
let request = self.buildRequest(data: data)
140134
execute(request, completionHandler: completionHandler)
141135
}
@@ -147,26 +141,28 @@ public class ConstructorIO: CIOSessionManagerDelegate {
147141

148142
private func buildRequest(data: CIORequestData) -> URLRequest{
149143
let requestBuilder = RequestBuilder(apiKey: self.config.apiKey)
150-
self.attachClientSessionAndClientID(requestBuilder: requestBuilder)
144+
self.attachClientID(requestBuilder: requestBuilder)
145+
self.attachSessionID(requestBuilder: requestBuilder)
146+
self.attachABTestCells(requestBuilder: requestBuilder)
151147
requestBuilder.build(trackData: data)
152-
153148
return requestBuilder.getRequest()
154149
}
155150

156151
private func buildSessionStartRequest(session: Int) -> URLRequest{
157152
let data = CIOTrackSessionStartData(session: session)
158153
let requestBuilder = RequestBuilder(apiKey: self.config.apiKey)
159154
self.attachClientID(requestBuilder: requestBuilder)
155+
self.attachABTestCells(requestBuilder: requestBuilder)
160156
requestBuilder.build(trackData: data)
161-
162157
return requestBuilder.getRequest()
163158
}
164159

165-
private func attachClientSessionAndClientID(requestBuilder: RequestBuilder){
166-
self.attachClientID(requestBuilder: requestBuilder)
167-
self.attachSessionID(requestBuilder: requestBuilder)
160+
private func attachABTestCells(requestBuilder: RequestBuilder){
161+
self.config.testCells?.forEach({ [unowned requestBuilder] (cell) in
162+
requestBuilder.set(testCellKey: cell.key, testCellValue: cell.value);
163+
})
168164
}
169-
165+
170166
private func attachClientID(requestBuilder: RequestBuilder){
171167
if let cID = self.clientID{
172168
requestBuilder.set(clientID: cID)

AutocompleteClient/FW/UI/CIOAutocompleteViewController.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ extension CIOAutocompleteViewController: UITableViewDelegate, UITableViewDataSo
335335
let item = self.viewModel.results[indexPath.section].items[indexPath.row]
336336
searchCell.setup(result: item, searchTerm: self.viewModel.searchTerm, highlighter: self.highlighter)
337337
} else {
338-
print("Warning: Trying to show results in a cell that doesn't conform to CIOAutocompleteCell protocol.")
338+
ConstructorIO.logger.log("Warning: Trying to show results in a cell that doesn't conform to CIOAutocompleteCell protocol.")
339339
}
340340

341341
return cell

0 commit comments

Comments
 (0)