mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-19 16:13:42 +02:00
Merge branch 'develop' into ismail/5096_thread_notifications
This commit is contained in:
+10
-10
@@ -16,22 +16,22 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
struct ThreadViewModel {
|
||||
var rootMessageSenderUserId: String?
|
||||
var rootMessageSenderAvatar: AvatarViewDataProtocol?
|
||||
var rootMessageSenderDisplayName: String?
|
||||
var rootMessageText: NSAttributedString?
|
||||
var rootMessageRedacted: Bool
|
||||
var lastMessageTime: String?
|
||||
var summaryViewModel: ThreadSummaryViewModel?
|
||||
var notificationStatus: ThreadNotificationStatus
|
||||
struct ThreadModel {
|
||||
let rootMessageSenderUserId: String?
|
||||
let rootMessageSenderAvatar: AvatarViewDataProtocol?
|
||||
let rootMessageSenderDisplayName: String?
|
||||
let rootMessageText: NSAttributedString?
|
||||
let rootMessageRedacted: Bool
|
||||
let lastMessageTime: String?
|
||||
let summaryModel: ThreadSummaryModel?
|
||||
let notificationStatus: ThreadNotificationStatus
|
||||
}
|
||||
|
||||
enum ThreadNotificationStatus {
|
||||
case none
|
||||
case notified
|
||||
case highlighted
|
||||
|
||||
|
||||
init(withThread thread: MXThread) {
|
||||
if thread.highlightCount > 0 {
|
||||
self = .highlighted
|
||||
@@ -40,10 +40,7 @@ class ThreadTableViewCell: UITableViewCell {
|
||||
@IBOutlet private weak var summaryView: ThreadSummaryView!
|
||||
@IBOutlet private weak var notificationStatusView: ThreadNotificationStatusView!
|
||||
|
||||
private static var usernameColorGenerator: UserNameColorGenerator = {
|
||||
let generator = UserNameColorGenerator()
|
||||
return generator
|
||||
}()
|
||||
private static var usernameColorGenerator = UserNameColorGenerator()
|
||||
|
||||
override func awakeFromNib() {
|
||||
super.awakeFromNib()
|
||||
@@ -51,26 +48,26 @@ class ThreadTableViewCell: UITableViewCell {
|
||||
separatorInset = Constants.separatorInset
|
||||
}
|
||||
|
||||
func configure(withViewModel viewModel: ThreadViewModel) {
|
||||
if let rootAvatar = viewModel.rootMessageSenderAvatar {
|
||||
func configure(withModel model: ThreadModel) {
|
||||
if let rootAvatar = model.rootMessageSenderAvatar {
|
||||
rootMessageAvatarView.fill(with: rootAvatar)
|
||||
} else {
|
||||
rootMessageAvatarView.avatarImageView.image = nil
|
||||
}
|
||||
configuredSenderId = viewModel.rootMessageSenderUserId
|
||||
configuredRootMessageRedacted = viewModel.rootMessageRedacted
|
||||
configuredSenderId = model.rootMessageSenderUserId
|
||||
configuredRootMessageRedacted = model.rootMessageRedacted
|
||||
updateRootMessageSenderColor()
|
||||
rootMessageSenderLabel.text = viewModel.rootMessageSenderDisplayName
|
||||
if let rootMessageText = viewModel.rootMessageText {
|
||||
rootMessageSenderLabel.text = model.rootMessageSenderDisplayName
|
||||
if let rootMessageText = model.rootMessageText {
|
||||
updateRootMessageContentAttributes(rootMessageText, color: rootMessageColor)
|
||||
} else {
|
||||
rootMessageContentLabel.attributedText = nil
|
||||
}
|
||||
lastMessageTimeLabel.text = viewModel.lastMessageTime
|
||||
if let summaryViewModel = viewModel.summaryViewModel {
|
||||
summaryView.configure(withViewModel: summaryViewModel)
|
||||
lastMessageTimeLabel.text = model.lastMessageTime
|
||||
if let summaryModel = model.summaryModel {
|
||||
summaryView.configure(withModel: summaryModel)
|
||||
}
|
||||
notificationStatusView.status = viewModel.notificationStatus
|
||||
notificationStatusView.status = model.notificationStatus
|
||||
}
|
||||
|
||||
private func updateRootMessageSenderColor() {
|
||||
|
||||
+1
-1
@@ -16,7 +16,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
struct ThreadListEmptyViewModel {
|
||||
struct ThreadListEmptyModel {
|
||||
let icon: UIImage?
|
||||
let title: String?
|
||||
let info: String?
|
||||
@@ -22,6 +22,7 @@ protocol ThreadListEmptyViewDelegate: AnyObject {
|
||||
func threadListEmptyViewTappedShowAllThreads(_ emptyView: ThreadListEmptyView)
|
||||
}
|
||||
|
||||
/// View to be shown on the thread list screen when no thread is available. Use a `ThreadListEmptyModel` instance to configure.
|
||||
class ThreadListEmptyView: UIView {
|
||||
|
||||
@IBOutlet weak var delegate: ThreadListEmptyViewDelegate?
|
||||
@@ -38,14 +39,14 @@ class ThreadListEmptyView: UIView {
|
||||
loadNibContent()
|
||||
}
|
||||
|
||||
func configure(withViewModel viewModel: ThreadListEmptyViewModel) {
|
||||
iconView.image = viewModel.icon
|
||||
titleLabel.text = viewModel.title
|
||||
infoLabel.text = viewModel.info
|
||||
tipLabel.text = viewModel.tip
|
||||
showAllThreadsButton.setTitle(viewModel.showAllThreadsButtonTitle,
|
||||
func configure(withModel model: ThreadListEmptyModel) {
|
||||
iconView.image = model.icon
|
||||
titleLabel.text = model.title
|
||||
infoLabel.text = model.info
|
||||
tipLabel.text = model.tip
|
||||
showAllThreadsButton.setTitle(model.showAllThreadsButtonTitle,
|
||||
for: .normal)
|
||||
showAllThreadsButton.isHidden = viewModel.showAllThreadsButtonHidden
|
||||
showAllThreadsButton.isHidden = model.showAllThreadsButtonHidden
|
||||
|
||||
titleLabel.isHidden = titleLabel.text?.isEmpty ?? true
|
||||
infoLabel.isHidden = infoLabel.text?.isEmpty ?? true
|
||||
|
||||
Reference in New Issue
Block a user