mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-22 09:32:52 +02:00
Use title view and configure
This commit is contained in:
@@ -110,14 +110,11 @@ final class ThreadListViewController: UIViewController {
|
||||
}
|
||||
|
||||
private func setupViews() {
|
||||
let filterBarButtonItem = UIBarButtonItem(image: Asset.Images.roomContextMenuMore.image,
|
||||
style: .plain,
|
||||
target: self,
|
||||
action: #selector(filterButtonTapped(_:)))
|
||||
|
||||
self.navigationItem.rightBarButtonItem = filterBarButtonItem
|
||||
|
||||
self.title = VectorL10n.threadsTitle
|
||||
let titleView = ThreadRoomTitleView.loadFromNib()
|
||||
titleView.mode = .allThreads
|
||||
titleView.viewDelegate = self
|
||||
titleView.configure(withViewModel: viewModel.titleViewModel)
|
||||
navigationItem.titleView = titleView
|
||||
|
||||
self.threadsTableView.tableFooterView = UIView()
|
||||
self.threadsTableView.register(cellType: ThreadTableViewCell.self)
|
||||
@@ -189,11 +186,6 @@ final class ThreadListViewController: UIViewController {
|
||||
|
||||
// MARK: - Actions
|
||||
|
||||
@objc
|
||||
private func filterButtonTapped(_ sender: UIBarButtonItem) {
|
||||
self.viewModel.process(viewAction: .showFilterTypes)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - ThreadListViewModelViewDelegate
|
||||
@@ -206,6 +198,8 @@ extension ThreadListViewController: ThreadListViewModelViewDelegate {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: - UITableViewDataSource
|
||||
|
||||
extension ThreadListViewController: UITableViewDataSource {
|
||||
|
||||
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
|
||||
@@ -225,6 +219,8 @@ extension ThreadListViewController: UITableViewDataSource {
|
||||
|
||||
}
|
||||
|
||||
// MARK: - UITableViewDelegate
|
||||
|
||||
extension ThreadListViewController: UITableViewDelegate {
|
||||
|
||||
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
||||
@@ -238,3 +234,13 @@ extension ThreadListViewController: UITableViewDelegate {
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// MARK: - ThreadRoomTitleViewDelegate
|
||||
|
||||
extension ThreadListViewController: ThreadRoomTitleViewDelegate {
|
||||
|
||||
func threadRoomTitleViewDidTapOptions(_ view: ThreadRoomTitleView) {
|
||||
self.viewModel.process(viewAction: .showFilterTypes)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -87,6 +87,30 @@ final class ThreadListViewModel: ThreadListViewModelProtocol {
|
||||
return viewModel(forThread: threads[index])
|
||||
}
|
||||
|
||||
var titleViewModel: ThreadRoomTitleViewModel {
|
||||
guard let room = session.room(withRoomId: roomId) else {
|
||||
return .empty
|
||||
}
|
||||
|
||||
let avatarViewData = AvatarViewData(matrixItemId: room.matrixItemId,
|
||||
displayName: room.displayName,
|
||||
avatarUrl: room.mxContentUri,
|
||||
mediaManager: room.mxSession.mediaManager,
|
||||
fallbackImage: AvatarFallbackImage.matrixItem(room.matrixItemId,
|
||||
room.displayName))
|
||||
|
||||
let encrpytionBadge: UIImage?
|
||||
if let summary = room.summary, session.crypto != nil {
|
||||
encrpytionBadge = EncryptionTrustLevelBadgeImageHelper.roomBadgeImage(for: summary.roomEncryptionTrustLevel())
|
||||
} else {
|
||||
encrpytionBadge = nil
|
||||
}
|
||||
|
||||
return ThreadRoomTitleViewModel(roomAvatar: avatarViewData,
|
||||
roomEncryptionBadge: encrpytionBadge,
|
||||
roomDisplayName: room.displayName)
|
||||
}
|
||||
|
||||
// MARK: - Private
|
||||
|
||||
private func viewModel(forThread thread: MXThread) -> ThreadViewModel {
|
||||
|
||||
@@ -37,6 +37,7 @@ protocol ThreadListViewModelProtocol {
|
||||
|
||||
var viewState: ThreadListViewState { get }
|
||||
|
||||
var titleViewModel: ThreadRoomTitleViewModel { get }
|
||||
var selectedFilterType: ThreadListFilterType { get }
|
||||
var numberOfThreads: Int { get }
|
||||
func threadViewModel(at index: Int) -> ThreadViewModel?
|
||||
|
||||
Reference in New Issue
Block a user