From 126b4f40f97a22c8a6d068dfadb873dacc8bb7db Mon Sep 17 00:00:00 2001 From: Igor Solomennikov Date: Tue, 6 Jun 2023 11:08:50 -0700 Subject: [PATCH] Fix bug when Context menu in chat list only had "Settings". Cannot cache the settings button and context menu with it - the menu has to be built every time to reflect current state of the chat list. --- .../HomeView/Chat List/ChatListViewController.swift | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/Signal/src/ViewControllers/HomeView/Chat List/ChatListViewController.swift b/Signal/src/ViewControllers/HomeView/Chat List/ChatListViewController.swift index 7537523622..5b775a6783 100644 --- a/Signal/src/ViewControllers/HomeView/Chat List/ChatListViewController.swift +++ b/Signal/src/ViewControllers/HomeView/Chat List/ChatListViewController.swift @@ -360,7 +360,7 @@ public class ChatListViewController: OWSViewController { return layerView }() - private lazy var settingsBarButtonItem: UIBarButtonItem = { + private func settingsBarButtonItem() -> UIBarButtonItem { let contextButton = ContextMenuButton() contextButton.showsContextMenuAsPrimaryAction = true contextButton.contextMenu = settingsContextMenu() @@ -378,8 +378,11 @@ public class ChatListViewController: OWSViewController { PaymentsViewUtils.addUnreadBadge(toView: wrapper) } - return .init(customView: wrapper) - }() + let barButtonItem = UIBarButtonItem(customView: wrapper) + barButtonItem.accessibilityLabel = CommonStrings.openSettingsButton + barButtonItem.accessibilityIdentifier = "ChatListViewController.settingsButton" + return barButtonItem + } // MARK: Table View @@ -464,9 +467,7 @@ public class ChatListViewController: OWSViewController { guard chatListMode == .inbox && !viewState.multiSelectState.isActive else { return } // Settings button. - navigationItem.leftBarButtonItem = settingsBarButtonItem - settingsBarButtonItem.accessibilityLabel = CommonStrings.openSettingsButton - settingsBarButtonItem.accessibilityIdentifier = "ChatListViewController.settingsButton" + navigationItem.leftBarButtonItem = settingsBarButtonItem() var rightBarButtonItems = [UIBarButtonItem]()