Skip to content

Commit cd5eec0

Browse files
authored
Merge pull request #36 from AdaSupport/CHATX-828-sensitive-metafields-for-ios
🦊 CHATX-828 Added sensitive metafields support
2 parents b2199b5 + 301160b commit cd5eec0

File tree

1 file changed

+22
-5
lines changed

1 file changed

+22
-5
lines changed

EmbedFramework/AdaWebHost.swift

+22-5
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,10 @@ public class AdaWebHost: NSObject {
2525
public var greeting = ""
2626
public var webViewTimeout = 30.0
2727

28-
/// Metafields can be passed in during init; use `setMetaFields()`
28+
/// Metafields can be passed in during init; use `setMetaFields()` and `setSensitiveMetafields()`
2929
/// to send values in at runtime
3030
private var metafields: [String: String] = [:]
31+
private var sensitiveMetafields: [String: String] = [:]
3132

3233
public var openWebLinksInSafari = false
3334
public var appScheme = ""
@@ -71,6 +72,7 @@ public class AdaWebHost: NSObject {
7172
styles: String = "",
7273
greeting: String = "",
7374
metafields: [String: String] = [:],
75+
sensitiveMetafields: [String:String] = [:],
7476
openWebLinksInSafari: Bool = false,
7577
appScheme: String = "",
7678
zdChatterAuthCallback: (((@escaping (_ token: String) -> Void)) -> Void)? = nil,
@@ -84,6 +86,7 @@ public class AdaWebHost: NSObject {
8486
self.styles = styles
8587
self.greeting = greeting
8688
self.metafields = metafields
89+
self.sensitiveMetafields = sensitiveMetafields
8790
self.openWebLinksInSafari = openWebLinksInSafari
8891
self.appScheme = appScheme
8992
self.zdChatterAuthCallback = zdChatterAuthCallback
@@ -144,14 +147,24 @@ public class AdaWebHost: NSObject {
144147

145148
self.evalJS(toRun)
146149
}
150+
151+
/// Push a dictionary of fields to the server
152+
public func setSensitiveMetaFields(_ fields: [String: Any]) {
153+
guard let json = try? JSONSerialization.data(withJSONObject: fields, options: []),
154+
let jsonString = String(data: json, encoding: .utf8) else { return }
155+
let toRun = "adaEmbed.setSensitiveMetaFields(\(jsonString));"
156+
157+
self.evalJS(toRun)
158+
}
147159

148160
/// Re-initialize chat and optionally reset history, language, meta data, etc
149-
public func reset(language: String? = nil, greeting: String? = nil, metaFields: [String: Any]? = nil, resetChatHistory: Bool? = true) {
161+
public func reset(language: String? = nil, greeting: String? = nil, metaFields: [String: Any]? = nil, sensitiveMetaFields: [String: Any]? = nil, resetChatHistory: Bool? = true) {
150162

151163
let data: [String: Any?] = [
152164
"language": language,
153165
"greeting": greeting,
154166
"metaFields": metaFields,
167+
"sensitiveMetaFields": sensitiveMetaFields,
155168
"resetChatHistory": resetChatHistory
156169
]
157170

@@ -325,8 +338,11 @@ extension AdaWebHost: WKScriptMessageHandler {
325338
extension AdaWebHost {
326339
private func initializeWebView() {
327340
do {
328-
let jsonData = try JSONSerialization.data(withJSONObject: self.metafields, options: [])
329-
let json = String(data: jsonData, encoding: .utf8) ?? "{}"
341+
let metaFieldsData = try JSONSerialization.data(withJSONObject: self.metafields, options: [])
342+
let metaFieldsJson = String(data: metaFieldsData, encoding: .utf8) ?? "{}"
343+
344+
let sensitiveMetaFieldsData = try JSONSerialization.data(withJSONObject: self.sensitiveMetafields, options: [])
345+
let sensitiveMetaFieldsJson = String(data: sensitiveMetaFieldsData, encoding: .utf8) ?? "{}"
330346

331347
evalJS("""
332348
(function() {
@@ -336,7 +352,8 @@ extension AdaWebHost {
336352
language: "\(self.language)",
337353
styles: "\(self.styles)",
338354
greeting: "\(self.greeting)",
339-
metaFields: \(json),
355+
metaFields: \(metaFieldsJson),
356+
sensitiveMetaFields: \(sensitiveMetaFieldsJson),
340357
parentElement: "parent-element",
341358
zdChatterAuthCallback: function(callback) {
342359
window.zdTokenCallback = callback;

0 commit comments

Comments
 (0)