|
@@ -1642,7 +1642,13 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
|
|
|
let idMe = UserDefaults.standard.string(forKey: "me")!
|
|
|
if chatData[CoreMessage_TMessageKey.F_PIN] == self.dataPerson["f_pin"]!! || chatData[CoreMessage_TMessageKey.L_PIN] == self.dataPerson["f_pin"]!! || chatData[CoreMessage_TMessageKey.L_PIN] == self.fPinContacCenter || requester == idMe {
|
|
|
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]! })
|
|
|
+ var idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! })
|
|
|
+ if let idxMessageIdParent = self.groupImages.firstIndex(where: { $0.value.contains(where: { $0.messageId == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! }) }) {
|
|
|
+ if let idxInImages = self.groupImages[idxMessageIdParent].value.firstIndex(where: { $0.messageId == chatData[CoreMessage_TMessageKey.MESSAGE_ID]! }) {
|
|
|
+ self.groupImages[idxMessageIdParent].value[idxInImages].status = chatData[CoreMessage_TMessageKey.STATUS]!
|
|
|
+ }
|
|
|
+ idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String == self.groupImages[idxMessageIdParent].key })
|
|
|
+ }
|
|
|
if (idx != nil) {
|
|
|
if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
|
|
|
self.dataMessages[idx!]["lock"] = "1"
|
|
@@ -1672,7 +1678,13 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
|
|
|
}
|
|
|
}
|
|
|
else if (chatData.keys.contains("message_id")) {
|
|
|
- let idx = self.dataMessages.firstIndex(where: { "'\(String(describing: $0["message_id"] as? String))'" == chatData["message_id"]! })
|
|
|
+ var idx = self.dataMessages.firstIndex(where: { "'\(String(describing: $0["message_id"] as? String))'" == chatData["message_id"]! })
|
|
|
+ if let idxMessageIdParent = self.groupImages.firstIndex(where: { $0.value.contains(where: { $0.messageId == chatData["message_id"]! }) }) {
|
|
|
+ if let idxInImages = self.groupImages[idxMessageIdParent].value.firstIndex(where: { $0.messageId == chatData["message_id"]! }) {
|
|
|
+ self.groupImages[idxMessageIdParent].value[idxInImages].status = chatData[CoreMessage_TMessageKey.STATUS]!
|
|
|
+ }
|
|
|
+ idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String == self.groupImages[idxMessageIdParent].key })
|
|
|
+ }
|
|
|
if (idx != nil) {
|
|
|
if (chatData[CoreMessage_TMessageKey.DELETE_MESSAGE_FLAG] == "1") {
|
|
|
self.dataMessages[idx!]["lock"] = "1"
|
|
@@ -1703,7 +1715,13 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
|
|
|
}
|
|
|
else {
|
|
|
let messageId = chatData[CoreMessage_TMessageKey.MESSAGE_ID]!.split(separator: ",")[1]
|
|
|
- let idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String ?? "" == messageId })
|
|
|
+ var idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String ?? "" == messageId })
|
|
|
+ if let idxMessageIdParent = self.groupImages.firstIndex(where: { $0.value.contains(where: { $0.messageId == messageId }) }) {
|
|
|
+ if let idxInImages = self.groupImages[idxMessageIdParent].value.firstIndex(where: { $0.messageId == messageId }) {
|
|
|
+ self.groupImages[idxMessageIdParent].value[idxInImages].status = chatData[CoreMessage_TMessageKey.STATUS]!
|
|
|
+ }
|
|
|
+ idx = self.dataMessages.firstIndex(where: { $0["message_id"] as? String == self.groupImages[idxMessageIdParent].key })
|
|
|
+ }
|
|
|
if (idx != nil) {
|
|
|
self.dataMessages[idx!]["status"] = chatData[CoreMessage_TMessageKey.STATUS]!
|
|
|
let section = self.dataDates.firstIndex(of: self.dataMessages[idx!]["chat_date"] as! String)
|
|
@@ -2700,41 +2718,85 @@ public class EditorPersonal: UIViewController, ImageVideoPickerDelegate, UIGestu
|
|
|
return
|
|
|
}
|
|
|
DispatchQueue.global().async {
|
|
|
- Database.shared.database?.inTransaction({ (fmdb, rollback) in
|
|
|
- _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
|
|
|
- "status" : "4"
|
|
|
- ], _where: "message_id = '\(message_id)'")
|
|
|
- })
|
|
|
- message.mStatus = CoreMessage_TMessageUtil.getTID()
|
|
|
- message.mBodies[CoreMessage_TMessageKey.L_PIN] = f_pin
|
|
|
- message.mBodies[CoreMessage_TMessageKey.MESSAGE_ID] = "-2,\(message_id)"
|
|
|
- _ = Nexilis.write(message: message)
|
|
|
+ if let listGroupImages = self.groupImages.first(where: { $0.key == message_id }) {
|
|
|
+ let valueListGroupImages = listGroupImages.value
|
|
|
+ for i in 0..<valueListGroupImages.count {
|
|
|
+ Database.shared.database?.inTransaction({ (fmdb, rollback) in
|
|
|
+ _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
|
|
|
+ "status" : "4"
|
|
|
+ ], _where: "message_id = '\(valueListGroupImages[i].messageId)'")
|
|
|
+ })
|
|
|
+ message.mStatus = CoreMessage_TMessageUtil.getTID()
|
|
|
+ message.mBodies[CoreMessage_TMessageKey.L_PIN] = f_pin
|
|
|
+ message.mBodies[CoreMessage_TMessageKey.MESSAGE_ID] = "-2,\(valueListGroupImages[i].messageId)"
|
|
|
+ _ = Nexilis.write(message: message)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Database.shared.database?.inTransaction({ (fmdb, rollback) in
|
|
|
+ _ = Database.shared.updateRecord(fmdb: fmdb, table: "MESSAGE", cvalues: [
|
|
|
+ "status" : "4"
|
|
|
+ ], _where: "message_id = '\(message_id)'")
|
|
|
+ })
|
|
|
+ message.mStatus = CoreMessage_TMessageUtil.getTID()
|
|
|
+ message.mBodies[CoreMessage_TMessageKey.L_PIN] = f_pin
|
|
|
+ message.mBodies[CoreMessage_TMessageKey.MESSAGE_ID] = "-2,\(message_id)"
|
|
|
+ _ = Nexilis.write(message: message)
|
|
|
+ }
|
|
|
}
|
|
|
if let index = dataMessages.firstIndex(where: {$0["message_id"] as? String == message_id}) {
|
|
|
dataMessages[index]["status"] = "4"
|
|
|
let auto = UserDefaults.standard.bool(forKey: "autoDownload")
|
|
|
if auto {
|
|
|
if dataMessages[index]["image_id"] as? String != nil && !((dataMessages[index]["image_id"] as? String)!.isEmpty) {
|
|
|
- Download().startHTTP(forKey:dataMessages[index]["image_id"] as! String) { (name, progress) in
|
|
|
- guard progress == 100 else {
|
|
|
- return
|
|
|
- }
|
|
|
- let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
|
|
|
- let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
|
|
|
- let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
|
|
|
- if let dirPath = paths.first {
|
|
|
- let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(self.dataMessages[index]["image_id"] as! String)
|
|
|
- let image = UIImage(contentsOfFile: imageURL.path)
|
|
|
- let save = UserDefaults.standard.bool(forKey: "saveToGallery")
|
|
|
- if save {
|
|
|
- UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
|
|
|
+ if let listGroupImages = self.groupImages.first(where: { $0.key == message_id }) {
|
|
|
+ let valueListGroupImages = listGroupImages.value
|
|
|
+ for i in 0..<valueListGroupImages.count {
|
|
|
+ Download().startHTTP(forKey:valueListGroupImages[i].imageId) { (name, progress) in
|
|
|
+ guard progress == 100 else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
|
|
|
+ let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
|
|
|
+ let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
|
|
|
+ if let dirPath = paths.first {
|
|
|
+ let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(valueListGroupImages[i].imageId)
|
|
|
+ let image = UIImage(contentsOfFile: imageURL.path)
|
|
|
+ let save = UserDefaults.standard.bool(forKey: "saveToGallery")
|
|
|
+ if save {
|
|
|
+ UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ let section = dataDates.firstIndex(of: dataMessages[index]["chat_date"] as! String)
|
|
|
+ let row = dataMessages.filter({$0["chat_date"] as! String == dataMessages[index]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as? String == message_id})
|
|
|
+ if row != nil && section != nil{
|
|
|
+ tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
- DispatchQueue.main.async { [self] in
|
|
|
- let section = dataDates.firstIndex(of: dataMessages[index]["chat_date"] as! String)
|
|
|
- let row = dataMessages.filter({$0["chat_date"] as! String == dataMessages[index]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as? String == message_id})
|
|
|
- if row != nil && section != nil{
|
|
|
- tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
|
|
|
+ } else {
|
|
|
+ Download().startHTTP(forKey:dataMessages[index]["image_id"] as! String) { (name, progress) in
|
|
|
+ guard progress == 100 else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let nsDocumentDirectory = FileManager.SearchPathDirectory.documentDirectory
|
|
|
+ let nsUserDomainMask = FileManager.SearchPathDomainMask.userDomainMask
|
|
|
+ let paths = NSSearchPathForDirectoriesInDomains(nsDocumentDirectory, nsUserDomainMask, true)
|
|
|
+ if let dirPath = paths.first {
|
|
|
+ let imageURL = URL(fileURLWithPath: dirPath).appendingPathComponent(self.dataMessages[index]["image_id"] as! String)
|
|
|
+ let image = UIImage(contentsOfFile: imageURL.path)
|
|
|
+ let save = UserDefaults.standard.bool(forKey: "saveToGallery")
|
|
|
+ if save {
|
|
|
+ UIImageWriteToSavedPhotosAlbum(image!, nil, nil, nil)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ DispatchQueue.main.async { [self] in
|
|
|
+ let section = dataDates.firstIndex(of: dataMessages[index]["chat_date"] as! String)
|
|
|
+ let row = dataMessages.filter({$0["chat_date"] as! String == dataMessages[index]["chat_date"] as! String}).firstIndex(where: { $0["message_id"] as? String == message_id})
|
|
|
+ if row != nil && section != nil{
|
|
|
+ tableChatView.reloadRows(at: [IndexPath(row: row!, section: section!)], with: .none)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|