فهرست منبع

Merge pull request #563 from deltachat/avatarUpdateBugfix

ContactDetail / GroupDetail Header updates
cyBerta 5 سال پیش
والد
کامیت
847bf75c02

+ 13 - 2
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -85,6 +85,7 @@ class ContactDetailViewController: UITableViewController {
 
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
+        updateHeader() // maybe contact name has been edited
         tableView.reloadData()
     }
 
@@ -94,10 +95,10 @@ class ContactDetailViewController: UITableViewController {
         tableView.register(ContactCell.self, forCellReuseIdentifier: ContactCell.reuseIdentifier)
         headerCell.frame = CGRect(0, 0, tableView.frame.width, ContactCell.cellHeight)
         tableView.tableHeaderView = headerCell
-
     }
 
     // MARK: - UITableViewDatasource, UITableViewDelegate
+
     override func numberOfSections(in tableView: UITableView) -> Int {
         return viewModel.numberOfSections
     }
@@ -171,8 +172,18 @@ class ContactDetailViewController: UITableViewController {
         return Constants.defaultHeaderHeight
     }
 
-    // MARK: - actions
+    // MARK: - updates
+    private func updateHeader() {
+        headerCell.updateDetails(title: viewModel.contact.displayName, subtitle: viewModel.contact.email)
+        if let img = viewModel.contact.profileImage {
+            headerCell.setImage(img)
+        } else {
+            headerCell.setBackupImage(name: viewModel.contact.displayName, color: viewModel.contact.color)
+        }
+        headerCell.setVerified(isVerified: viewModel.contact.isVerified)
+    }
 
+    // MARK: - actions
     private func handleCellAction(for index: Int) {
         let action = viewModel.chatActionFor(row: index)
         switch action {

+ 8 - 3
deltachat-ios/Controller/GroupChatDetailViewController.swift

@@ -43,7 +43,6 @@ class GroupChatDetailViewController: UIViewController {
 
     lazy var tableView: UITableView = {
         let table = UITableView(frame: .zero, style: .grouped)
-        table.bounces = false
         table.register(UITableViewCell.self, forCellReuseIdentifier: "tableCell")
         table.register(ActionCell.self, forCellReuseIdentifier: "actionCell")
         table.register(ContactCell.self, forCellReuseIdentifier: "contactCell")
@@ -137,12 +136,12 @@ class GroupChatDetailViewController: UIViewController {
 
     override func viewWillAppear(_ animated: Bool) {
         super.viewWillAppear(animated)
+        //update chat object, maybe chat name was edited
+        chat = DcChat(id: chat.id)
         updateGroupMembers()
         tableView.reloadData() // to display updates
         editBarButtonItem.isEnabled = currentUser != nil
         updateHeader()
-        //update chat object, maybe chat name was edited
-        chat = DcChat(id: chat.id)
     }
 
     // MARK: - update
@@ -156,6 +155,12 @@ class GroupChatDetailViewController: UIViewController {
             title: chat.name,
             subtitle: String.localizedStringWithFormat(String.localized("n_members"), chat.contactIds.count)
         )
+        if let img = chat.profileImage {
+            groupHeader.setImage(img)
+        } else {
+            groupHeader.setBackupImage(name: chat.name, color: chat.color)
+        }
+        groupHeader.setVerified(isVerified: chat.isVerified)
     }
 
     // MARK: - actions

+ 0 - 1
deltachat-ios/Controller/NewGroupController.swift

@@ -60,7 +60,6 @@ class NewGroupController: UITableViewController, MediaPickerDelegate {
         title = isVerifiedGroup ? String.localized("menu_new_verified_group") : String.localized("menu_new_group")
         doneButton = UIBarButtonItem(barButtonSystemItem: .done, target: self, action: #selector(doneButtonPressed))
         navigationItem.rightBarButtonItem = doneButton
-        tableView.bounces = false
         doneButton.isEnabled = false
         tableView.register(ContactCell.self, forCellReuseIdentifier: "contactCell")
         tableView.register(ActionCell.self, forCellReuseIdentifier: "actionCell")

+ 5 - 2
deltachat-ios/ViewModel/ContactDetailViewModel.swift

@@ -18,6 +18,7 @@ protocol ContactDetailViewModelProtocol {
 class ContactDetailViewModel: ContactDetailViewModelProtocol {
 
     let context: DcContext
+
     enum ProfileSections {
         case startChat
         case attachments
@@ -38,7 +39,10 @@ class ContactDetailViewModel: ContactDetailViewModelProtocol {
 
     var contactId: Int
 
-    var contact: DcContact
+    var contact: DcContact {
+        return DcContact(id: contactId)
+    }
+
     private let chatId: Int?
     private let sharedChats: DcChatlist
     private var sections: [ProfileSections] = []
@@ -50,7 +54,6 @@ class ContactDetailViewModel: ContactDetailViewModelProtocol {
         self.context = context
         self.contactId = contactId
         self.chatId = chatId
-        self.contact = DcContact(id: contactId)
         self.sharedChats = context.getChatlist(flags: 0, queryString: nil, queryId: contactId)
 
         sections.append(.attachments)