Jelajahi Sumber

added for GroupMembersViewController

nayooti 5 tahun lalu
induk
melakukan
1e01eff89e

+ 34 - 1
deltachat-ios/Controller/GroupMembersViewController.swift

@@ -25,6 +25,7 @@ class NewGroupAddMembersViewController: GroupMembersViewController {
         fatalError("init(coder:) has not been implemented")
     }
 
+    // MARK - lifecycle
     override func viewDidLoad() {
         super.viewDidLoad()
         title = String.localized("group_add_members")
@@ -96,6 +97,7 @@ class AddGroupMembersViewController: GroupMembersViewController {
         fatalError("init(coder:) has not been implemented")
     }
 
+    // MARK: - lifecycle
     override func viewDidLoad() {
         super.viewDidLoad()
 
@@ -348,6 +350,12 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         return searchController
     }()
 
+    private lazy var emptySearchStateLabel: EmptyStateLabel = {
+        let label = EmptyStateLabel()
+        label.isHidden = false
+        return label
+    }()
+
     var selectedContactIds: Set<Int> = []
 
     init() {
@@ -360,6 +368,7 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         fatalError("init(coder:) has not been implemented")
     }
 
+    // MARK: - lifecycle
     override func viewDidLoad() {
         tableView.register(ContactCell.self, forCellReuseIdentifier: contactCellReuseIdentifier)
         navigationItem.searchController = searchController
@@ -367,8 +376,19 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
             navigationItem.hidesSearchBarWhenScrolling = false
         }
         definesPresentationContext = true
+        setupSubviews()
+    }
+
+    private func setupSubviews() {
+        view.addSubview(emptySearchStateLabel)
+        emptySearchStateLabel.translatesAutoresizingMaskIntoConstraints = false
+        emptySearchStateLabel.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
+        emptySearchStateLabel.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 40).isActive = true
+        emptySearchStateLabel.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -40).isActive = true
+        emptySearchStateLabel.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
     }
 
+    // MARK: - UITableView datasource + delegate
     override func numberOfSections(in _: UITableView) -> Int {
         return numberOfSections
     }
@@ -430,7 +450,7 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
     func updateSearchResults(for searchController: UISearchController) {
         if let searchText = searchController.searchBar.text {
             filterContentForSearchText(searchText)
-        }
+        } 
     }
 
     private func filterContentForSearchText(_ searchText: String, scope _: String = String.localized("pref_show_emails_all")) {
@@ -442,6 +462,19 @@ class GroupMembersViewController: UITableViewController, UISearchResultsUpdating
         filteredContacts = contactsWithHighlights.filter { !$0.indexesToHighlight.isEmpty }
         tableView.reloadData()
         tableView.scrollToTop()
+
+        // handle empty searchstate
+        if isFiltering() && getNumberOfRowsForContactList() == 0 {
+            let text = String.localizedStringWithFormat(
+                String.localized("search_no_result_for_x"),
+                searchText
+            )
+            emptySearchStateLabel.text = text
+            emptySearchStateLabel.isHidden = false
+        } else {
+            emptySearchStateLabel.text = nil
+            emptySearchStateLabel.isHidden = true
+        }
     }
 
     private func updateContactCell(cell: ContactCell, contactWithHighlight: ContactWithSearchResults) {

+ 4 - 4
deltachat-ios/Controller/NewChatViewController.swift

@@ -27,10 +27,10 @@ class NewChatViewController: UITableViewController {
     }()
 
     private lazy var emptySearchStateLabel: EmptyStateLabel = {
-          let label = EmptyStateLabel()
-          label.isHidden = false
-          return label
-      }()
+        let label = EmptyStateLabel()
+        label.isHidden = false
+        return label
+    }()
 
     private var contactIds: [Int]
     private var filteredContactIds: [Int] = []