Explorar el Código

add account avatar to the share dialog so that it becomes clear from which account we're sending

cyberta hace 2 años
padre
commit
4d3b57d51d
Se han modificado 1 ficheros con 28 adiciones y 6 borrados
  1. 28 6
      DcShare/Controller/ShareViewController.swift

+ 28 - 6
DcShare/Controller/ShareViewController.swift

@@ -64,6 +64,13 @@ class ShareViewController: SLComposeServiceViewController {
         return imageView
     }()
 
+    lazy var initialsBadge: InitialsBadge = {
+        let view = InitialsBadge(name: "", color: UIColor.clear, size: 28)
+        view.translatesAutoresizingMaskIntoConstraints = false
+        view.setContentHuggingPriority(.defaultHigh, for: .horizontal)
+        return view
+    }()
+
     override func viewDidLoad() {
         super.viewDidLoad()
         setupNavigationBar()
@@ -79,9 +86,6 @@ class ShareViewController: SLComposeServiceViewController {
         let webPCoder = SDImageWebPCoder.shared
         SDImageCodersManager.shared.addCoder(webPCoder)
 
-    }
-
-    override func presentationAnimationDidFinish() {
         dcAccounts.logger = logger
         dcAccounts.openDatabase()
         let accountIds = dcAccounts.getAll()
@@ -129,18 +133,23 @@ class ShareViewController: SLComposeServiceViewController {
             logger.debug("selected chatID: \(String(describing: selectedChatId))")
         }
 
+        let contact = dcContext.getContact(id: Int(DC_CONTACT_ID_SELF))
+        let title = dcContext.displayname ?? String.localized("pref_your_name")
+        initialsBadge.setName(title)
+        initialsBadge.setColor(contact.color)
+        if let image = contact.profileImage {
+            initialsBadge.setImage(image)
+        }
+
         guard let chatId = selectedChatId else {
             cancel()
             return
         }
-
         selectedChat = dcContext.getChat(chatId: chatId)
         DispatchQueue.global(qos: .userInitiated).async { [weak self] in
             guard let self = self else { return }
             self.shareAttachment = ShareAttachment(dcContext: self.dcContext, inputItems: self.extensionContext?.inputItems, delegate: self)
         }
-        reloadConfigurationItems()
-        validateContent()
     }
 
     override func loadPreviewView() -> UIView! {
@@ -160,6 +169,15 @@ class ShareViewController: SLComposeServiceViewController {
             target: self,
             action: #selector(appendPostTapped))
         item.rightBarButtonItem? = button
+
+        let cancelButton = UIBarButtonItem(
+            title: String.localized("cancel"),
+            style: .done,
+            target: self,
+            action: #selector(onCancelPressed))
+
+        let avatarItem = UIBarButtonItem(customView: initialsBadge)
+        item.leftBarButtonItems = [avatarItem, cancelButton]
     }
 
     /// Invoked when the user wants to post.
@@ -212,6 +230,10 @@ class ShareViewController: SLComposeServiceViewController {
     override func didSelectCancel() {
         quit()
     }
+
+    @objc func onCancelPressed() {
+        cancel()
+    }
 }
 
 extension ShareViewController: ChatListDelegate {