50 lines
1.1 KiB
Swift
50 lines
1.1 KiB
Swift
import SwiftUI
|
|
|
|
final class MessageViewModel: ObservableObject {
|
|
@Published private(set) var server: Server?
|
|
@Published private(set) var message: Message
|
|
@Published private(set) var previousMessage: Message?
|
|
|
|
private let messageFormatter: MessageFormatter
|
|
|
|
init(message: Message, previousMessage: Message? = nil, server: Server?, lastOpen: Date?) {
|
|
self.message = message
|
|
self.previousMessage = previousMessage
|
|
self.messageFormatter = MessageFormatter(
|
|
message: message,
|
|
previousMessage: previousMessage,
|
|
lastOpen: lastOpen
|
|
)
|
|
self.server = server
|
|
}
|
|
|
|
var sender: String? {
|
|
server?.useRealName == true ? message.user?.name : message.user?.username
|
|
}
|
|
|
|
var date: String? {
|
|
messageFormatter.date()
|
|
}
|
|
|
|
var time: String? {
|
|
messageFormatter.time()
|
|
}
|
|
|
|
var info: LocalizedStringKey? {
|
|
messageFormatter.info()
|
|
}
|
|
|
|
var hasDateSeparator: Bool {
|
|
messageFormatter.hasDateSeparator()
|
|
}
|
|
|
|
var hasUnreadSeparator: Bool {
|
|
messageFormatter.hasUnreadSeparator()
|
|
}
|
|
|
|
var isHeader: Bool {
|
|
messageFormatter.isHeader() && !messageHaveAuthorName(message.t ?? "")
|
|
}
|
|
|
|
}
|