فهرست منبع

Merge pull request #871 from deltachat/values_to_profile_rows

add some values to documents, gallery, ephemeral messages cells
bjoern 5 سال پیش
والد
کامیت
839a4ef2f4

+ 15 - 15
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -28,8 +28,9 @@ class ContactDetailViewController: UITableViewController {
     }()
 
     private lazy var ephemeralMessagesCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("ephemeral_messages")
+        cell.detailTextLabel?.text = String.localized(viewModel.chatIsEphemeral ? "on" : "off")
         cell.selectionStyle = .none
         cell.accessoryType = .disclosureIndicator
         return cell
@@ -68,8 +69,9 @@ class ContactDetailViewController: UITableViewController {
     }()
 
     private lazy var galleryCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("gallery")
+        cell.detailTextLabel?.text = "\(viewModel.galleryItemMessageIds.count)"
         cell.accessoryType = .disclosureIndicator
         if viewModel.chatId == 0 {
             cell.isUserInteractionEnabled = false
@@ -79,8 +81,9 @@ class ContactDetailViewController: UITableViewController {
     }()
 
     private lazy var documentsCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("documents")
+        cell.detailTextLabel?.text = "\(viewModel.documentItemMessageIds.count)"
         cell.accessoryType = .disclosureIndicator
         if viewModel.chatId == 0 {
             cell.isUserInteractionEnabled = false
@@ -112,6 +115,7 @@ class ContactDetailViewController: UITableViewController {
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
         updateHeader() // maybe contact name has been edited
+        updateCellValues()
         tableView.reloadData()
     }
 
@@ -215,6 +219,12 @@ class ContactDetailViewController: UITableViewController {
         headerCell.setVerified(isVerified: viewModel.contact.isVerified)
     }
 
+    private func updateCellValues() {
+        ephemeralMessagesCell.detailTextLabel?.text = String.localized(viewModel.chatIsEphemeral ? "on" : "off")
+        galleryCell.detailTextLabel?.text = "\(viewModel.galleryItemMessageIds.count)"
+        documentsCell.detailTextLabel?.text = "\(viewModel.documentItemMessageIds.count)"
+    }
+
     // MARK: - actions
     private func handleChatAction(for index: Int) {
         let action = viewModel.chatActionFor(row: index)
@@ -350,23 +360,13 @@ class ContactDetailViewController: UITableViewController {
     }
 
     private func showDocuments() {
-        let messageIds: [Int] = viewModel.context.getChatMedia(
-            chatId: viewModel.chatId,
-            messageType: DC_MSG_FILE,
-            messageType2: DC_MSG_AUDIO,
-            messageType3: 0
-        ).reversed()
+        let messageIds: [Int] = viewModel.documentItemMessageIds.reversed()
         let fileGalleryController = DocumentGalleryController(fileMessageIds: messageIds)
         navigationController?.pushViewController(fileGalleryController, animated: true)
     }
 
     private func showGallery() {
-        let messageIds: [Int] = viewModel.context.getChatMedia(
-            chatId: viewModel.chatId,
-            messageType: DC_MSG_IMAGE,
-            messageType2: DC_MSG_GIF,
-            messageType3: DC_MSG_VIDEO
-        ).reversed()
+        let messageIds: [Int] = viewModel.galleryItemMessageIds.reversed()
         let galleryController = GalleryViewController(mediaMessageIds: messageIds)
         navigationController?.pushViewController(galleryController, animated: true)
     }

+ 37 - 15
deltachat-ios/Controller/GroupChatDetailViewController.swift

@@ -56,6 +56,28 @@ class GroupChatDetailViewController: UIViewController {
         return dcContext.getChat(chatId: chatId)
     }
 
+    var chatIsEphemeral: Bool {
+        return chatId != 0 && dcContext.getChatEphemeralTimer(chatId: chatId) > 0
+    }
+
+    private var galleryItemMessageIds: [Int] {
+        return dcContext.getChatMedia(
+            chatId: chatId,
+            messageType: DC_MSG_IMAGE,
+            messageType2: DC_MSG_GIF,
+            messageType3: DC_MSG_VIDEO
+        )
+    }
+
+    private var documentItemMessageIds: [Int] {
+        return dcContext.getChatMedia(
+            chatId: chatId,
+            messageType: DC_MSG_FILE,
+            messageType2: DC_MSG_AUDIO,
+            messageType3: 0
+        )
+    }
+
     // stores contactIds
     private var groupMemberIds: [Int] = []
 
@@ -93,8 +115,9 @@ class GroupChatDetailViewController: UIViewController {
     }()
 
     private lazy var ephemeralMessagesCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("ephemeral_messages")
+        cell.detailTextLabel?.text = String.localized(chatIsEphemeral ? "on" : "off")
         cell.selectionStyle = .none
         cell.accessoryType = .disclosureIndicator
         return cell
@@ -134,15 +157,17 @@ class GroupChatDetailViewController: UIViewController {
     }()
 
     private lazy var galleryCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("gallery")
+        cell.detailTextLabel?.text = "\(galleryItemMessageIds.count)"
         cell.accessoryType = .disclosureIndicator
         return cell
     }()
 
     private lazy var documentsCell: UITableViewCell = {
-        let cell = UITableViewCell(style: .default, reuseIdentifier: nil)
+        let cell = UITableViewCell(style: .value1, reuseIdentifier: nil)
         cell.textLabel?.text = String.localized("documents")
+        cell.detailTextLabel?.text = "\(documentItemMessageIds.count)"
         cell.accessoryType = .disclosureIndicator
         return cell
     }()
@@ -183,6 +208,7 @@ class GroupChatDetailViewController: UIViewController {
         tableView.reloadData() // to display updates
         editBarButtonItem.isEnabled = currentUser != nil
         updateHeader()
+        updateCellValues()
     }
 
     override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
@@ -211,6 +237,12 @@ class GroupChatDetailViewController: UIViewController {
         groupHeader.setVerified(isVerified: chat.isVerified)
     }
 
+    private func updateCellValues() {
+        ephemeralMessagesCell.detailTextLabel?.text = String.localized(chatIsEphemeral ? "on" : "off")
+        galleryCell.detailTextLabel?.text = "\(galleryItemMessageIds.count)"
+        documentsCell.detailTextLabel?.text = "\(documentItemMessageIds.count)"
+    }
+
     // MARK: - actions
     @objc func editButtonPressed() {
         showGroupChatEdit(chat: chat)
@@ -266,22 +298,12 @@ class GroupChatDetailViewController: UIViewController {
     }
 
     private func showDocuments() {
-        let messageIds: [Int] = dcContext.getChatMedia(
-            chatId: chatId,
-            messageType: DC_MSG_FILE,
-            messageType2: DC_MSG_AUDIO,
-            messageType3: 0
-        ).reversed()
+        let messageIds: [Int] = documentItemMessageIds.reversed()
         let fileGalleryController = DocumentGalleryController(fileMessageIds: messageIds)
         navigationController?.pushViewController(fileGalleryController, animated: true)    }
 
     private func showGallery() {
-        let messageIds: [Int] = dcContext.getChatMedia(
-            chatId: chatId,
-            messageType: DC_MSG_IMAGE,
-            messageType2: DC_MSG_GIF,
-            messageType3: DC_MSG_VIDEO
-        ).reversed()
+        let messageIds: [Int] = galleryItemMessageIds.reversed()
         let galleryController = GalleryViewController(mediaMessageIds: messageIds)
         navigationController?.pushViewController(galleryController, animated: true)
     }

+ 22 - 0
deltachat-ios/ViewModel/ContactDetailViewModel.swift

@@ -81,6 +81,28 @@ class ContactDetailViewModel {
         return chatId != 0 && context.getChat(chatId: chatId).isMuted
     }
 
+    var chatIsEphemeral: Bool {
+        return chatId != 0 && context.getChatEphemeralTimer(chatId: chatId) > 0
+    }
+
+    var galleryItemMessageIds: [Int] {
+        return context.getChatMedia(
+            chatId: chatId,
+            messageType: DC_MSG_IMAGE,
+            messageType2: DC_MSG_GIF,
+            messageType3: DC_MSG_VIDEO
+        )
+    }
+
+    var documentItemMessageIds: [Int] {
+        return context.getChatMedia(
+            chatId: chatId,
+            messageType: DC_MSG_FILE,
+            messageType2: DC_MSG_AUDIO,
+            messageType3: 0
+        )
+    }
+
     var numberOfSections: Int {
         return sections.count
     }