Selaa lähdekoodia

header tap action for contact/chatDetail

nayooti 5 vuotta sitten
vanhempi
commit
da3751300a

+ 7 - 0
DcCore/DcCore/DC/Wrapper.swift

@@ -1107,6 +1107,13 @@ public class DcContact {
         return nil
     }()
 
+	public var profileImageURL: URL? {
+		guard let cString = dc_contact_get_profile_image(contactPointer) else { return nil }
+		let filename = String(cString: cString)
+		dc_str_unref(cString)
+		return URL(fileURLWithPath: filename, isDirectory: false)
+	}
+
     public var color: UIColor {
         return UIColor(netHex: Int(dc_contact_get_color(contactPointer)))
     }

+ 16 - 6
deltachat-ios/Controller/ContactDetailViewController.swift

@@ -6,15 +6,16 @@ class ContactDetailViewController: UITableViewController {
     private let viewModel: ContactDetailViewModel
 
     private lazy var headerCell: ContactDetailHeader = {
-        let cell = ContactDetailHeader()
-        cell.updateDetails(title: viewModel.contact.displayName, subtitle: viewModel.contact.email)
+        let header = ContactDetailHeader()
+        header.updateDetails(title: viewModel.contact.displayName, subtitle: viewModel.contact.email)
         if let img = viewModel.contact.profileImage {
-            cell.setImage(img)
+            header.setImage(img)
         } else {
-            cell.setBackupImage(name: viewModel.contact.displayName, color: viewModel.contact.color)
+            header.setBackupImage(name: viewModel.contact.displayName, color: viewModel.contact.color)
         }
-        cell.setVerified(isVerified: viewModel.contact.isVerified)
-        return cell
+        header.setVerified(isVerified: viewModel.contact.isVerified)
+        header.onAvatarTap = showContactAvatarIfNeeded
+        return header
     }()
 
 
@@ -370,6 +371,15 @@ class ContactDetailViewController: UITableViewController {
         navigationController?.pushViewController(galleryController, animated: true)
     }
 
+    private func showContactAvatarIfNeeded() {
+        let contact = viewModel.contact
+        if let url =  contact.profileImageURL {
+            let previewController = PreviewController(currentIndex: 0, urls: [url])
+            previewController.customTitle = contact.displayName
+            present(previewController, animated: true, completion: nil)
+        }
+    }
+
     private func deleteChat() {
         if viewModel.chatId == 0 {
             return