@@ -25,9 +25,10 @@ public class AdaWebHost: NSObject {
25
25
public var greeting = " "
26
26
public var webViewTimeout = 30.0
27
27
28
- /// Metafields can be passed in during init; use `setMetaFields()`
28
+ /// Metafields can be passed in during init; use `setMetaFields()` and `setSensitiveMetafields()`
29
29
/// to send values in at runtime
30
30
private var metafields : [ String : String ] = [ : ]
31
+ private var sensitiveMetafields : [ String : String ] = [ : ]
31
32
32
33
public var openWebLinksInSafari = false
33
34
public var appScheme = " "
@@ -71,6 +72,7 @@ public class AdaWebHost: NSObject {
71
72
styles: String = " " ,
72
73
greeting: String = " " ,
73
74
metafields: [ String : String ] = [ : ] ,
75
+ sensitiveMetafields: [ String : String ] = [ : ] ,
74
76
openWebLinksInSafari: Bool = false ,
75
77
appScheme: String = " " ,
76
78
zdChatterAuthCallback: ( ( ( @escaping ( _ token: String ) -> Void ) ) -> Void ) ? = nil ,
@@ -84,6 +86,7 @@ public class AdaWebHost: NSObject {
84
86
self . styles = styles
85
87
self . greeting = greeting
86
88
self . metafields = metafields
89
+ self . sensitiveMetafields = sensitiveMetafields
87
90
self . openWebLinksInSafari = openWebLinksInSafari
88
91
self . appScheme = appScheme
89
92
self . zdChatterAuthCallback = zdChatterAuthCallback
@@ -144,14 +147,24 @@ public class AdaWebHost: NSObject {
144
147
145
148
self . evalJS ( toRun)
146
149
}
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
+ }
147
159
148
160
/// 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 ) {
150
162
151
163
let data : [ String : Any ? ] = [
152
164
" language " : language,
153
165
" greeting " : greeting,
154
166
" metaFields " : metaFields,
167
+ " sensitiveMetaFields " : sensitiveMetaFields,
155
168
" resetChatHistory " : resetChatHistory
156
169
]
157
170
@@ -325,8 +338,11 @@ extension AdaWebHost: WKScriptMessageHandler {
325
338
extension AdaWebHost {
326
339
private func initializeWebView( ) {
327
340
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) ?? " {} "
330
346
331
347
evalJS ( """
332
348
(function() {
@@ -336,7 +352,8 @@ extension AdaWebHost {
336
352
language: " \( self . language) " ,
337
353
styles: " \( self . styles) " ,
338
354
greeting: " \( self . greeting) " ,
339
- metaFields: \( json) ,
355
+ metaFields: \( metaFieldsJson) ,
356
+ sensitiveMetaFields: \( sensitiveMetaFieldsJson) ,
340
357
parentElement: " parent-element " ,
341
358
zdChatterAuthCallback: function(callback) {
342
359
window.zdTokenCallback = callback;
0 commit comments