Improve ViewModel
This commit is contained in:
parent
7281d84d9f
commit
02a169205d
|
@ -5,7 +5,7 @@ final class MessageViewModel: ObservableObject {
|
|||
@Published private(set) var message: Message
|
||||
@Published private(set) var previousMessage: Message?
|
||||
|
||||
let messageFormatter: MessageFormatter
|
||||
private let messageFormatter: MessageFormatter
|
||||
|
||||
init(message: Message, previousMessage: Message? = nil, server: Server?, lastOpen: Date?) {
|
||||
self.message = message
|
||||
|
@ -22,4 +22,28 @@ final class MessageViewModel: ObservableObject {
|
|||
server?.useRealName == true ? message.user?.name : message.user?.username
|
||||
}
|
||||
|
||||
var date: String? {
|
||||
messageFormatter.date()
|
||||
}
|
||||
|
||||
var time: String? {
|
||||
messageFormatter.time()
|
||||
}
|
||||
|
||||
var info: String? {
|
||||
messageFormatter.info()
|
||||
}
|
||||
|
||||
var hasDateSeparator: Bool {
|
||||
messageFormatter.hasDateSeparator()
|
||||
}
|
||||
|
||||
var hasUnreadSeparator: Bool {
|
||||
messageFormatter.hasUnreadSeparator()
|
||||
}
|
||||
|
||||
var isHeader: Bool {
|
||||
messageFormatter.isHeader()
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ final class RoomViewModel: ObservableObject {
|
|||
@Published var room: Room
|
||||
@Published var server: Server
|
||||
|
||||
let formatter: RoomFormatter
|
||||
private let formatter: RoomFormatter
|
||||
|
||||
init(room: Room, server: Server) {
|
||||
self.room = room
|
||||
|
@ -12,6 +12,10 @@ final class RoomViewModel: ObservableObject {
|
|||
self.formatter = RoomFormatter(room: room, server: server)
|
||||
}
|
||||
|
||||
var title: String? {
|
||||
formatter.title
|
||||
}
|
||||
|
||||
var iconName: String? {
|
||||
if room.prid != nil {
|
||||
return "discussions"
|
||||
|
|
|
@ -32,7 +32,7 @@ struct MessageView: View {
|
|||
Divider()
|
||||
.overlay(.secondary)
|
||||
}
|
||||
Text(viewModel.messageFormatter.date() ?? "")
|
||||
Text(viewModel.date ?? "")
|
||||
.lineLimit(1)
|
||||
.font(.footnote)
|
||||
.foregroundStyle(.secondary)
|
||||
|
@ -46,24 +46,24 @@ struct MessageView: View {
|
|||
|
||||
var body: some View {
|
||||
VStack(alignment: .leading) {
|
||||
if viewModel.messageFormatter.hasDateSeparator() {
|
||||
if viewModel.hasDateSeparator {
|
||||
dateSeparator
|
||||
} else if viewModel.messageFormatter.hasUnreadSeparator() {
|
||||
} else if viewModel.hasUnreadSeparator {
|
||||
unreadSeparator
|
||||
}
|
||||
if viewModel.messageFormatter.isHeader() {
|
||||
if viewModel.isHeader {
|
||||
HStack(alignment: .center) {
|
||||
Text(viewModel.sender ?? "")
|
||||
.lineLimit(1)
|
||||
.font(.caption.bold())
|
||||
.foregroundStyle(.primary)
|
||||
Text(viewModel.messageFormatter.time() ?? "")
|
||||
Text(viewModel.time ?? "")
|
||||
.lineLimit(1)
|
||||
.font(.footnote)
|
||||
.foregroundStyle(.secondary)
|
||||
}
|
||||
}
|
||||
if let text = viewModel.messageFormatter.info() {
|
||||
if let text = viewModel.info {
|
||||
Text(text)
|
||||
.font(.caption.italic())
|
||||
.foregroundStyle(.primary)
|
||||
|
|
|
@ -16,7 +16,7 @@ struct RoomView: View {
|
|||
.frame(width: 16, height: 16)
|
||||
.scaledToFit()
|
||||
}
|
||||
Text(viewModel.formatter.title ?? "")
|
||||
Text(viewModel.title ?? "")
|
||||
.lineLimit(1)
|
||||
.font(.caption.weight(isUnread ? .bold : .medium))
|
||||
.foregroundStyle(.primary)
|
||||
|
|
Loading…
Reference in New Issue