瀏覽代碼

update fix bugs

alqindiirsyam 2 年之前
父節點
當前提交
31c2c72fc7

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

@@ -113,6 +113,7 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
         NotificationCenter.default.addObserver(self, selector: #selector(onReceiveMessage(notification:)), name: NSNotification.Name(rawValue: "onMessageChat"), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReceiveMessage(notification:)), name: NSNotification.Name(rawValue: "onReceiveChat"), object: nil)
         NotificationCenter.default.addObserver(self, selector: #selector(onReload(notification:)), name: NSNotification.Name(rawValue: "onMember"), object: nil)
+        NotificationCenter.default.addObserver(self, selector: #selector(onReload(notification:)), name: NSNotification.Name(rawValue: "onUpdatePersonInfo"), object: nil)
         
         
         
@@ -364,7 +365,11 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
     
     @objc func onReload(notification: NSNotification) {
         let data:[AnyHashable : Any] = notification.userInfo!
-        if data["member"] as! String == UserDefaults.standard.string(forKey: "me")! {
+        if data["member"] as? String == UserDefaults.standard.string(forKey: "me")! {
+            DispatchQueue.main.async {
+                self.getData()
+            }
+        } else if data["state"] as? Int == 99 {
             DispatchQueue.main.async {
                 self.getData()
             }

+ 35 - 33
appbuilder-ios/NexilisLite/NexilisLite/Source/Nexilis.swift

@@ -1536,7 +1536,10 @@ extension Nexilis: CallDelegate {
             let myData = User.getData(pin: idMe)
             let onGoingCC = UserDefaults.standard.string(forKey: "onGoingCC") ?? ""
             if myData?.offline_mode == "1" {
-                API.terminateCall(sParty: nil)
+                Nexilis.startAudio(nMode: 1, bSpeakerOn: false)
+                DispatchQueue.main.asyncAfter(deadline: .now() + 0.5, execute: {
+                    API.terminateCall(sParty: nil)
+                })
                 return
             }
             let deviceId = message.split(separator: ",")[0]
@@ -1607,20 +1610,36 @@ extension Nexilis: CallDelegate {
                         data["isOffline"] = cursorData.string(forColumnIndex: 6)
                         data["user_type"] = cursorData.string(forColumnIndex: 7)
                         cursorData.close()
-                    }
-                })
-                if data["f_pin"] != nil {
-                    let videoController = AppStoryBoard.Palio.instance.instantiateViewController(withIdentifier: "videoVCQmera") as! QmeraVideoViewController
-                    videoController.dataPerson.append(data)
-                    videoController.isInisiator = false
-                    if !onGoingCC.isEmpty {
-                        videoController.users.append(User.getData(pin: data["f_pin"]!!)!)
-                    }
-                    let navigationController = UINavigationController(rootViewController: videoController)
-                    navigationController.modalPresentationStyle = .fullScreen
-                    if !onGoingCC.isEmpty {
-                        videoController.isAutoAccept = true
-                        DispatchQueue.main.asyncAfter(deadline: .now() + isShowAlert!, execute: {
+                        
+                        let videoController = AppStoryBoard.Palio.instance.instantiateViewController(withIdentifier: "videoVCQmera") as! QmeraVideoViewController
+                        videoController.dataPerson.append(data)
+                        videoController.isInisiator = false
+                        if !onGoingCC.isEmpty {
+                            videoController.users.append(User.getData(pin: data["f_pin"]!!)!)
+                        }
+                        let navigationController = UINavigationController(rootViewController: videoController)
+                        navigationController.modalPresentationStyle = .fullScreen
+                        if !onGoingCC.isEmpty {
+                            videoController.isAutoAccept = true
+                            DispatchQueue.main.asyncAfter(deadline: .now() + isShowAlert!, execute: {
+                                if UIApplication.shared.visibleViewController is UIAlertController {
+                                    let vc = UIApplication.shared.visibleViewController as! UIAlertController
+                                    vc.dismiss(animated: true, completion: {
+                                        if UIApplication.shared.visibleViewController?.navigationController != nil {
+                                            UIApplication.shared.visibleViewController?.navigationController?.present(navigationController, animated: true, completion: nil)
+                                        } else {
+                                            UIApplication.shared.visibleViewController?.present(navigationController, animated: true, completion: nil)
+                                        }
+                                    })
+                                    return
+                                }
+                                if UIApplication.shared.visibleViewController?.navigationController != nil {
+                                    UIApplication.shared.visibleViewController?.navigationController?.present(navigationController, animated: true, completion: nil)
+                                } else {
+                                    UIApplication.shared.visibleViewController?.present(navigationController, animated: true, completion: nil)
+                                }
+                            })
+                        } else {
                             if UIApplication.shared.visibleViewController is UIAlertController {
                                 let vc = UIApplication.shared.visibleViewController as! UIAlertController
                                 vc.dismiss(animated: true, completion: {
@@ -1637,26 +1656,9 @@ extension Nexilis: CallDelegate {
                             } else {
                                 UIApplication.shared.visibleViewController?.present(navigationController, animated: true, completion: nil)
                             }
-                        })
-                    } else {
-                        if UIApplication.shared.visibleViewController is UIAlertController {
-                            let vc = UIApplication.shared.visibleViewController as! UIAlertController
-                            vc.dismiss(animated: true, completion: {
-                                if UIApplication.shared.visibleViewController?.navigationController != nil {
-                                    UIApplication.shared.visibleViewController?.navigationController?.present(navigationController, animated: true, completion: nil)
-                                } else {
-                                    UIApplication.shared.visibleViewController?.present(navigationController, animated: true, completion: nil)
-                                }
-                            })
-                            return
-                        }
-                        if UIApplication.shared.visibleViewController?.navigationController != nil {
-                            UIApplication.shared.visibleViewController?.navigationController?.present(navigationController, animated: true, completion: nil)
-                        } else {
-                            UIApplication.shared.visibleViewController?.present(navigationController, animated: true, completion: nil)
                         }
                     }
-                }
+                })
             }
         }
     }

+ 4 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraAudioViewController.swift

@@ -642,6 +642,10 @@ class QmeraAudioViewController: UIViewController {
                             self.end.isEnabled = false
                             self.invite.isEnabled = false
                             self.speaker.isEnabled = false
+                            let controller = self.presentingViewController?.presentedViewController
+                            if controller != nil {
+                                controller!.dismiss(animated: true)
+                            }
                         }
                         DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
                             self.didEnd(sender: true)

+ 1 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraCallContactViewController.swift

@@ -15,6 +15,7 @@ class QmeraCallContactViewController: UITableViewController {
         searchController.searchBar.barTintColor = .secondaryColor
         searchController.searchBar.searchTextField.backgroundColor = .secondaryColor
         searchController.obscuresBackgroundDuringPresentation = false
+        searchController.searchBar.placeholder = "Search".localized()
         return searchController
     }()
     

+ 4 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Call/QmeraVideoViewController.swift

@@ -1054,6 +1054,10 @@ class QmeraVideoViewController: UIViewController {
                     self.vcTimer.invalidate()
                     self.labelTimerVC.text = "Video call is over".localized()
                     _ = Nexilis.getWhiteboardDelegate()?.terminate()
+                    let controller = self.presentingViewController?.presentedViewController
+                    if controller != nil {
+                        controller!.dismiss(animated: true)
+                    }
                     DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
                         self.endAllCall()
                         if self.isInisiator {

+ 31 - 27
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorPersonal.swift

@@ -1500,33 +1500,37 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
         DispatchQueue.main.async { [self] in
             if data["state"] as! Int == 99 && (data["message"] as! String).components(separatedBy: ",")[0] == "delete_buddy" {
                 removed = true
-                navigationItem.rightBarButtonItem = nil
-                navigationItem.rightBarButtonItems = nil
-                changeAppBar()
-                view.addSubview(containerAction)
-                containerAction.translatesAutoresizingMaskIntoConstraints = false
-                NSLayoutConstraint.activate([
-                    containerAction.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
-                    containerAction.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
-                    containerAction.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
-                    containerAction.heightAnchor.constraint(equalToConstant: 120)
-                ])
-                containerAction.backgroundColor = .secondaryColor.withAlphaComponent(0.8)
-                let labelUnfriend = UILabel()
-                containerAction.addSubview(labelUnfriend)
-                labelUnfriend.translatesAutoresizingMaskIntoConstraints = false
-                NSLayoutConstraint.activate([
-                    labelUnfriend.centerYAnchor.constraint(equalTo: containerAction.centerYAnchor),
-                    labelUnfriend.centerXAnchor.constraint(equalTo: containerAction.centerXAnchor),
-                ])
-                labelUnfriend.textColor = .black
-                labelUnfriend.font = UIFont.systemFont(ofSize: 12).bold
-                labelUnfriend.text = "You have unfriended this user".localized()
-                NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadTabChats"), object: nil, userInfo: nil)
-                if contactChatNav.viewIfLoaded?.window != nil {
-                    contactChatNav.dismiss(animated: true)
-                }
-                cancelAction()
+                if forwardSession || copySession || deleteSession || isSearching {
+                    cancelAction()
+                }
+                DispatchQueue.main.asyncAfter(deadline: .now() + 0.35, execute: {[self] in
+                    navigationItem.rightBarButtonItem = nil
+                    navigationItem.rightBarButtonItems = nil
+                    changeAppBar()
+                    view.addSubview(containerAction)
+                    containerAction.translatesAutoresizingMaskIntoConstraints = false
+                    NSLayoutConstraint.activate([
+                        containerAction.leadingAnchor.constraint(equalTo: self.view.leadingAnchor),
+                        containerAction.trailingAnchor.constraint(equalTo: self.view.trailingAnchor),
+                        containerAction.bottomAnchor.constraint(equalTo: self.view.bottomAnchor),
+                        containerAction.heightAnchor.constraint(equalToConstant: 120)
+                    ])
+                    containerAction.backgroundColor = .secondaryColor.withAlphaComponent(0.8)
+                    let labelUnfriend = UILabel()
+                    containerAction.addSubview(labelUnfriend)
+                    labelUnfriend.translatesAutoresizingMaskIntoConstraints = false
+                    NSLayoutConstraint.activate([
+                        labelUnfriend.centerYAnchor.constraint(equalTo: containerAction.centerYAnchor),
+                        labelUnfriend.centerXAnchor.constraint(equalTo: containerAction.centerXAnchor),
+                    ])
+                    labelUnfriend.textColor = .black
+                    labelUnfriend.font = UIFont.systemFont(ofSize: 12).bold
+                    labelUnfriend.text = "You have unfriended this user".localized()
+                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "reloadTabChats"), object: nil, userInfo: nil)
+                    if contactChatNav.viewIfLoaded?.window != nil {
+                        contactChatNav.dismiss(animated: true)
+                    }
+                })
             } else if data["state"] as! Int == 01 {
                 if let dataMessage = try! JSONSerialization.jsonObject(with: (data["message"] as! String).data(using: .utf8)!, options: []) as? [String: String] {
                     if(dataMessage["l_pin"] == dataPerson["f_pin"]!){

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

@@ -25,6 +25,8 @@ class AddFriendTableViewController: UITableViewController {
     
     var isDismiss: (() -> ())?
     
+    var timerSearch: Timer?
+    
     func filterContentForSearchText(_ searchText: String) {
         fillteredData = data.filter{ $0.fullName.lowercased().contains(searchText.lowercased()) }
         getDataSearch(searchText: searchText) { data in
@@ -191,7 +193,12 @@ class AddFriendTableViewController: UITableViewController {
 extension AddFriendTableViewController: UISearchControllerDelegate, UISearchBarDelegate, UISearchResultsUpdating {
     
     func updateSearchResults(for searchController: UISearchController) {
-        filterContentForSearchText(searchController.searchBar.text!.trimmingCharacters(in: .whitespacesAndNewlines))
+        timerSearch?.invalidate()
+        let currentText = searchController.searchBar.text!.trimmingCharacters(in: .whitespacesAndNewlines)
+        if currentText.count >= 2 || currentText.isEmpty {
+            timerSearch = Timer.scheduledTimer(withTimeInterval: 0.5, repeats: false, block: {_ in
+                self.filterContentForSearchText(currentText)
+            })
+        }
     }
-    
 }

+ 10 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -998,4 +998,14 @@ extension ContactChatViewController: UISearchControllerDelegate, UISearchBarDele
         return mutableAttributedString
     }
     
+    func searchBarTextDidBeginEditing(_ searchBar: UISearchBar) {
+        searchBar.showsCancelButton = true
+        let cBtn = searchBar.value(forKey: "cancelButton") as! UIButton
+        cBtn.setTitle("Cancel".localized(), for: .normal)
+    }
+    
+    func searchBarTextDidEndEditing(_ searchBar: UISearchBar) {
+        searchBar.showsCancelButton = false
+    }
+    
 }

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

@@ -59,6 +59,8 @@ public class ProfileViewController: UITableViewController {
     
     var isBNI = false
     
+    var fromListFriend = false
+    
     private func reload() {
         if let user = self.user {
             self.title = "\(user.firstName) \(user.lastName)"
@@ -151,6 +153,18 @@ public class ProfileViewController: UITableViewController {
         } else {
             navigationController?.navigationBar.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.black]
         }
+        if fromListFriend {
+            if let me = UserDefaults.standard.string(forKey: "me"), me == self.data || self.flag == Flag.me {
+                Database.shared.database?.inTransaction({ fmdb, rollback in
+                    let idMe = UserDefaults.standard.string(forKey: "me")!
+                    if let cursorCount = Database.shared.getRecords(fmdb: fmdb, query: "select COUNT(*) from BUDDY where f_pin <> '\(idMe)' "), cursorCount.next() {
+                        let count = cursorCount.string(forColumnIndex: 0)!
+                        self.countFriend.text = count + " " + "Friends".localized()
+                        cursorCount.close()
+                    }
+                })
+            }
+        }
     }
     
     public override func viewDidDisappear(_ animated: Bool) {
@@ -470,14 +484,18 @@ public class ProfileViewController: UITableViewController {
     }
     
     @objc func didTapUnfriend(sender: Any) {
-        call.isEnabled = false
-        video.isEnabled = false
-        message.isEnabled = false
+        if call != nil {
+            call.isEnabled = false
+            video.isEnabled = false
+            message.isEnabled = false
+        }
         let alert = UIAlertController(title: "", message: "Are you sure to unfriend".localized() + " \(self.user!.fullName)", preferredStyle: .alert)
         alert.addAction(UIAlertAction(title: "Cancel".localized(), style: UIAlertAction.Style.default, handler: {(_) in
-            self.call.isEnabled = true
-            self.video.isEnabled = true
-            self.message.isEnabled = true
+            if self.call != nil {
+                self.call.isEnabled = true
+                self.video.isEnabled = true
+                self.message.isEnabled = true
+            }
         } ))
         alert.addAction(UIAlertAction(title: "Delete".localized(), style: .destructive, handler: {(_) in
             Nexilis.showLoader()
@@ -508,9 +526,11 @@ public class ProfileViewController: UITableViewController {
                             }
                         })
                     } else {
-                        self.call.isEnabled = true
-                        self.video.isEnabled = true
-                        self.message.isEnabled = true
+                        if self.call != nil {
+                            self.call.isEnabled = true
+                            self.video.isEnabled = true
+                            self.message.isEnabled = true
+                        }
                         Nexilis.hideLoader(completion: {})
                         let imageView = UIImageView(image: UIImage(systemName: "xmark.circle.fill"))
                         imageView.tintColor = .white
@@ -565,6 +585,7 @@ public class ProfileViewController: UITableViewController {
             controller.isInviteCC = true
             controller.listFriends = true
             show(controller, sender: nil)
+            fromListFriend = true
         }
     }