alqindiirsyam 3 년 전
부모
커밋
ce3676c2c3

+ 52 - 54
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Chat/EditorGroup.swift

@@ -686,64 +686,50 @@ public class EditorGroup: UIViewController {
     
     @objc func onStatusChat(notification: NSNotification) {
         DispatchQueue.main.async {
-            if (self.viewIfLoaded?.window != nil) {
-                let data:[AnyHashable : Any] = notification.userInfo!
-                if let dataMessage = data["message"] as? TMessage {
-                    let idMe = UserDefaults.standard.string(forKey: "me") as String?
-                    let chatData = dataMessage.mBodies
-                    if (chatData[CoreMessage_TMessageKey.F_PIN] == idMe || chatData[CoreMessage_TMessageKey.L_PIN] == self.dataGroup["group_id"] as? String || chatData[CoreMessage_TMessageKey.F_PIN] == self.dataGroup["group_id"] as? String) && chatData[CoreMessage_TMessageKey.MESSAGE_SCOPE_ID] == "4" {
-                        if (chatData.keys.contains(CoreMessage_TMessageKey.MESSAGE_ID) && !(chatData[CoreMessage_TMessageKey.MESSAGE_ID]!).contains("-2,")) {
-                            let idx = self.dataMessages.firstIndex(where: { $0["message_id"] as! String == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! })
-                            if (idx != nil) {
-                                if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
-                                    self.dataMessages[idx!]["lock"] = "1"
-                                    self.dataMessages[idx!]["reff_id"] = ""
-                                    let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
-                                    let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
-                                    if row != nil && section != nil  {
-                                        self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
-                                    }
-                                    if self.reffId != nil && self.reffId == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! {
-                                        self.deleteReplyView()
-                                    }
-                                } else {
-                                    self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
-                                    let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
-                                    let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
-                                    if row != nil && section != nil  {
-                                        self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
-                                    }
+            let data:[AnyHashable : Any] = notification.userInfo!
+            if let dataMessage = data["message"] as? TMessage {
+                let idMe = UserDefaults.standard.string(forKey: "me") as String?
+                let chatData = dataMessage.mBodies
+                if (chatData[CoreMessage_TMessageKey.F_PIN] == idMe || chatData[CoreMessage_TMessageKey.L_PIN] == self.dataGroup["group_id"] as? String || chatData[CoreMessage_TMessageKey.F_PIN] == self.dataGroup["group_id"] as? String) && chatData[CoreMessage_TMessageKey.MESSAGE_SCOPE_ID] == "4" {
+                    if (chatData.keys.contains(CoreMessage_TMessageKey.MESSAGE_ID) && !(chatData[CoreMessage_TMessageKey.MESSAGE_ID]!).contains("-2,")) {
+                        let idx = self.dataMessages.firstIndex(where: { $0["message_id"] as! String == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! })
+                        if (idx != nil) {
+                            if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
+                                self.dataMessages[idx!]["lock"] = "1"
+                                self.dataMessages[idx!]["reff_id"] = ""
+                                let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
+                                let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
+                                if row != nil && section != nil  {
+                                    self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
                                 }
-                            }
-                        }
-                        else if (chatData.keys.contains("message_id")) {
-                            let idx = self.dataMessages.firstIndex(where: { "'\($0["message_id"] as! String)'" == chatData["message_id"]! })
-                            if (idx != nil) {
-                                if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
-                                    self.dataMessages[idx!]["lock"] = "1"
-                                    self.dataMessages[idx!]["reff_id"] = ""
-                                    let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
-                                    let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
-                                    if row != nil && section != nil  {
-                                        self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
-                                    }
-                                    if self.reffId != nil && self.reffId == chatData["message_id"]! {
-                                        self.deleteReplyView()
-                                    }
-                                } else {
-                                    self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
-                                    let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
-                                    let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
-                                    if row != nil && section != nil  {
-                                        self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
-                                    }
+                                if self.reffId != nil && self.reffId == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! {
+                                    self.deleteReplyView()
+                                }
+                            } else {
+                                self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
+                                let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
+                                let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
+                                if row != nil && section != nil  {
+                                    self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
                                 }
                             }
                         }
-                        else {
-                            let messageId = chatData[CoreMessage_TMessageKey.MESSAGE_ID]!.split(separator: ",")[1]
-                            let idx = self.dataMessages.firstIndex(where: { $0["message_id"] as! String == messageId })
-                            if (idx != nil) {
+                    }
+                    else if (chatData.keys.contains("message_id")) {
+                        let idx = self.dataMessages.firstIndex(where: { "'\($0["message_id"] as! String)'" == chatData["message_id"]! })
+                        if (idx != nil) {
+                            if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
+                                self.dataMessages[idx!]["lock"] = "1"
+                                self.dataMessages[idx!]["reff_id"] = ""
+                                let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
+                                let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
+                                if row != nil && section != nil  {
+                                    self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
+                                }
+                                if self.reffId != nil && self.reffId == chatData["message_id"]! {
+                                    self.deleteReplyView()
+                                }
+                            } else {
                                 self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
                                 let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
                                 let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
@@ -753,6 +739,18 @@ public class EditorGroup: UIViewController {
                             }
                         }
                     }
+                    else {
+                        let messageId = chatData[CoreMessage_TMessageKey.MESSAGE_ID]!.split(separator: ",")[1]
+                        let idx = self.dataMessages.firstIndex(where: { $0["message_id"] as! String == messageId })
+                        if (idx != nil) {
+                            self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
+                            let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
+                            let row = self.dataMessages.filter({ $0["chat_date"] as! String == self.dataMessages[idx!]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as! String == self.dataMessages[idx!]["message_id"] as! String })
+                            if row != nil && section != nil  {
+                                self.tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
+                            }
+                        }
+                    }
                 }
             }
         }

+ 17 - 2
appbuilder-ios/NexilisLite/NexilisLite/Source/View/Control/MessageInfo.swift

@@ -38,11 +38,21 @@ class MessageInfo: UIViewController, UITableViewDelegate, UITableViewDataSource
         
         view.addSubview(tableStatus)
         tableStatus.anchor(top: view.topAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor)
+        NotificationCenter.default.addObserver(self, selector: #selector(onStatusChat(notification:)), name: NSNotification.Name(rawValue: "onMessageChat"), object: nil)
+    }
+    
+    @objc func onStatusChat(notification: NSNotification) {
+        DispatchQueue.main.async{
+            self.dataStatus.removeAll()
+            self.getData()
+            self.tableStatus.reloadData()
+        }
     }
     
     private func getData() {
         Database.shared.database?.inTransaction({ (fmdb, rollback) in
             if let cursorData = Database.shared.getRecords(fmdb: fmdb, query: "SELECT f_pin, status, time_delivered, time_read, time_ack FROM MESSAGE_STATUS where message_id='\(data["message_id"]!!)'") {
+                var listStatus: [Int] = []
                 while cursorData.next() {
                     var row: [String: Any?] = [:]
                     row["f_pin"] = cursorData.string(forColumnIndex: 0) ?? ""
@@ -51,7 +61,9 @@ class MessageInfo: UIViewController, UITableViewDelegate, UITableViewDataSource
                     row["time_read"] = cursorData.string(forColumnIndex: 3) ?? ""
                     row["time_ack"] = cursorData.string(forColumnIndex: 4) ?? ""
                     dataStatus.append(row)
+                    listStatus.append(Int(row["status"] as! String)!)
                 }
+                data["status"] = "\(listStatus.min() ?? 2)"
                 cursorData.close()
             }
         })
@@ -166,7 +178,7 @@ class MessageInfo: UIViewController, UITableViewDelegate, UITableViewDataSource
         } else if section == 2 && !data.isEmpty && data["read_receipts"] as? String == "8" {
             return dataStatus.filter({ ($0["status"] as! String) == "4" }).count + 1
         }
-        return dataStatus.filter({ ($0["status"] as! String) == "2" || ($0["status"] as! String) == "3" }).count + 1
+        return dataStatus.filter({ ($0["status"] as! String) == "3" }).count + 1
     }
     
     func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
@@ -174,6 +186,9 @@ class MessageInfo: UIViewController, UITableViewDelegate, UITableViewDataSource
         let cell = tableView.dequeueReusableCell(withIdentifier: "cellStatus", for: indexPath as IndexPath)
         cell.selectionStyle = .none
         cell.backgroundColor = .clear
+        cell.accessoryView = nil
+        cell.contentConfiguration = nil
+        cell.contentView.subviews.forEach({ $0.removeFromSuperview() })
         
         if !isPersonal {
             if indexPath.section != 0 {
@@ -184,7 +199,7 @@ class MessageInfo: UIViewController, UITableViewDelegate, UITableViewDataSource
                 
                 let dataStatusAck = dataStatus.filter({ ($0["status"] as! String) == "8" })
                 let dataStatusRead = dataStatus.filter({ ($0["status"] as! String) == "4" })
-                let dataStatusDelivered = dataStatus.filter({ ($0["status"] as! String) == "2" || ($0["status"] as! String) == "3" })
+                let dataStatusDelivered = dataStatus.filter({ ($0["status"] as! String) == "3" })
                 
                 cell.backgroundColor = .white