alqindiirsyam 2 năm trước cách đây
mục cha
commit
e5206124a4

+ 7 - 5
appbuilder-ios/AppBuilder/AppBuilder/SecondTabViewController.swift

@@ -74,11 +74,13 @@ class SecondTabViewController: UIViewController, UIScrollViewDelegate, UIGesture
     let audioEngine = AVAudioEngine()
     
     func filterContentForSearchText(_ searchText: String) {
-        switch segment.selectedSegmentIndex {
-        case 1:
-            fillteredData = self.groups.filter { $0.name.lowercased().contains(searchText.lowercased()) }
-        default:
-            fillteredData = self.chats.filter { $0.name.lowercased().contains(searchText.lowercased()) || $0.messageText.lowercased().contains(searchText.lowercased()) }
+        if !searchText.isEmpty {
+            switch segment.selectedSegmentIndex {
+            case 1:
+                fillteredData = self.groups.filter { $0.name.lowercased().contains(searchText.lowercased()) }
+            default:
+                fillteredData = self.chats.filter { $0.name.lowercased().contains(searchText.lowercased()) || $0.messageText.lowercased().contains(searchText.lowercased()) }
+            }
         }
         tableView.reloadData()
     }

+ 34 - 16
appbuilder-ios/NexilisLite/NexilisLite/Source/Extension.swift

@@ -379,8 +379,8 @@ extension UIColor {
         return renderColor(hex: "#798F9A")
     }
     
-    public static var linkColor: UIColor {
-        return renderColor(hex: "#0000EE")
+    public static var mentionColor: UIColor {
+        return renderColor(hex: "#53bdea")
     }
     
     public static var blueBubbleColor: UIColor {
@@ -791,23 +791,41 @@ extension String {
         //Check Mention
         let finalTextAfterRichText = finalText.string
         if finalTextAfterRichText.contains("@") {
-            let listMembers = Member.getAllMember(group_id: group_id)
-            if listMembers.count > 0 {
-                for i in 0..<listMembers.count {
-                    if isEditing {
-                        if listMentionInTextField.count > 0 {
+            if !group_id.isEmpty {
+                let listMembers = Member.getAllMember(group_id: group_id)
+                if listMembers.count > 0 {
+                    for i in 0..<listMembers.count {
+                        if isEditing {
+                            if listMentionInTextField.count > 0 {
+                                let name = (listMembers[i].firstName + " " + listMembers[i].lastName).trimmingCharacters(in: .whitespaces)
+                                if listMentionInTextField.firstIndex(where: { ($0.firstName + " " + $0.lastName).trimmingCharacters(in: .whitespaces) == name }) != nil {
+                                    let range = NSString(string: finalTextAfterRichText).range(of: "@\(name)", options: .caseInsensitive)
+                                    finalText.addAttribute(.foregroundColor, value: UIColor.mentionColor, range: range)
+                                }
+                            }
+                        } else {
                             let name = (listMembers[i].firstName + " " + listMembers[i].lastName).trimmingCharacters(in: .whitespaces)
-                            if listMentionInTextField.firstIndex(where: { ($0.firstName + " " + $0.lastName).trimmingCharacters(in: .whitespaces) == name }) != nil {
-                                let range = NSString(string: finalTextAfterRichText).range(of: "@\(name)", options: .caseInsensitive)
-                                finalText.addAttribute(.foregroundColor, value: UIColor.orangeColor, range: range)
+                            let range = NSString(string: finalTextAfterRichText).range(of: listMembers[i].pin, options: .caseInsensitive)
+                            if range.lowerBound != range.upperBound {
+                                finalText.mutableString.replaceOccurrences(of: listMembers[i].pin, with: name, options: .literal, range: range)
+                                finalText.addAttribute(.foregroundColor, value: UIColor.mentionColor, range: NSString(string: finalText.string).range(of: "@\(name)"))
                             }
                         }
-                    } else {
-                        let name = (listMembers[i].firstName + " " + listMembers[i].lastName).trimmingCharacters(in: .whitespaces)
-                        let range = NSString(string: finalTextAfterRichText).range(of: listMembers[i].pin, options: .caseInsensitive)
-                        if range.lowerBound != range.upperBound {
-                            finalText.mutableString.replaceOccurrences(of: listMembers[i].pin, with: name, options: .literal, range: range)
-                            finalText.addAttribute(.foregroundColor, value: UIColor.orangeColor, range: NSString(string: finalText.string).range(of: "@\(name)"))
+                    }
+                }
+            } else {
+                let listTextEnter = finalText.string.split(separator: "\n")
+                for j in 0...listTextEnter.count - 1 {
+                    let listText = listTextEnter[j].split(separator: " ")
+                    let listMention = listText.filter({ $0.starts(with: "@")})
+                    if listMention.count > 0 {
+                        for i in 0..<listMention.count {
+                            let f_pin = (String(listMention[i])).substring(from: 1, to: listMention[i].count)
+                            let member = Member.getMember(f_pin: f_pin)
+                            if member != nil {
+                                let name = (member!.firstName + " " + member!.lastName).trimmingCharacters(in: .whitespaces)
+                                finalText.mutableString.replaceOccurrences(of: f_pin, with: name, options: .literal, range: NSString(string: finalText.string).range(of: f_pin))
+                            }
                         }
                     }
                 }

+ 7 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/IncomingThread.swift

@@ -283,6 +283,7 @@ class IncomingThread {
     private func mobileInquiry(message: TMessage) {
         var message_id = message.getBody(key: CoreMessage_TMessageKey.MESSAGE_ID)
         let err_code = message.getBody(key: CoreMessage_TMessageKey.ERRCOD)
+        let message_scope = message.getBody(key: CoreMessage_TMessageKey.MESSAGE_SCOPE_ID)
         if message_id.isEmpty {
             message_id = message.getStatus()
         }
@@ -295,6 +296,11 @@ class IncomingThread {
                     if let message = cursor.string(forColumnIndex: 0) {
                         print("MASUK MINQ ADA MESSAGE")
                         OutgoingThread.default.addQueue(message: TMessage(data: message))
+                        if message_scope != "3" {
+                            DispatchQueue.main.async {
+                                self.updateInquiry(messageId: message_id)
+                            }
+                        }
                     }
                     cursor.close()
                 }
@@ -303,6 +309,7 @@ class IncomingThread {
     }
     
     private func updateInquiry(messageId: String) {
+        print("UPDATE INQUIRY")
         Database.shared.database?.inTransaction({ (fmdb, rollback) in
             _ = Database.shared.updateRecord(fmdb: fmdb, table: "INQUIRY", cvalues: [
                 "status" : "1"

+ 17 - 0
appbuilder-ios/NexilisLite/NexilisLite/Source/Model/Group.swift

@@ -151,4 +151,21 @@ public class Member: User {
         })
         return members
     }
+    
+    public static func getMember(f_pin: String) -> Member? {
+        var member: Member?
+        Database.shared.database?.inTransaction({ fmdb, rollback in
+            if let cursor = Database.shared.getRecords(fmdb: fmdb, query: "select f_pin, first_name, last_name from GROUPZ_MEMBER where f_pin = '\(f_pin)'") {
+                while cursor.next() {
+                    member = Member(pin: cursor.string(forColumnIndex: 0) ?? "",
+                                    firstName: cursor.string(forColumnIndex: 1) ?? "",
+                                    lastName: cursor.string(forColumnIndex: 2) ?? "",
+                                    thumb: "",
+                                    position: "")
+                }
+                cursor.close()
+            }
+        })
+        return member
+    }
 }

+ 13 - 11
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/ContactChatViewController.swift

@@ -46,16 +46,18 @@ class ContactChatViewController: UITableViewController {
     var noData = false
     
     func filterContentForSearchText(_ searchText: String) {
-        switch segment.selectedSegmentIndex {
-        case 1:
-            Utils.inTabChats = false
-            fillteredData = self.contacts.filter { $0.fullName.lowercased().contains(searchText.lowercased()) }
-        case 2:
-            Utils.inTabChats = false
-            fillteredData = self.groups.filter { $0.name.lowercased().contains(searchText.lowercased()) }
-        default:
-            Utils.inTabChats = true
-            fillteredData = self.chats.filter { $0.name.lowercased().contains(searchText.lowercased()) || $0.messageText.lowercased().contains(searchText.lowercased()) }
+        if !searchText.isEmpty {
+            switch segment.selectedSegmentIndex {
+            case 1:
+                Utils.inTabChats = false
+                fillteredData = self.contacts.filter { $0.fullName.lowercased().contains(searchText.lowercased()) }
+            case 2:
+                Utils.inTabChats = false
+                fillteredData = self.groups.filter { $0.name.lowercased().contains(searchText.lowercased()) }
+            default:
+                Utils.inTabChats = true
+                fillteredData = self.chats.filter { $0.name.lowercased().contains(searchText.lowercased()) || $0.messageText.lowercased().contains(searchText.lowercased()) }
+            }
         }
         tableView.reloadData()
     }
@@ -74,7 +76,7 @@ class ContactChatViewController: UITableViewController {
         
         navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Cancel".localized(), style: .plain, target: self, action: #selector(cancel(sender:)))
         
-        var childrenMenu : [UIAction] = [
+        let childrenMenu : [UIAction] = [
             UIAction(title: "Create Group".localized(), image: UIImage(systemName: "person.and.person"), handler: {[weak self](_) in
                 let controller = AppStoryBoard.Palio.instance.instantiateViewController(identifier: "createGroupNav") as! UINavigationController
                 let vc = controller.topViewController as! GroupCreateViewController