|
@@ -228,6 +228,14 @@ class AddGroupMembersViewController: GroupMembersViewController {
|
|
|
|
|
|
class BlockedContactsViewController: GroupMembersViewController, GroupMemberSelectionDelegate {
|
|
class BlockedContactsViewController: GroupMembersViewController, GroupMemberSelectionDelegate {
|
|
|
|
|
|
|
|
+ var emptyStateView: PaddingLabel = {
|
|
|
|
+ let view = PaddingLabel()
|
|
|
|
+ view.text = String.localized("none_blocked_desktop")
|
|
|
|
+ view.backgroundColor = DcColors.systemMessageBackgroundColor
|
|
|
|
+ view.textColor = DcColors.defaultTextColor
|
|
|
|
+ return view
|
|
|
|
+ }()
|
|
|
|
+
|
|
override init() {
|
|
override init() {
|
|
super.init()
|
|
super.init()
|
|
enableCheckmarks = false
|
|
enableCheckmarks = false
|
|
@@ -237,6 +245,7 @@ class BlockedContactsViewController: GroupMembersViewController, GroupMemberSele
|
|
fatalError("init(coder:) has not been implemented")
|
|
fatalError("init(coder:) has not been implemented")
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // MARK: - lifecycle
|
|
override func viewDidLoad() {
|
|
override func viewDidLoad() {
|
|
super.viewDidLoad()
|
|
super.viewDidLoad()
|
|
title = String.localized("pref_blocked_contacts")
|
|
title = String.localized("pref_blocked_contacts")
|
|
@@ -244,12 +253,24 @@ class BlockedContactsViewController: GroupMembersViewController, GroupMemberSele
|
|
selectedContactIds = Set(contactIds)
|
|
selectedContactIds = Set(contactIds)
|
|
navigationItem.searchController = nil
|
|
navigationItem.searchController = nil
|
|
groupMemberSelectionDelegate = self
|
|
groupMemberSelectionDelegate = self
|
|
|
|
+ setupSubviews()
|
|
}
|
|
}
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
override func viewWillAppear(_ animated: Bool) {
|
|
super.viewWillAppear(animated)
|
|
super.viewWillAppear(animated)
|
|
|
|
+ updateEmtpyStateView()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ // MARK: - setup
|
|
|
|
+ private func setupSubviews() {
|
|
|
|
+ view.addSubview(emptyStateView)
|
|
|
|
+ emptyStateView.translatesAutoresizingMaskIntoConstraints = false
|
|
|
|
+ emptyStateView.centerYAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerYAnchor).isActive = true
|
|
|
|
+ emptyStateView.centerXAnchor.constraint(equalTo: view.safeAreaLayoutGuide.centerXAnchor).isActive = true
|
|
|
|
+ emptyStateView.widthAnchor.constraint(equalToConstant: 200).isActive = true
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ // MARK: - actions + updates
|
|
func selected(contactId: Int, selected: Bool) {
|
|
func selected(contactId: Int, selected: Bool) {
|
|
if !selected {
|
|
if !selected {
|
|
let dcContact = DcContact(id: contactId)
|
|
let dcContact = DcContact(id: contactId)
|
|
@@ -261,6 +282,7 @@ class BlockedContactsViewController: GroupMembersViewController, GroupMemberSele
|
|
self.contactIds = self.dcContext.getBlockedContacts()
|
|
self.contactIds = self.dcContext.getBlockedContacts()
|
|
self.selectedContactIds = Set(self.contactIds)
|
|
self.selectedContactIds = Set(self.contactIds)
|
|
self.tableView.reloadData()
|
|
self.tableView.reloadData()
|
|
|
|
+ self.updateEmtpyStateView()
|
|
}))
|
|
}))
|
|
alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel, handler: { _ in
|
|
alert.addAction(UIAlertAction(title: String.localized("cancel"), style: .cancel, handler: { _ in
|
|
self.selectedContactIds = Set(self.contactIds)
|
|
self.selectedContactIds = Set(self.contactIds)
|
|
@@ -269,6 +291,10 @@ class BlockedContactsViewController: GroupMembersViewController, GroupMemberSele
|
|
present(alert, animated: true, completion: nil)
|
|
present(alert, animated: true, completion: nil)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ private func updateEmtpyStateView() {
|
|
|
|
+ emptyStateView.isHidden = super.getNumberOfRowsForContactList() > 0
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
|
|
protocol GroupMemberSelectionDelegate: class {
|
|
protocol GroupMemberSelectionDelegate: class {
|