Improve ViewModel

This commit is contained in:
Djorkaeff Alexandre 2024-01-23 16:47:44 -03:00
parent 7281d84d9f
commit 02a169205d
4 changed files with 37 additions and 9 deletions

View File

@ -5,7 +5,7 @@ final class MessageViewModel: ObservableObject {
@Published private(set) var message: Message @Published private(set) var message: Message
@Published private(set) var previousMessage: Message? @Published private(set) var previousMessage: Message?
let messageFormatter: MessageFormatter private let messageFormatter: MessageFormatter
init(message: Message, previousMessage: Message? = nil, server: Server?, lastOpen: Date?) { init(message: Message, previousMessage: Message? = nil, server: Server?, lastOpen: Date?) {
self.message = message self.message = message
@ -22,4 +22,28 @@ final class MessageViewModel: ObservableObject {
server?.useRealName == true ? message.user?.name : message.user?.username 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()
}
} }

View File

@ -4,7 +4,7 @@ final class RoomViewModel: ObservableObject {
@Published var room: Room @Published var room: Room
@Published var server: Server @Published var server: Server
let formatter: RoomFormatter private let formatter: RoomFormatter
init(room: Room, server: Server) { init(room: Room, server: Server) {
self.room = room self.room = room
@ -12,6 +12,10 @@ final class RoomViewModel: ObservableObject {
self.formatter = RoomFormatter(room: room, server: server) self.formatter = RoomFormatter(room: room, server: server)
} }
var title: String? {
formatter.title
}
var iconName: String? { var iconName: String? {
if room.prid != nil { if room.prid != nil {
return "discussions" return "discussions"

View File

@ -32,7 +32,7 @@ struct MessageView: View {
Divider() Divider()
.overlay(.secondary) .overlay(.secondary)
} }
Text(viewModel.messageFormatter.date() ?? "") Text(viewModel.date ?? "")
.lineLimit(1) .lineLimit(1)
.font(.footnote) .font(.footnote)
.foregroundStyle(.secondary) .foregroundStyle(.secondary)
@ -46,24 +46,24 @@ struct MessageView: View {
var body: some View { var body: some View {
VStack(alignment: .leading) { VStack(alignment: .leading) {
if viewModel.messageFormatter.hasDateSeparator() { if viewModel.hasDateSeparator {
dateSeparator dateSeparator
} else if viewModel.messageFormatter.hasUnreadSeparator() { } else if viewModel.hasUnreadSeparator {
unreadSeparator unreadSeparator
} }
if viewModel.messageFormatter.isHeader() { if viewModel.isHeader {
HStack(alignment: .center) { HStack(alignment: .center) {
Text(viewModel.sender ?? "") Text(viewModel.sender ?? "")
.lineLimit(1) .lineLimit(1)
.font(.caption.bold()) .font(.caption.bold())
.foregroundStyle(.primary) .foregroundStyle(.primary)
Text(viewModel.messageFormatter.time() ?? "") Text(viewModel.time ?? "")
.lineLimit(1) .lineLimit(1)
.font(.footnote) .font(.footnote)
.foregroundStyle(.secondary) .foregroundStyle(.secondary)
} }
} }
if let text = viewModel.messageFormatter.info() { if let text = viewModel.info {
Text(text) Text(text)
.font(.caption.italic()) .font(.caption.italic())
.foregroundStyle(.primary) .foregroundStyle(.primary)

View File

@ -16,7 +16,7 @@ struct RoomView: View {
.frame(width: 16, height: 16) .frame(width: 16, height: 16)
.scaledToFit() .scaledToFit()
} }
Text(viewModel.formatter.title ?? "") Text(viewModel.title ?? "")
.lineLimit(1) .lineLimit(1)
.font(.caption.weight(isUnread ? .bold : .medium)) .font(.caption.weight(isUnread ? .bold : .medium))
.foregroundStyle(.primary) .foregroundStyle(.primary)