Эх сурвалжийг харах

refactor initialization of ContextMenuItem model

cyberta 4 жил өмнө
parent
commit
5514f1bb48

+ 5 - 9
deltachat-ios/Chat/ChatViewController.swift

@@ -96,8 +96,7 @@ class ChatViewController: UITableViewController {
     private lazy var contextMenu: ContextMenuProvider = {
         let copyItem = ContextMenuProvider.ContextMenuItem(
         title: String.localized("global_menu_edit_copy_desktop"),
-        imageNames: ("ic_content_copy_white_36pt", nil),
-        isDestructive: false,
+        imageName: "ic_content_copy_white_36pt",
         action: #selector(UIResponderStandardEditActions.copy(_:)),
         onPerform: { [weak self] indexPath in
                 guard let self = self else { return }
@@ -115,8 +114,7 @@ class ChatViewController: UITableViewController {
 
         let infoItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("info"),
-            imageNames: ("info", nil),
-            isDestructive: false,
+            imageName: "info",
             action: #selector(BaseMessageCell.messageInfo),
             onPerform: { [weak self] indexPath in
                 guard let self = self else { return }
@@ -130,7 +128,7 @@ class ChatViewController: UITableViewController {
 
         let deleteItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("delete"),
-            imageNames: ("trash", nil),
+            imageName: "trash",
             isDestructive: true,
             action: #selector(BaseMessageCell.messageDelete),
             onPerform: { [weak self] indexPath in
@@ -145,8 +143,7 @@ class ChatViewController: UITableViewController {
 
         let forwardItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("forward"),
-            imageNames: ("ic_forward_white_36pt", nil),
-            isDestructive: false,
+            imageName: "ic_forward_white_36pt",
             action: #selector(BaseMessageCell.messageForward),
             onPerform: { [weak self] indexPath in
                 guard let self = self else { return }
@@ -158,8 +155,7 @@ class ChatViewController: UITableViewController {
 
         let replyItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("notify_reply_button"),
-            imageNames: ("ic_reply", nil),
-            isDestructive: false,
+            imageName: "ic_reply",
             action: #selector(BaseMessageCell.messageReply),
             onPerform: { indexPath in
                 DispatchQueue.main.async { [weak self] in

+ 11 - 6
deltachat-ios/Controller/ContextMenuController.swift

@@ -142,10 +142,8 @@ class ContextMenuProvider {
         var children: [UIMenuElement] = []
 
         for item in menu {
-            // some system images are not available in iOS 13
-            let image = UIImage(systemName: item.imageNames.0) ??
-                UIImage(systemName: item.imageNames.1 ?? "") ??
-                UIImage(named: item.imageNames.0)
+            let image = UIImage(systemName: item.imageName) ??
+                UIImage(named: item.imageName)
 
             let action = UIAction(
                 title: item.title,
@@ -181,12 +179,19 @@ class ContextMenuProvider {
 }
 
 extension ContextMenuProvider {
-    typealias ImageSystemName = String
     struct ContextMenuItem {
         var title: String
-        var imageNames: (ImageSystemName, ImageSystemName?) // (0,1) -> define 1 as backup if 0 is not available in iOS 13
+        var imageName: String
         let isDestructive: Bool
         var action: Selector
         var onPerform: ((IndexPath) -> Void)?
+
+        init(title: String, imageName: String, isDestructive: Bool = false, action: Selector, onPerform: ((IndexPath) -> Void)?) {
+            self.title = title
+            self.imageName = imageName
+            self.isDestructive = isDestructive
+            self.action = action
+            self.onPerform = onPerform
+        }
     }
 }

+ 3 - 4
deltachat-ios/Controller/DocumentGalleryController.swift

@@ -23,9 +23,9 @@ class DocumentGalleryController: UIViewController {
     }()
 
     private lazy var contextMenu: ContextMenuProvider = {
-        let deleteItem = ContextMenuProvider.ContextMenuItem(
+        let deleteItem = ContextMenuProvider.ContextMenuItem.init(
             title: String.localized("delete"),
-            imageNames: ("trash", nil),
+            imageName: "trash",
             isDestructive: true,
             action: #selector(DocumentGalleryFileCell.itemDelete(_:)),
             onPerform: { [weak self] indexPath in
@@ -34,8 +34,7 @@ class DocumentGalleryController: UIViewController {
         )
         let showInChatItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("show_in_chat"),
-            imageNames: ("doc.text.magnifyingglass", nil),
-            isDestructive: false,
+            imageName: "doc.text.magnifyingglass",
             action: #selector(DocumentGalleryFileCell.showInChat(_:)),
             onPerform: { [weak self] indexPath in
                 self?.redirectToMessage(of: indexPath)

+ 2 - 3
deltachat-ios/Controller/GalleryViewController.swift

@@ -50,7 +50,7 @@ class GalleryViewController: UIViewController {
     private lazy var contextMenu: ContextMenuProvider = {
         let deleteItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("delete"),
-            imageNames: ("trash", nil),
+            imageName: "trash",
             isDestructive: true,
             action: #selector(GalleryCell.itemDelete(_:)),
             onPerform: { [weak self] indexPath in
@@ -59,8 +59,7 @@ class GalleryViewController: UIViewController {
         )
         let showInChatItem = ContextMenuProvider.ContextMenuItem(
             title: String.localized("show_in_chat"),
-            imageNames: ("doc.text.magnifyingglass", nil),
-            isDestructive: false,
+            imageName: "doc.text.magnifyingglass",
             action: #selector(GalleryCell.showInChat(_:)),
             onPerform: { [weak self] indexPath in
                 self?.redirectToMessage(of: indexPath)