mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-25 19:10:49 +02:00
Add ViewModel tests and change avatar data to use existing AvatarViewDataProtocol
This commit is contained in:
@@ -17,20 +17,13 @@
|
||||
import Foundation
|
||||
import Reusable
|
||||
|
||||
struct RoomNotificationSettingsAvatarViewData {
|
||||
let avatarUrl: String?
|
||||
let mediaManager: MXMediaManager?
|
||||
let displayName: String?
|
||||
let roomId: String
|
||||
}
|
||||
|
||||
class RoomNotificationSettingsAvatarView: UIView, NibLoadable {
|
||||
|
||||
@IBOutlet weak var avatarView: MXKImageView!
|
||||
@IBOutlet weak var nameLabel: UILabel!
|
||||
|
||||
func configure(viewData: RoomNotificationSettingsAvatarViewData) {
|
||||
let avatarImage = AvatarGenerator.generateAvatar(forMatrixItem: viewData.roomId, withDisplayName: viewData.displayName)
|
||||
func configure(viewData: AvatarViewDataProtocol) {
|
||||
let avatarImage = AvatarGenerator.generateAvatar(forMatrixItem: viewData.matrixItemId, withDisplayName: viewData.displayName)
|
||||
|
||||
if let avatarUrl = viewData.avatarUrl {
|
||||
avatarView.enableInMemoryCache = true
|
||||
|
||||
@@ -39,11 +39,12 @@ final class RoomNotificationSettingsCoordinator: RoomNotificationSettingsCoordin
|
||||
init(room: MXRoom, showAvatar: Bool = true) {
|
||||
let repository = RoomNotificationSettingsService(room: room)
|
||||
|
||||
let avatarData = showAvatar ? RoomNotificationSettingsAvatarViewData(
|
||||
avatarUrl: room.summary.avatar,
|
||||
mediaManager: room.mxSession.mediaManager,
|
||||
let avatarData = showAvatar ? RoomAvatarViewData(
|
||||
roomId: room.roomId,
|
||||
displayName: room.summary.displayname,
|
||||
roomId: room.roomId) : nil
|
||||
avatarUrl: room.summary.avatar,
|
||||
mediaManager: room.mxSession.mediaManager
|
||||
) : nil
|
||||
let roomNotificationSettingsViewModel = RoomNotificationSettingsViewModel(roomNotificationRepository: repository, roomEncrypted: room.summary.isEncrypted, avatarViewData: avatarData)
|
||||
let roomNotificationSettingsViewController = RoomNotificationSettingsViewController.instantiate(with: roomNotificationSettingsViewModel)
|
||||
self.roomNotificationSettingsViewModel = roomNotificationSettingsViewModel
|
||||
|
||||
@@ -21,9 +21,11 @@ import UIKit
|
||||
final class RoomNotificationSettingsViewController: UIViewController {
|
||||
|
||||
// MARK: - Properties
|
||||
|
||||
private enum Constants {
|
||||
static let linkToAccountSettings = "linkToAccountSettings"
|
||||
}
|
||||
|
||||
// MARK: Outlets
|
||||
|
||||
@IBOutlet private weak var mainTableView: UITableView!
|
||||
@@ -161,7 +163,7 @@ final class RoomNotificationSettingsViewController: UIViewController {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK - UITableViewDataSource
|
||||
// MARK: - UITableViewDataSource
|
||||
extension RoomNotificationSettingsViewController: UITableViewDataSource {
|
||||
|
||||
func numberOfSections(in tableView: UITableView) -> Int {
|
||||
@@ -187,7 +189,7 @@ extension RoomNotificationSettingsViewController: UITableViewDataSource {
|
||||
|
||||
}
|
||||
|
||||
// MARK - UITableViewDelegate
|
||||
// MARK: - UITableViewDelegate
|
||||
extension RoomNotificationSettingsViewController: UITableViewDelegate {
|
||||
|
||||
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) {
|
||||
|
||||
@@ -39,7 +39,7 @@ final class RoomNotificationSettingsViewModel: RoomNotificationSettingsViewModel
|
||||
|
||||
// MARK: - Setup
|
||||
|
||||
init(roomNotificationRepository: RoomNotificationSettingsServiceType, roomEncrypted: Bool, avatarViewData: RoomNotificationSettingsAvatarViewData?) {
|
||||
init(roomNotificationRepository: RoomNotificationSettingsServiceType, roomEncrypted: Bool, avatarViewData: AvatarViewDataProtocol?) {
|
||||
self.roomNotificationRepository = roomNotificationRepository
|
||||
|
||||
let notificationState = Self.mapNotificationStateOnRead(encrypted: roomEncrypted, state: roomNotificationRepository.notificationState)
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
import Foundation
|
||||
|
||||
protocol RoomNotificationSettingsViewModelViewDelegate: AnyObject {
|
||||
func roomNotificationSettingsViewModel(_ viewModel: RoomNotificationSettingsViewModelType, didUpdateViewState viewSate: RoomNotificationSettingsViewStateType)
|
||||
func roomNotificationSettingsViewModel(_ viewModel: RoomNotificationSettingsViewModelType, didUpdateViewState viewState: RoomNotificationSettingsViewStateType)
|
||||
}
|
||||
|
||||
protocol RoomNotificationSettingsViewModelCoordinatorDelegate: AnyObject {
|
||||
|
||||
@@ -30,7 +30,7 @@ struct RoomNotificationSettingsViewState: RoomNotificationSettingsViewStateType
|
||||
return RoomNotificationState.allCases
|
||||
}
|
||||
}
|
||||
let avatarData: RoomNotificationSettingsAvatarViewData?
|
||||
let avatarData: AvatarViewDataProtocol?
|
||||
}
|
||||
|
||||
protocol RoomNotificationSettingsViewStateType {
|
||||
@@ -38,5 +38,5 @@ protocol RoomNotificationSettingsViewStateType {
|
||||
var roomEncrypted: Bool { get }
|
||||
var notificationOptions: [RoomNotificationState] { get }
|
||||
var notificationState: RoomNotificationState { get }
|
||||
var avatarData: RoomNotificationSettingsAvatarViewData? { get }
|
||||
var avatarData: AvatarViewDataProtocol? { get }
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user