alqindiirsyam vor 2 Jahren
Ursprung
Commit
17995fb013
18 geänderte Dateien mit 181 neuen und 103 gelöschten Zeilen
  1. 2 1
      appbuilder-ios/AppBuilder/AppBuilder/FirstTabViewController.swift
  2. 17 1
      appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift
  3. 2 1
      appbuilder-ios/AppBuilder/AppBuilder/ThirdTabViewController.swift
  4. 12 2
      appbuilder-ios/AppBuilder/AppBuilder/ViewController.swift
  5. BIN
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Frameworks/WebPKit.framework/Frameworks/libwebp.a
  6. BIN
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Frameworks/WebPKit.framework/WebPKit
  7. BIN
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo
  8. 73 73
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/arm64-apple-ios.abi.json
  9. BIN
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/arm64-apple-ios.swiftmodule
  10. BIN
      appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/nuSDKService
  11. 2 2
      appbuilder-ios/NexilisLite/NexilisLite/Source/IncomingThread.swift
  12. 4 1
      appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift
  13. 6 2
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift
  14. 8 2
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/AddFriendTableViewController.swift
  15. 18 2
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift
  16. 3 0
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupCreateViewController.swift
  17. 20 7
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupDetailViewController.swift
  18. 14 9
      appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ProfileViewController.swift

+ 2 - 1
appbuilder-ios/AppBuilder/AppBuilder/FirstTabViewController.swift

@@ -106,10 +106,11 @@ class FirstTabViewController: UIViewController, UIScrollViewDelegate, UIGestureR
             if ((dateRefresh == nil || Int(Date().timeIntervalSince(dateRefresh!)) >= 60) && FirstTabViewController.atFirstPage) || FirstTabViewController.forceRefresh {
                 let myRequest = URLRequest(url: u)
                 webView.load(myRequest)
+            } else {
+                self.webView.evaluateJavaScript("if(resumeAll){resumeAll();}")
             }
             dateRefresh = Date()
             FirstTabViewController.forceRefresh = false
-            self.webView.evaluateJavaScript("if(resumeAll){resumeAll();}")
         }
         let cpaasMode = PrefsUtil.getCpaasMode()
         let isBurger = cpaasMode == PrefsUtil.CPAAS_MODE_BURGER

+ 17 - 1
appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift

@@ -32,6 +32,8 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
     
     var isAllowSpeech = false
     var alertController = UIAlertController()
+    
+    var noData = false
 
     lazy var searchController: UISearchController = {
         var searchController = UISearchController(searchResultsController: nil)
@@ -854,6 +856,12 @@ extension SecondTabViewController: UITableViewDelegate, UITableViewDataSource {
         default:
             value = chats.count
         }
+        if value == 0 {
+            noData = true
+            value = 1
+        } else {
+            noData = false
+        }
         return value
     }
     
@@ -867,9 +875,17 @@ extension SecondTabViewController: UITableViewDelegate, UITableViewDataSource {
             if content.subviews.count > 0 {
                 content.subviews.forEach { $0.removeFromSuperview() }
             }
-            if chats.count == 0 {
+            if noData {
+                let labelNochat = UILabel()
+                labelNochat.text = "There are no conversations".localized()
+                labelNochat.font = .systemFont(ofSize: 13)
+                labelNochat.textColor = .black
+                content.addSubview(labelNochat)
+                labelNochat.anchor(centerX: content.centerXAnchor, centerY: content.centerYAnchor)
+                cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: .greatestFiniteMagnitude)
                 return cell
             }
+            cell.separatorInset = UIEdgeInsets(top: 0, left: cell.layoutMargins.left, bottom: 0, right: 0)
             let data: Chat
             if isFilltering {
                 data = fillteredData[indexPath.row] as! Chat

+ 2 - 1
appbuilder-ios/AppBuilder/AppBuilder/ThirdTabViewController.swift

@@ -113,10 +113,11 @@ class ThirdTabViewController: UIViewController, UIScrollViewDelegate, UIGestureR
             if ((dateRefresh == nil || Int(Date().timeIntervalSince(dateRefresh!)) >= 60) && ThirdTabViewController.atFirstPage) || ThirdTabViewController.forceRefresh {
                 let myRequest = URLRequest(url: u)
                 webView.load(myRequest)
+            } else {
+                self.webView.evaluateJavaScript("if(resumeAll){resumeAll();}")
             }
             dateRefresh = Date()
             ThirdTabViewController.forceRefresh = false
-            self.webView.evaluateJavaScript("if(resumeAll){resumeAll();}")
         }
         let cpaasMode = PrefsUtil.getCpaasMode()
         let isBurger = cpaasMode == PrefsUtil.CPAAS_MODE_BURGER

+ 12 - 2
appbuilder-ios/AppBuilder/AppBuilder/ViewController.swift

@@ -578,11 +578,12 @@ class ViewController: UITabBarController, UITabBarControllerDelegate, SettingMAB
             let welcomeTitle = UILabel()
             welcomeTitle.text = "Welcome to".localized() + " " + (Bundle.main.displayName ?? "")
             welcomeTitle.font = .systemFont(ofSize: 25, weight: .bold)
+            welcomeTitle.numberOfLines = 0
             viewWelcome.addSubview(welcomeTitle)
-            welcomeTitle.anchor(top: viewWelcome.safeAreaLayoutGuide.topAnchor, left: viewWelcome.safeAreaLayoutGuide.leftAnchor, paddingTop: 10, paddingLeft: 10)
+            welcomeTitle.anchor(top: viewWelcome.safeAreaLayoutGuide.topAnchor, left: viewWelcome.safeAreaLayoutGuide.leftAnchor, right: viewWelcome.safeAreaLayoutGuide.rightAnchor, paddingTop: 10, paddingLeft: 10, paddingRight: 10)
             
             let logoImage = UIImageView()
-            logoImage.image = UIImage(named: "pb_icon")
+            logoImage.image = UIImage(named: getHighResolutionAppIconName() ?? "")
             viewWelcome.addSubview(logoImage)
             logoImage.anchor(centerX: viewWelcome.centerXAnchor, centerY: viewWelcome.centerYAnchor, width: 200, height: 200)
             
@@ -623,6 +624,15 @@ class ViewController: UITabBarController, UITabBarControllerDelegate, SettingMAB
         self.present(welcomeVC, animated: true)
     }
     
+    func getHighResolutionAppIconName() -> String? {
+        guard let infoPlist = Bundle.main.infoDictionary else { return nil }
+        guard let bundleIcons = infoPlist["CFBundleIcons"] as? NSDictionary else { return nil }
+        guard let bundlePrimaryIcon = bundleIcons["CFBundlePrimaryIcon"] as? NSDictionary else { return nil }
+        guard let bundleIconFiles = bundlePrimaryIcon["CFBundleIconFiles"] as? NSArray else { return nil }
+        guard let appIcon = bundleIconFiles.lastObject as? String else { return nil }
+        return appIcon
+    }
+    
     func showWebviewTerm() {
         termVC = UIViewController()
         if let viewTerm = termVC!.view {

BIN
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Frameworks/WebPKit.framework/Frameworks/libwebp.a


BIN
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Frameworks/WebPKit.framework/WebPKit


BIN
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/Project/arm64-apple-ios.swiftsourceinfo


+ 73 - 73
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/arm64-apple-ios.abi.json

@@ -4232,509 +4232,509 @@
       "kind": "StringLiteral",
       "offset": 562,
       "length": 32,
-      "value": "\"nuSDK-S5-230123i-171-14.1-14.0\""
+      "value": "\"nuSDK-S5-230123o-171-14.1-14.0\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 714,
+      "offset": 721,
       "length": 3,
       "value": "171"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 751,
+      "offset": 758,
       "length": 2,
       "value": "96"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 756,
+      "offset": 763,
       "length": 5,
       "value": "86400"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 764,
+      "offset": 771,
       "length": 4,
       "value": "1000"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 845,
+      "offset": 852,
       "length": 22,
       "value": "\"@*)&!$)@)@!)!$)*@#)(\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 894,
+      "offset": 901,
       "length": 164,
       "value": "\"iOS.\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 951,
+      "offset": 958,
       "length": 1,
       "value": "\".\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 1004,
+      "offset": 1011,
       "length": 1,
       "value": "\".\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 1057,
+      "offset": 1064,
       "length": 1,
       "value": "\"\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 1196,
+      "offset": 1203,
       "length": 5,
       "value": "false"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1290,
+      "offset": 1297,
       "length": 2,
       "value": "10"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1326,
+      "offset": 1333,
       "length": 5,
       "value": "3000"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 1366,
+      "offset": 1373,
       "length": 5,
       "value": "false"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1411,
+      "offset": 1418,
       "length": 5,
       "value": "1000"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1447,
+      "offset": 1454,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1477,
+      "offset": 1484,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 1523,
+      "offset": 1530,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 1557,
+      "offset": 1564,
       "length": 65,
       "value": "\"[UNK,0.0,0.0,0.0,0.0m,0.0m\/s∫,0.0,0.0m,0.0m\/s,0.0m,0.0s,0.0s]\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 1795,
+      "offset": 1802,
       "length": 5,
       "value": "false"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 1931,
+      "offset": 1938,
       "length": 5,
       "value": "false"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 2119,
+      "offset": 2126,
       "length": 4,
       "value": "true"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 2155,
+      "offset": 2162,
       "length": 11,
       "value": "1214322513"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 2233,
+      "offset": 2240,
       "length": 19,
       "value": "\"1we2Love3NUs4SDK5\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 2287,
+      "offset": 2294,
       "length": 2,
       "value": "1"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 2327,
+      "offset": 2334,
       "length": 2,
       "value": "1"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 2367,
+      "offset": 2374,
       "length": 3,
       "value": "\"?\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 2442,
+      "offset": 2449,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 2483,
+      "offset": 2490,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 2567,
+      "offset": 2574,
       "length": 4,
       "value": "true"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 2636,
+      "offset": 2643,
       "length": 4,
       "value": "true"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "BooleanLiteral",
-      "offset": 2715,
+      "offset": 2722,
       "length": 4,
       "value": "true"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 2757,
+      "offset": 2764,
       "length": 5,
       "value": "\"***\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 2827,
+      "offset": 2834,
       "length": 5,
       "value": "\"***\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "StringLiteral",
-      "offset": 3301,
+      "offset": 3308,
       "length": 25,
       "value": "\"dqChangeConnectionState\""
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 8561,
+      "offset": 7131,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 9941,
+      "offset": 7198,
       "length": 1,
       "value": "1"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 14610,
+      "offset": 11867,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 16438,
+      "offset": 13695,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 17325,
+      "offset": 14582,
       "length": 1,
       "value": "0"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32242,
+      "offset": 29499,
       "length": 4,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32253,
+      "offset": 29510,
       "length": 19,
       "value": "998"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32279,
+      "offset": 29536,
       "length": 10,
       "value": "997"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32296,
+      "offset": 29553,
       "length": 10,
       "value": "996"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32313,
+      "offset": 29570,
       "length": 10,
       "value": "995"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32330,
+      "offset": 29587,
       "length": 17,
       "value": "994"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32354,
+      "offset": 29611,
       "length": 11,
       "value": "993"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32372,
+      "offset": 29629,
       "length": 9,
       "value": "992"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32388,
+      "offset": 29645,
       "length": 10,
       "value": "991"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32242,
+      "offset": 29499,
       "length": 1,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32253,
+      "offset": 29510,
       "length": 19,
       "value": "998"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32279,
+      "offset": 29536,
       "length": 10,
       "value": "997"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32296,
+      "offset": 29553,
       "length": 10,
       "value": "996"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32313,
+      "offset": 29570,
       "length": 10,
       "value": "995"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32330,
+      "offset": 29587,
       "length": 17,
       "value": "994"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32354,
+      "offset": 29611,
       "length": 11,
       "value": "993"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32372,
+      "offset": 29629,
       "length": 9,
       "value": "992"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32388,
+      "offset": 29645,
       "length": 10,
       "value": "991"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32242,
+      "offset": 29499,
       "length": 1,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32253,
+      "offset": 29510,
       "length": 19,
       "value": "998"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32279,
+      "offset": 29536,
       "length": 10,
       "value": "997"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32296,
+      "offset": 29553,
       "length": 10,
       "value": "996"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32313,
+      "offset": 29570,
       "length": 10,
       "value": "995"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32330,
+      "offset": 29587,
       "length": 17,
       "value": "994"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32354,
+      "offset": 29611,
       "length": 11,
       "value": "993"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32372,
+      "offset": 29629,
       "length": 9,
       "value": "992"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 32388,
+      "offset": 29645,
       "length": 10,
       "value": "991"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33052,
+      "offset": 30309,
       "length": 4,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33063,
+      "offset": 30320,
       "length": 10,
       "value": "998"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33052,
+      "offset": 30309,
       "length": 1,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33063,
+      "offset": 30320,
       "length": 10,
       "value": "998"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33052,
+      "offset": 30309,
       "length": 1,
       "value": "999"
     },
     {
       "filePath": "\/Users\/w.yudoaji\/ImagiNation\/XCode\/nuSDKService\/nuSDKService\/API.swift",
       "kind": "IntegerLiteral",
-      "offset": 33063,
+      "offset": 30320,
       "length": 10,
       "value": "998"
     },

BIN
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/Modules/nuSDKService.swiftmodule/arm64-apple-ios.swiftmodule


BIN
appbuilder-ios/NexilisLite/Frameworks/nuSDKService.framework/nuSDKService


+ 2 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/IncomingThread.swift

@@ -1628,7 +1628,7 @@ class IncomingThread {
             //                        "official_account" : message.getBody(key: CoreMessage_TMessageKey.OFFICIAL_ACCOUNT),
             Database.shared.database?.inTransaction({ (fmdb,rollback) in
                 do {
-                    if let me = UserDefaults.standard.string(forKey: "me"), me == message.mPIN {
+                    if let me = UserDefaults.standard.string(forKey: "me"), me == message.mPIN, !cvalues.isEmpty {
                         let update = Database.shared.updateRecord(fmdb: fmdb, table: "BUDDY", cvalues: cvalues, _where: "f_pin = '\(message.mPIN)'")
                         if(update > 0){
                             if let delegate = Nexilis.shared.personInfoDelegate {
@@ -1637,7 +1637,7 @@ class IncomingThread {
                                 }
                             }
                         }
-                    } else {
+                    } else if !cvalues.isEmpty {
                         let update = Database.shared.updateRecord(fmdb: fmdb, table: "BUDDY", cvalues: cvalues, _where: "f_pin = '\(message.mPIN)'")
                         if(update > 0){
                             if let delegate = Nexilis.shared.personInfoDelegate {

+ 4 - 1
appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift

@@ -869,6 +869,8 @@ public class Nexilis: NSObject {
     
     private static var waitQueue = [String: TMessage]()
     
+    private static var onDispatchGroupLeave = ""
+    
     public static func writeAndWait(message: TMessage, timeout: Int = 15 * 1000) -> TMessage? {
         groupWait.enter()
         _ = write(message: message, timeout: timeout)
@@ -928,8 +930,9 @@ public class Nexilis: NSObject {
         }
         message.mBodies[CoreMessage_TMessageKey.PACKET_ID] = packetId
         if let _ = waitQueue[message.getStatus()] {
-            print("MESSAGE \(message.toLogString())")
+            print("MESSAGE INCOMING DATA \(message.toLogString())")
             if message.mBodies.keys.contains(CoreMessage_TMessageKey.ERRCOD) {
+                print("LEAVE GROUP INCOMING DATA")
                 waitQueue[message.getStatus()] = message
                 groupWait.leave()
                 return

+ 6 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift

@@ -757,7 +757,7 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
                 }
             }
             viewAppBar.addSubview(titleNavigation)
-            if ((User.isOfficial(official_account: (dataPerson["isOfficial"] ?? "")!) && !isContactCenter) || (User.isOfficialRegular(official_account: (dataPerson["isOfficial"] ?? "")!) && fPinContacCenter.isEmpty)) {
+            if ((User.isOfficial(official_account: (dataPerson["isOfficial"] ?? "")!) || User.isOfficialRegular(official_account: (dataPerson["isOfficial"] ?? "")!)) && !isContactCenter) || ((User.isOfficial(official_account: (dataPerson["isOfficial"] ?? "")!) || User.isOfficialRegular(official_account: (dataPerson["isOfficial"] ?? "")!)) && fPinContacCenter.isEmpty) {
                 var name = dataPerson["name"]!!
                 if (isContactCenter) {
                     name = name + " " + "Contact Center".localized()
@@ -826,7 +826,11 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
                     dataPerson["name"] = cursorData.string(forColumnIndex: 1)?.trimmingCharacters(in: .whitespaces)
                     dataPerson["picture"] = cursorData.string(forColumnIndex: 3)
                     dataPerson["isOfficial"] = cursorData.string(forColumnIndex: 2)
-                    dataPerson["user_type"] = cursorData.string(forColumnIndex: 6)
+                    if isContactCenter && isRequestContactCenter {
+                        dataPerson["user_type"] = "0"
+                    } else {
+                        dataPerson["user_type"] = cursorData.string(forColumnIndex: 6)
+                    }
                 } else {
                     dataPerson["f_pin"] = "-999"
                     dataPerson["name"] = "Bot"

+ 8 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/AddFriendTableViewController.swift

@@ -48,7 +48,9 @@ class AddFriendTableViewController: UITableViewController {
         
         title = "Add Friends".localized()
         
-        navigationController?.navigationBar.prefersLargeTitles = true
+        navigationController?.navigationBar.backgroundColor = .mainColor
+        navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
+        navigationController?.navigationBar.largeTitleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
         
         navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel".localized(), style: .plain, target: self, action: #selector(cancel(sender:)))
         
@@ -57,13 +59,17 @@ class AddFriendTableViewController: UITableViewController {
         searchController.searchResultsUpdater = self
         searchController.searchBar.autocapitalizationType = .none
         searchController.searchBar.delegate = self
+        searchController.searchBar.barTintColor = .secondaryColor
+        searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
         searchController.searchBar.placeholder = "Search".localized()
+        searchController.searchBar.setMagnifyingGlassColorTo(color: .mainColor)
+        searchController.searchBar.tintColor = .mainColor
         
         definesPresentationContext = true
         
         navigationItem.searchController = searchController
-        navigationItem.hidesSearchBarWhenScrolling = true
+        navigationItem.hidesSearchBarWhenScrolling = false
         
         tableView.tableFooterView = UIView()
         

+ 18 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -43,6 +43,8 @@ class ContactChatViewController: UITableViewController {
         return !isSearchBarEmpty
     }
     
+    var noData = false
+    
     func filterContentForSearchText(_ searchText: String) {
         switch segment.selectedSegmentIndex {
         case 1:
@@ -116,7 +118,7 @@ class ContactChatViewController: UITableViewController {
             }))
             childrenMenu.append(UIAction(title: "Live Streaming".localized(), image: UIImage(systemName: "video.bubble.left"), handler: {[weak self](_) in
                 let navigationController = UINavigationController(rootViewController: QmeraCreateStreamingViewController())
-                navigationController.modalPresentationStyle = .custom
+                navigationController.modalPresentationStyle = .fullScreen
                 navigationController.navigationBar.tintColor = .white
                 navigationController.navigationBar.barTintColor = .mainColor
                 navigationController.navigationBar.isTranslucent = false
@@ -714,6 +716,12 @@ extension ContactChatViewController {
         default:
             value = chats.count
         }
+        if value == 0 {
+            noData = true
+            value = 1
+        } else {
+            noData = false
+        }
         return value
     }
     
@@ -727,9 +735,17 @@ extension ContactChatViewController {
             if content.subviews.count > 0 {
                 content.subviews.forEach { $0.removeFromSuperview() }
             }
-            if chats.count == 0 {
+            if noData {
+                let labelNochat = UILabel()
+                labelNochat.text = "There are no conversations".localized()
+                labelNochat.font = .systemFont(ofSize: 13)
+                labelNochat.textColor = .black
+                content.addSubview(labelNochat)
+                labelNochat.anchor(centerX: content.centerXAnchor, centerY: content.centerYAnchor)
+                cell.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: .greatestFiniteMagnitude)
                 return cell
             }
+            cell.separatorInset = UIEdgeInsets(top: 0, left: cell.layoutMargins.left, bottom: 0, right: 0)
             let data: Chat
             if isFilltering {
                 data = fillteredData[indexPath.row] as! Chat

+ 3 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupCreateViewController.swift

@@ -19,6 +19,9 @@ class GroupCreateViewController: UITableViewController {
         super.viewDidLoad()
         
         title = "Create Group".localized()
+        
+        navigationController?.navigationBar.backgroundColor = .mainColor
+        navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
 
         navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel".localized(), style: .plain, target: self, action: #selector(cancel(sender:)))
         navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save".localized(), style: .done, target: self, action: #selector(save(sender:)))

+ 20 - 7
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/GroupDetailViewController.swift

@@ -869,13 +869,26 @@ class GroupDetailViewController: UITableViewController {
             return cell
         case .exit:
             let cell = tableView.dequeueReusableCell(withIdentifier: "reuseIdentifier", for: indexPath)
-            cell.accessoryView = nil
-            cell.accessoryType = .none
-            var content = cell.defaultContentConfiguration()
-            content.text = "Exit Group".localized()
-            content.textProperties.color = .red
-            cell.contentConfiguration = content
-            cell.selectionStyle = .default
+            if let g = group {
+                let idMe = UserDefaults.standard.string(forKey: "me") as String?
+                let admins = g.members.filter { member in
+                    return member.position == "1"
+                }
+                var isDeleted = false
+                if admins.count == 1 {
+                    if admins.first?.pin == idMe {
+                        isDeleted = true
+                    }
+                }
+                cell.accessoryView = nil
+                cell.accessoryType = .none
+                var content = cell.defaultContentConfiguration()
+                content.text = isDeleted ? "Delete Group".localized() : "Exit Group".localized()
+                content.textProperties.color = .red
+                cell.contentConfiguration = content
+                cell.selectionStyle = .default
+                return cell
+            }
             return cell
         }
     }

+ 14 - 9
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ProfileViewController.swift

@@ -284,6 +284,7 @@ public class ProfileViewController: UITableViewController {
             self.switchPrivateAccount.setOn(!value, animated: true)
             return
         }
+        Nexilis.showLoader()
         DispatchQueue.global().async {
             let tMessage = CoreMessage_TMessageBank.getChangePersonInfo_New(p_f_pin: self.data)
             tMessage.mBodies[CoreMessage_TMessageKey.PRIVACY_FLAG] = value ? "1" : "0"
@@ -295,18 +296,22 @@ public class ProfileViewController: UITableViewController {
                         ], _where: "f_pin = '\(self.data)'")
                     })
                     DispatchQueue.main.async {
-                        let imageView = UIImageView(image: UIImage(systemName: "checkmark.circle.fill"))
-                        imageView.tintColor = .white
-                        let banner = FloatingNotificationBanner(title: "Successfully changed".localized(), subtitle: nil, titleFont: UIFont.systemFont(ofSize: 16), titleColor: nil, titleTextAlign: .left, subtitleFont: nil, subtitleColor: nil, subtitleTextAlign: nil, leftView: imageView, rightView: nil, style: .success, colors: nil, iconPosition: .center)
-                        banner.show()
+                        Nexilis.hideLoader {
+                            let imageView = UIImageView(image: UIImage(systemName: "checkmark.circle.fill"))
+                            imageView.tintColor = .white
+                            let banner = FloatingNotificationBanner(title: "Successfully changed".localized(), subtitle: nil, titleFont: UIFont.systemFont(ofSize: 16), titleColor: nil, titleTextAlign: .left, subtitleFont: nil, subtitleColor: nil, subtitleTextAlign: nil, leftView: imageView, rightView: nil, style: .success, colors: nil, iconPosition: .center)
+                            banner.show()
+                        }
                     }
                 } else {
                     DispatchQueue.main.async {
-                        let imageView = UIImageView(image: UIImage(systemName: "xmark.circle.fill"))
-                        imageView.tintColor = .white
-                        let banner = FloatingNotificationBanner(title: "Unable to access servers".localized(), subtitle: nil, titleFont: UIFont.systemFont(ofSize: 16), titleColor: nil, titleTextAlign: .left, subtitleFont: nil, subtitleColor: nil, subtitleTextAlign: nil, leftView: imageView, rightView: nil, style: .danger, colors: nil, iconPosition: .center)
-                        banner.show()
-                        self.switchPrivateAccount.setOn(!value, animated: true)
+                        Nexilis.hideLoader {
+                            let imageView = UIImageView(image: UIImage(systemName: "xmark.circle.fill"))
+                            imageView.tintColor = .white
+                            let banner = FloatingNotificationBanner(title: "Unable to access servers".localized(), subtitle: nil, titleFont: UIFont.systemFont(ofSize: 16), titleColor: nil, titleTextAlign: .left, subtitleFont: nil, subtitleColor: nil, subtitleTextAlign: nil, leftView: imageView, rightView: nil, style: .danger, colors: nil, iconPosition: .center)
+                            banner.show()
+                            self.switchPrivateAccount.setOn(!value, animated: true)
+                        }
                     }
                 }
             }