smartmessage-react-native 2.11.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,660 @@
1
+ import Foundation
2
+ import SmartMessageSdk
3
+ import UserNotificationsUI
4
+ import UserNotifications
5
+
6
+ @objc(RNSmartMessage)
7
+ class RNSmartMessage: NSObject {
8
+
9
+ static var token: String? = nil;
10
+
11
+ @objc
12
+ static func initializeSdk(_ tokenData: Data) -> Void {
13
+ let token = tokenData.map { String(format: "%02.2hhx", $0) }.joined()
14
+ self.token = token;
15
+
16
+ SmartMessage.shared.initializeSdk(tokenId: token)
17
+
18
+ }
19
+
20
+ @objc
21
+ static func setUNCenter(_ unCenter: UNUserNotificationCenter) -> Void {
22
+
23
+ if(unCenter.delegate != nil) {
24
+ SmartMessage.shared.setUNUserNotificationCenterDelegate(delegate: unCenter.delegate!)
25
+ }else{
26
+ print("UNUserNotificationCenter or its delegate is nil!")
27
+ }
28
+
29
+ }
30
+
31
+ // to ServiceExtension
32
+ @objc
33
+ static func configureNotificationService(
34
+ _ request: UNNotificationRequest,
35
+ contentHandler: ((UNNotificationContent) -> Void),
36
+ bestAttemptContent: (UNMutableNotificationContent?)
37
+ ) -> Void {
38
+ SmartMessage.shared.configureNotificationService(request: request,
39
+ contentHandler: contentHandler,
40
+ bestAttemptContent: bestAttemptContent)
41
+ }
42
+
43
+ // to ContentExtension
44
+ @objc
45
+ static func handleNotification(
46
+ _ baseExtensionController: UIViewController,
47
+ baseView: UIView,
48
+ userInfo: [AnyHashable : Any]?,
49
+ isNotificationWillPresent: Bool = false
50
+ ) -> Void {
51
+
52
+ guard let info = userInfo,
53
+ let aps = info["aps"] as? [AnyHashable: Any]
54
+ else {
55
+ return}
56
+
57
+ SmartMessage.shared.handleNotification(baseExtensionController: baseExtensionController,
58
+ baseView: baseView,
59
+ aps: aps,
60
+ isNotificationWillPresent: isNotificationWillPresent)
61
+
62
+
63
+ }
64
+
65
+ @objc
66
+ func displayDialog(
67
+ _ data: String?
68
+ ) -> Void {
69
+
70
+ DispatchQueue.main.async {
71
+ if let contoller = UIApplication.shared.delegate?.window??.rootViewController,
72
+ let userInfo = data?.convertToStringAnyDictionary()
73
+ {
74
+
75
+ var aps = [String:Any]()
76
+ aps["notifInfo"] = userInfo
77
+ SmartMessage.shared.handleNotification(baseExtensionController: contoller,
78
+ baseView: contoller.view,
79
+ aps: aps,
80
+ isNotificationWillPresent: true)
81
+ }
82
+ }
83
+
84
+ }
85
+
86
+ @objc
87
+ func requestNotificationPermission() -> Void {
88
+ SmartMessage.shared.requestPushPermission()
89
+ }
90
+
91
+ @objc
92
+ func requestNotificationPermissionWithPromise(
93
+ _ resolve: @escaping RCTPromiseResolveBlock,
94
+ rejecter reject: @escaping RCTPromiseRejectBlock
95
+ ) -> Void {
96
+ SmartMessage.shared.requestPushPermission()
97
+ }
98
+
99
+ @objc
100
+ func requestLocationPermission() -> Void {
101
+ SmartMessage.shared.requestLocationPermission()
102
+ }
103
+
104
+ @objc
105
+ func requestLocationPermissionWithPromise(
106
+ _ resolve: @escaping RCTPromiseResolveBlock,
107
+ rejecter reject: @escaping RCTPromiseRejectBlock
108
+ ) -> Void {
109
+ SmartMessage.shared.requestLocationPermission()
110
+ }
111
+
112
+ @objc
113
+ func getToken(
114
+ _ resolve: RCTPromiseResolveBlock,
115
+ rejecter reject: RCTPromiseRejectBlock
116
+ ) -> Void {
117
+
118
+ if (SmartMessage.shared.getApnsDeviceToken() != nil) {
119
+ resolve(SmartMessage.shared.getApnsDeviceToken()!)
120
+ } else {
121
+ let error = NSError(domain: "SMP", code: -1)
122
+ reject("getToken failed : ", "Token is null or has not been set yet.", error)
123
+ }
124
+ }
125
+
126
+ @objc
127
+ func getUserInfo(
128
+ _ resolve: @escaping RCTPromiseResolveBlock,
129
+ rejecter reject: @escaping RCTPromiseRejectBlock
130
+ ) -> Void {
131
+
132
+ SmartMessage.shared.getUserInfo(){ result in
133
+ switch result {
134
+ case .success(let response):
135
+ do{
136
+ try resolve(response.userInfo.encodeToJsonString())
137
+ }catch let error as NSError{
138
+ reject("getUserInfo failed : ",error.localizedDescription,error)
139
+ }
140
+ break
141
+ case .failure(let error):
142
+ reject("getUserInfo failed : ",error.localizedDescription,error)
143
+ break
144
+ case .empty:
145
+ let error = NSError(domain: "SMP", code: -1)
146
+ reject("getUserInfo failed : ","No data",error)
147
+ break
148
+ }
149
+ }
150
+
151
+ }
152
+
153
+ @objc
154
+ func setUserInfo(_ data: String?) -> Void {
155
+
156
+ guard let userInfo = data?.convertToStringAnyDictionary()else{
157
+ return
158
+ }
159
+
160
+ var memberFields = [SMMemberFieldItemModel]()
161
+
162
+ let decoder = JSONDecoder()
163
+
164
+ for memberField in (userInfo["memberfields"] as? [Dictionary<String,String>] ?? []) {
165
+ do {
166
+ let data = try JSONSerialization.data(withJSONObject: memberField)
167
+ memberFields.append(try decoder.decode(SMMemberFieldItemModel.self, from: data))
168
+ }catch{
169
+
170
+ }
171
+ }
172
+
173
+ let userModel = UserInfoRequestModel(
174
+ name: userInfo["name"] as? String ?? "",
175
+ surname: userInfo["surname"] as? String ?? "",
176
+ email: userInfo["email"] as? String ?? "",
177
+ mobile: userInfo["mobile"] as? String ?? "",
178
+ id: userInfo["id"] as? String ?? "",
179
+ birthdate: userInfo["birthdate"] as? String ?? "",
180
+ gender: userInfo["gender"] as? String ?? "-1",
181
+ username: userInfo["username"] as? String ?? "",
182
+ rcvNot: userInfo["rcvNot"] as? Bool ?? true,
183
+ tags: userInfo["tags"] as? String ?? "",
184
+ lang: userInfo["lang"] as? String ?? "",
185
+ memberFields: memberFields
186
+ )
187
+
188
+ SmartMessage.shared.setUserInfo(userModel: userModel)
189
+ }
190
+
191
+
192
+ @objc
193
+ func setUserInfoWithPromise(_ data: String?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
194
+
195
+ guard let userInfo = data?.convertToStringAnyDictionary()else{
196
+ return
197
+ }
198
+
199
+ var memberFields = [SMMemberFieldItemModel]()
200
+
201
+ let decoder = JSONDecoder()
202
+
203
+ for memberField in (userInfo["memberfields"] as? [Dictionary<String,String>] ?? []) {
204
+ do {
205
+ let data = try JSONSerialization.data(withJSONObject: memberField)
206
+ memberFields.append(try decoder.decode(SMMemberFieldItemModel.self, from: data))
207
+ }catch{
208
+
209
+ }
210
+ }
211
+
212
+ let userModel = UserInfoRequestModel(
213
+ name: userInfo["name"] as? String ?? "",
214
+ surname: userInfo["surname"] as? String ?? "",
215
+ email: userInfo["email"] as? String ?? "",
216
+ mobile: userInfo["mobile"] as? String ?? "",
217
+ id: userInfo["id"] as? String ?? "",
218
+ birthdate: userInfo["birthdate"] as? String ?? "",
219
+ gender: userInfo["gender"] as? String ?? "-1",
220
+ username: userInfo["username"] as? String ?? "",
221
+ rcvNot: userInfo["rcvNot"] as? Bool ?? true,
222
+ tags: userInfo["tags"] as? String ?? "",
223
+ lang: userInfo["lang"] as? String ?? "",
224
+ memberFields: memberFields
225
+ )
226
+
227
+ SmartMessage.shared.setUserInfo(userModel: userModel){ result in
228
+ switch result {
229
+ case .success(let response):
230
+ do{
231
+ resolve(try response.encodeToJsonString())
232
+ }catch let error as NSError {
233
+ reject("setUserInfo failed : ",error.localizedDescription,error)
234
+ }
235
+ break
236
+ case .failure(let error):
237
+ reject("setUserInfo failed : ",error.localizedDescription,error)
238
+ break
239
+ case .empty:
240
+ let error = NSError(domain: "SMP", code: -1)
241
+ reject("setUserInfo failed : ","No data",error)
242
+ break
243
+ }
244
+
245
+ }
246
+ }
247
+
248
+ @objc
249
+ func getMessageList(_ messageListRequestData: String?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
250
+
251
+ guard let messageListRequest = messageListRequestData?.convertToStringAnyDictionary() else {
252
+ reject("getMessageList has failed : ","data could not be converted to MessageListRequestModel",nil)
253
+ return
254
+ }
255
+
256
+ let messageListRequestModel : MessageListRequestModel = MessageListRequestModel.init(
257
+ customerNo: messageListRequest["customerNo"] as? String ?? "",
258
+ externalId: messageListRequest["externalId"] as? String ?? "",
259
+ status: messageListRequest["status"] as? [String] ?? [""],
260
+ pushType: messageListRequest["pushType"] as? [String] ?? [""],
261
+ expiredPush: messageListRequest["expiredPush"] as? Bool ?? false,
262
+ index: messageListRequest["index"] as? Int ?? 0,
263
+ size: messageListRequest["size"] as? Int ?? 0,
264
+ orderBy: messageListRequest["orderBy"] as? String ?? "",
265
+ startDate: messageListRequest["startDate"] as? String ?? "",
266
+ endDate: messageListRequest["endDate"] as? String ?? ""
267
+ )
268
+
269
+ SmartMessage.shared.getMessageList(request: messageListRequestModel){ result in
270
+ switch result {
271
+ case .success(let response):
272
+ do{
273
+ resolve(try response.encodeToJsonString())
274
+ }catch let error as NSError {
275
+ reject("getMessageList has failed : ",error.localizedDescription,error)
276
+ }
277
+ break
278
+ case .failure(let error):
279
+ reject("getMessageList has failed : ",error.localizedDescription,error)
280
+ break
281
+ case .empty:
282
+ let error = NSError(domain: "SMP", code: -1)
283
+ reject("getMessageList has failed : ","No data",error)
284
+ break
285
+ }
286
+
287
+ }
288
+
289
+ }
290
+
291
+ @objc
292
+ func getNotificationContent(_ contentUrl: String?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
293
+
294
+ if (contentUrl == nil || contentUrl!.isEmpty) {
295
+ reject("getNotificationContent has failed : ","contentUrl cannot be null or empty",nil)
296
+ return
297
+ }
298
+
299
+ SmartMessage.shared.getMessageContent(contentUrl: contentUrl!){ result in
300
+
301
+
302
+ switch result {
303
+ case .success(let response):
304
+ resolve(response.convertToDictionary()?.convertToJson())
305
+ break
306
+ case .failure(let error):
307
+ reject("getMessageList has failed : ",error.localizedDescription,error)
308
+ break
309
+ case .empty:
310
+ let error = NSError(domain: "SMP", code: -1)
311
+ reject("getMessageList has failed : ","No data",error)
312
+ break
313
+ }
314
+ }
315
+
316
+ }
317
+
318
+
319
+ @objc
320
+ func isLocationEnabled() -> Bool {
321
+ return SmartMessage.shared.isLocationEnabled()
322
+ }
323
+
324
+ @objc
325
+ func startLocationTracking() -> Void {
326
+ return SmartMessage.shared.startLocationServices()
327
+ }
328
+
329
+ @objc
330
+ func stopLocationTracking() -> Void {
331
+ return SmartMessage.shared.stopLocationServices()
332
+ }
333
+
334
+ @objc
335
+ func matchContactDevice(_ requestData : String?){
336
+
337
+ if(requestData == nil || requestData!.isEmpty){
338
+ print("matchContactDeviceWithPromise has failed : requestData cannot be null or empty")
339
+ return
340
+ }
341
+
342
+ do{
343
+ let decoder = JSONDecoder()
344
+ let data = requestData!.data(using: .utf8)!
345
+ let matchContactDeviceRequest = try decoder.decode(MatchContactDeviceRequestModel.self, from: data)
346
+ SmartMessage.shared.matchContactDevice(matchContactDeviceRequest: matchContactDeviceRequest)
347
+ }catch let error as NSError {
348
+ print(error)
349
+ }
350
+
351
+ }
352
+
353
+ @objc
354
+ func matchContactDeviceWithPromise(_ requestData : String?, resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
355
+
356
+ if(requestData == nil || requestData!.isEmpty){
357
+ reject("matchContactDeviceWithPromise has failed : ","requestData cannot be null or empty",nil)
358
+ return
359
+ }
360
+
361
+ do{
362
+ let decoder = JSONDecoder()
363
+ let data = requestData!.data(using: .utf8)!
364
+ let matchContactDeviceRequest = try decoder.decode(MatchContactDeviceRequestModel.self, from: data)
365
+
366
+ SmartMessage.shared.matchContactDevice(matchContactDeviceRequest: matchContactDeviceRequest){ sdkResult in
367
+ switch sdkResult {
368
+ case .success(let response):
369
+ do{
370
+ let responseJson = try response.encodeToJsonString()
371
+ resolve(responseJson)
372
+ }
373
+ catch let error {
374
+ reject("matchContactDeviceWithPromise failed : ",error.localizedDescription,error)
375
+ }
376
+ case .failure(let error):
377
+ reject("matchContactDeviceWithPromise failed : ",error.localizedDescription,error)
378
+ case .empty:
379
+ reject("matchContactDeviceWithPromise failed : ","No data", nil)
380
+ @unknown default:
381
+ reject("matchContactDeviceWithPromise failed : ","Unknown case", nil)
382
+ }
383
+ }
384
+
385
+ }catch let error as NSError {
386
+ print(error)
387
+ }
388
+
389
+ }
390
+
391
+ @objc
392
+ func saveConfig(){
393
+ do{
394
+ try SmartMessage.shared.saveConfig()
395
+ }catch ConfigError.configPlistNotFoundError{
396
+ print("Config.plist could not be found")
397
+ }catch ConfigError.decodeToModelError{
398
+ print("Config.plist could not decode to config model")
399
+ }catch let error{
400
+ print(error.localizedDescription)
401
+ }
402
+ }
403
+
404
+ @objc
405
+ func saveConfigWithPromise(_ resolve: @escaping RCTPromiseResolveBlock,
406
+ rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
407
+
408
+ do{
409
+ try SmartMessage.shared.saveConfig()
410
+ resolve(true)
411
+ }catch ConfigError.configPlistNotFoundError{
412
+ reject("saveConfigWithPromise has failed : ","Config.plist could not be found",nil)
413
+ }catch ConfigError.decodeToModelError{
414
+ print("saveConfigWithPromise")
415
+ reject("saveConfigWithPromise has failed : ","Config.plist could not decode to config model",nil)
416
+ }catch let error{
417
+ reject("saveConfigWithPromise has failed : ",error.localizedDescription,error)
418
+ }
419
+ }
420
+
421
+ @objc
422
+ func saveNotificationToDB(_ notificationModel: String, _ isSeen : Bool) {
423
+
424
+ guard let notificationModelDict = notificationModel.convertToStringAnyDictionary() else{
425
+ return
426
+ }
427
+
428
+ SmartMessage.shared.saveNotificationToDB(notification: notificationModelDict)
429
+
430
+ }
431
+
432
+ @objc
433
+ func getNotificationListFromDB(_ resolve: @escaping RCTPromiseResolveBlock,
434
+ rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
435
+
436
+ guard let notificationList = SmartMessage.shared.getNotificationListFromDB() else{
437
+ reject("getNotificationListFromDB","Message list is empty or there was an error when getting the list from core db",nil)
438
+ return
439
+ }
440
+
441
+ do{
442
+ resolve(try notificationList.encodeToJsonString())
443
+ }catch let error as NSError {
444
+ reject("getNotificationListFromDB",error.localizedDescription,error)
445
+ }
446
+
447
+ }
448
+
449
+ @objc
450
+ func updateNotificationAsSeen(_ notificationId: String?){
451
+
452
+ if(notificationId == nil || notificationId!.isEmpty){
453
+ return
454
+ }
455
+
456
+ SmartMessage.shared.updateNotificationAsSeen(notificationId: notificationId!)
457
+ }
458
+
459
+ @objc
460
+ func updateNotificationContent(_ notificationId: String?, _ notificationModel: String?){
461
+
462
+ if(notificationId == nil || notificationId!.isEmpty || notificationModel == nil || notificationModel!.isEmpty){
463
+ return
464
+ }
465
+
466
+ SmartMessage.shared.updateNotificationContent(notificationId: notificationId!, notificationString: notificationModel!)
467
+ }
468
+
469
+ @objc
470
+ func reportCustomEvent(_ eventIdentifier: String!,_ uniqueId: String!,_ parameters: String?) -> Void {
471
+
472
+ guard let parametersDictionary = parameters?.convertToStringStringDictionary() else { return }
473
+
474
+ SmartMessage.shared.reportCustomEvent(eventIdentifier: eventIdentifier, uniqueId: uniqueId, parameters: parametersDictionary)
475
+ }
476
+
477
+ @objc
478
+ func reportCustomEventWithPromise( _ eventIdentifier: String!,_ uniqueId: String!,_ parameters: String?,resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
479
+
480
+ guard let parametersDictionary = parameters?.convertToStringStringDictionary() else { return }
481
+
482
+ SmartMessage.shared.reportCustomEvent(eventIdentifier: eventIdentifier, uniqueId: uniqueId, parameters: parametersDictionary){ result in
483
+ switch result {
484
+ case .success(let response):
485
+ do{
486
+ resolve(try response.encodeToJsonString())
487
+ }catch let error as NSError {
488
+ reject("reportCustomEvent failed : ",error.localizedDescription,error)
489
+ }
490
+ break
491
+ case .failure(let error):
492
+ reject("reportCustomEvent failed : ",error.localizedDescription,error)
493
+ case .empty:
494
+ let error = NSError(domain: "SMP", code: -1)
495
+ reject("reportCustomEvent failed : ","No data",error)
496
+ break
497
+ }
498
+ }
499
+ }
500
+
501
+ @objc
502
+ func reportLoggedIn() -> Void {
503
+ SmartMessage.shared.reportLogin()
504
+ }
505
+
506
+ @objc
507
+ func reportLoggedInWithPromise(_ resolve: @escaping RCTPromiseResolveBlock,
508
+ rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
509
+
510
+ SmartMessage.shared.reportLogin(){ result in
511
+ switch result {
512
+ case .success(let response):
513
+ do{
514
+ resolve(try response.encodeToJsonString())
515
+ }catch let error as NSError {
516
+ reject("reportLoggedIn failed : ",error.localizedDescription,error)
517
+ }
518
+ break
519
+ case .failure(let error):
520
+ reject("reportLoggedIn failed : ",error.localizedDescription,error)
521
+ case .empty:
522
+ let error = NSError(domain: "SMP", code: -1)
523
+ reject("reportLoggedIn failed : ","No data",error)
524
+ break
525
+ }
526
+ }
527
+ }
528
+
529
+ @objc
530
+ func reportLoggedOut() -> Void {
531
+ SmartMessage.shared.reportLogout();
532
+ }
533
+
534
+ @objc
535
+ func reportLoggedOutWithPromise(_ resolve: @escaping RCTPromiseResolveBlock,
536
+ rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
537
+
538
+ SmartMessage.shared.reportLogout(){ result in
539
+ switch result {
540
+ case .success(let response):
541
+ do{
542
+ resolve(try response.encodeToJsonString())
543
+ }catch let error as NSError {
544
+ reject("reportLoggedOut failed : ",error.localizedDescription,error)
545
+ }
546
+ break
547
+ case .failure(let error):
548
+ reject("reportLoggedOut failed : ",error.localizedDescription,error)
549
+ case .empty:
550
+ let error = NSError(domain: "SMP", code: -1)
551
+ reject("reportLoggedOut failed : ","No data",error)
552
+ break
553
+ }
554
+ }
555
+
556
+ }
557
+
558
+
559
+ @objc
560
+ func permissionUpdate(_ permissionType:String,_ isGranted:Bool) -> Void {
561
+
562
+ if let type = PermissionType.init(rawValue: permissionType){
563
+ SmartMessage.shared.updatePermission(permissionType: type , isGranted:isGranted)
564
+ }else{
565
+ return
566
+ }
567
+
568
+ }
569
+
570
+ @objc
571
+ func permissionUpdateWithPromise(_ permissionType:String,_ isGranted:Bool,resolver resolve: @escaping RCTPromiseResolveBlock, rejecter reject: @escaping RCTPromiseRejectBlock) -> Void {
572
+
573
+ if let type = PermissionType.init(rawValue: permissionType){
574
+
575
+ SmartMessage.shared.updatePermission(permissionType: type , isGranted:isGranted){ result in
576
+
577
+ switch result {
578
+ case .success(let response):
579
+ do{
580
+ resolve(try response.encodeToJsonString())
581
+ }catch let error as NSError {
582
+ reject("updatePermission failed : ",error.localizedDescription,error)
583
+ }
584
+ break
585
+ case .failure(let error):
586
+ reject("updatePermission failed : ",error.localizedDescription,error)
587
+ break
588
+ case .empty:
589
+ let error = NSError(domain: "SMP", code: -1)
590
+ reject("updatePermission failed : ","No data",error)
591
+ break
592
+ }
593
+ }
594
+ }else{
595
+ let error = NSError(domain: "SMP", code: -1)
596
+ reject("updatePermission failed : ","PermissionType could not be casted",error)
597
+ return
598
+ }
599
+
600
+ }
601
+
602
+ @objc
603
+ static func requiresMainQueueSetup() -> Bool {
604
+ return true
605
+ }
606
+
607
+ }
608
+
609
+ extension String {
610
+ func convertToStringAnyDictionary() -> [String: Any]? {
611
+ var dict: Dictionary<String, Any>?
612
+
613
+ if let data = self.data(using: .utf8) {
614
+ do {
615
+ dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: Any]
616
+ } catch {
617
+ print(error.localizedDescription)
618
+ }
619
+ }
620
+ return dict
621
+ }
622
+
623
+ func convertToStringStringDictionary() -> [String: String]? {
624
+ var dict: Dictionary<String, String>?
625
+
626
+ if let data = self.data(using: .utf8) {
627
+ do {
628
+ dict = try JSONSerialization.jsonObject(with: data, options: []) as? [String: String]
629
+ } catch {
630
+ print(error.localizedDescription)
631
+ }
632
+ }
633
+ return dict
634
+ }
635
+
636
+ func safeValue(_ defaultValue: String = "") -> String {
637
+ guard let _ = self as String? else {
638
+ return defaultValue
639
+ }
640
+ return self
641
+ }
642
+ }
643
+
644
+ extension Dictionary{
645
+ func convertToJson() -> String {
646
+ if let theJSONData = try? JSONSerialization.data(withJSONObject: self, options: []) {
647
+ return String(data: theJSONData,encoding: .utf8)!
648
+ }
649
+ return ""
650
+ }
651
+ }
652
+
653
+ extension UserInfoModel{
654
+ func convertToJson() -> String {
655
+ if let theJSONData = try? JSONSerialization.data(withJSONObject: self, options: []) {
656
+ return String(data: theJSONData,encoding: .utf8)!
657
+ }
658
+ return ""
659
+ }
660
+ }
package/package.json ADDED
@@ -0,0 +1,38 @@
1
+ {
2
+ "name": "smartmessage-react-native",
3
+ "version": "2.11.2",
4
+ "description": "SmartMessage SMP React Native SDK",
5
+ "main": "index.js",
6
+ "author": "SmartMessage",
7
+ "email": "engineering.accounts@smartmessage.com",
8
+ "repository": {
9
+ "url": "https://github.com/smartmessagesdk/SmartMessageSDK-ReactNative"
10
+ },
11
+ "homepage": "https://www.smartmessage.com",
12
+ "license": "MIT",
13
+ "files": [
14
+ "src",
15
+ "android",
16
+ "ios",
17
+ "*.podspec",
18
+ "!ios/build",
19
+ "!android/build",
20
+ "!android/gradle",
21
+ "!android/gradlew",
22
+ "!android/gradlew.bat",
23
+ "!android/local.properties",
24
+ "!**/__tests__",
25
+ "!**/__mocks__",
26
+ "!**/.*"
27
+ ],
28
+ "scripts": {
29
+ },
30
+ "dependencies": {},
31
+ "peerDependencies": {
32
+ "react-native": ">=0.61.0"
33
+ },
34
+ "keywords": [
35
+ "react-native",
36
+ "smartmessage"
37
+ ]
38
+ }