mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-05-02 14:16:59 +02:00
Convert to RoomInfoBasicViewData
This commit is contained in:
@@ -40,11 +40,25 @@ class RoomInfoBasicTableViewCell: GroupedTableViewCell {
|
||||
@IBOutlet private weak var roomNameLabel: UILabel!
|
||||
@IBOutlet private weak var roomAddressLabel: UILabel!
|
||||
|
||||
func configure(withViewModel viewModel: RoomInfoBasicTableViewCellVM) {
|
||||
viewModel.setAvatar(in: avatarImageView)
|
||||
viewModel.setEncryptionIcon(in: badgeImageView)
|
||||
roomNameLabel.text = viewModel.roomName
|
||||
roomAddressLabel.text = viewModel.roomAddress
|
||||
func configure(withViewData viewData: RoomInfoBasicViewData) {
|
||||
let avatarImage = AvatarGenerator.generateAvatar(forMatrixItem: viewData.roomId, withDisplayName: viewData.roomDisplayName)
|
||||
|
||||
if let avatarUrl = viewData.avatarUrl {
|
||||
avatarImageView.enableInMemoryCache = true
|
||||
|
||||
avatarImageView.setImageURI(avatarUrl,
|
||||
withType: nil,
|
||||
andImageOrientation: .up,
|
||||
toFitViewSize: avatarImageView.frame.size,
|
||||
with: MXThumbnailingMethodCrop,
|
||||
previewImage: avatarImage,
|
||||
mediaManager: viewData.mediaManager)
|
||||
} else {
|
||||
avatarImageView.image = avatarImage
|
||||
}
|
||||
badgeImageView.image = viewData.encryptionImage
|
||||
roomNameLabel.text = viewData.roomDisplayName
|
||||
roomAddressLabel.text = viewData.mainRoomAlias
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+8
-5
@@ -17,9 +17,12 @@
|
||||
import Foundation
|
||||
import MatrixKit
|
||||
|
||||
protocol RoomInfoBasicTableViewCellVM {
|
||||
func setAvatar(in avatarImageView: MXKImageView)
|
||||
func setEncryptionIcon(in imageView: UIImageView)
|
||||
var roomName: String? { get }
|
||||
var roomAddress: String? { get }
|
||||
struct RoomInfoBasicViewData {
|
||||
let avatarUrl: String?
|
||||
let mediaManager: MXMediaManager?
|
||||
|
||||
let roomId: String
|
||||
let roomDisplayName: String?
|
||||
let mainRoomAlias: String?
|
||||
let encryptionImage: UIImage?
|
||||
}
|
||||
@@ -63,7 +63,7 @@ final class RoomInfoListViewController: UIViewController {
|
||||
private enum RowType: Equatable {
|
||||
case `default`
|
||||
case destructive
|
||||
case basicInfo(_ viewModel: RoomInfoBasicTableViewCellVM)
|
||||
case basicInfo(_ viewData: RoomInfoBasicViewData)
|
||||
case textView
|
||||
|
||||
static func == (lhs: RoomInfoListViewController.RowType, rhs: RoomInfoListViewController.RowType) -> Bool {
|
||||
@@ -139,7 +139,7 @@ final class RoomInfoListViewController: UIViewController {
|
||||
private func updateSections(with viewData: RoomInfoListViewData) {
|
||||
var tmpSections: [Section] = []
|
||||
|
||||
let rowBasicInfo = Row(type: .basicInfo(viewData.basicInfoViewModel), text: nil, accessoryType: .none, action: nil)
|
||||
let rowBasicInfo = Row(type: .basicInfo(viewData.basicInfoViewData), text: nil, accessoryType: .none, action: nil)
|
||||
|
||||
var sectionBasicInfo = Section(header: nil,
|
||||
rows: [rowBasicInfo],
|
||||
@@ -311,9 +311,9 @@ extension RoomInfoListViewController: UITableViewDataSource {
|
||||
cell.contentView.backgroundColor = .clear
|
||||
cell.tintColor = theme.tintColor
|
||||
return cell
|
||||
case .basicInfo(let basicInfoViewModel):
|
||||
case .basicInfo(let basicInfoViewData):
|
||||
let cell: RoomInfoBasicTableViewCell = tableView.dequeueReusableCell(for: indexPath)
|
||||
cell.configure(withViewModel: basicInfoViewModel)
|
||||
cell.configure(withViewData: basicInfoViewData)
|
||||
cell.selectionStyle = .none
|
||||
cell.vc_hideSeparator()
|
||||
cell.update(theme: theme)
|
||||
|
||||
@@ -22,6 +22,6 @@ import Foundation
|
||||
struct RoomInfoListViewData {
|
||||
let numberOfMembers: Int
|
||||
let isEncrypted: Bool
|
||||
let basicInfoViewModel: RoomInfoBasicTableViewCellVM
|
||||
let basicInfoViewData: RoomInfoBasicViewData
|
||||
let roomTopic: String?
|
||||
}
|
||||
|
||||
@@ -33,9 +33,18 @@ final class RoomInfoListViewModel: NSObject, RoomInfoListViewModelType {
|
||||
weak var coordinatorDelegate: RoomInfoListViewModelCoordinatorDelegate?
|
||||
|
||||
private var viewData: RoomInfoListViewData {
|
||||
let encryptionImage = EncryptionTrustLevelBadgeImageHelper.roomBadgeImage(for: room.summary.roomEncryptionTrustLevel())
|
||||
|
||||
let basicInfoViewData = RoomInfoBasicViewData(avatarUrl: room.summary.avatar,
|
||||
mediaManager: session.mediaManager,
|
||||
roomId: room.roomId,
|
||||
roomDisplayName: room.summary.displayname,
|
||||
mainRoomAlias: room.summary.aliases?.first,
|
||||
encryptionImage: encryptionImage)
|
||||
|
||||
return RoomInfoListViewData(numberOfMembers: Int(room.summary.membersCount.joined),
|
||||
isEncrypted: room.summary.isEncrypted,
|
||||
basicInfoViewModel: self,
|
||||
basicInfoViewData: basicInfoViewData,
|
||||
roomTopic: room.summary.topic)
|
||||
}
|
||||
|
||||
@@ -108,47 +117,3 @@ final class RoomInfoListViewModel: NSObject, RoomInfoListViewModelType {
|
||||
self.viewDelegate?.roomInfoListViewModel(self, didUpdateViewState: viewState)
|
||||
}
|
||||
}
|
||||
|
||||
extension RoomInfoListViewModel: RoomInfoBasicTableViewCellVM {
|
||||
|
||||
func setAvatar(in avatarImageView: MXKImageView) {
|
||||
let avatarImage = AvatarGenerator.generateAvatar(forMatrixItem: room.roomId, withDisplayName: room.summary.displayname)
|
||||
|
||||
if let avatarUrl = room.summary.avatar ?? session.roomSummary(withRoomId: room.roomId)?.avatar {
|
||||
avatarImageView.enableInMemoryCache = true
|
||||
|
||||
avatarImageView.setImageURI(avatarUrl,
|
||||
withType: nil,
|
||||
andImageOrientation: .up,
|
||||
toFitViewSize: avatarImageView.frame.size,
|
||||
with: MXThumbnailingMethodCrop,
|
||||
previewImage: avatarImage,
|
||||
mediaManager: session.mediaManager)
|
||||
} else {
|
||||
avatarImageView.image = avatarImage
|
||||
}
|
||||
}
|
||||
func setEncryptionIcon(in imageView: UIImageView) {
|
||||
guard let summary = room.summary else {
|
||||
imageView.image = nil
|
||||
imageView.isHidden = true
|
||||
return
|
||||
}
|
||||
|
||||
if summary.isEncrypted {
|
||||
imageView.isHidden = false
|
||||
imageView.image = EncryptionTrustLevelBadgeImageHelper.roomBadgeImage(for: summary.roomEncryptionTrustLevel())
|
||||
} else {
|
||||
imageView.isHidden = true
|
||||
}
|
||||
}
|
||||
|
||||
var roomName: String? {
|
||||
return room.summary.displayname
|
||||
}
|
||||
|
||||
var roomAddress: String? {
|
||||
return room.summary.aliases?.first
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user