aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Models')
-rw-r--r--Hotline/Models/ChatMessage.swift9
-rw-r--r--Hotline/Models/Hotline.swift8
2 files changed, 11 insertions, 6 deletions
diff --git a/Hotline/Models/ChatMessage.swift b/Hotline/Models/ChatMessage.swift
index 744a5d2..1c210ce 100644
--- a/Hotline/Models/ChatMessage.swift
+++ b/Hotline/Models/ChatMessage.swift
@@ -48,19 +48,22 @@ extension ChatMessageType {
}
struct ChatMessage: Identifiable {
- let id = UUID()
-
+ let id: UUID
+
let text: String
let type: ChatMessageType
let date: Date
let username: String?
+ var metadata: ChatStore.EntryMetadata?
static let parser = /^\s*([^\:]+):\s*([\s\S]+)$/
init(text: String, type: ChatMessageType, date: Date) {
+ self.id = UUID()
self.type = type
self.date = date
-
+ self.metadata = nil
+
if
type == .message,
let match = text.firstMatch(of: ChatMessage.parser) {
diff --git a/Hotline/Models/Hotline.swift b/Hotline/Models/Hotline.swift
index 08b79a1..3783ba0 100644
--- a/Hotline/Models/Hotline.swift
+++ b/Hotline/Models/Hotline.swift
@@ -1445,7 +1445,9 @@ class Hotline: Equatable, HotlineClientDelegate, HotlineFileDownloadClientDelega
else {
renderedText = entry.body
}
- return ChatMessage(text: renderedText, type: chatType, date: entry.date)
+ var message = ChatMessage(text: renderedText, type: chatType, date: entry.date)
+ message.metadata = entry.metadata
+ return message
}
self.chat = historyMessages + currentMessages
self.lastPersistedMessageType = historyMessages.last?.type
@@ -1530,12 +1532,12 @@ class Hotline: Equatable, HotlineClientDelegate, HotlineFileDownloadClientDelega
guard let parent = self.findNews(in: self.news, at: path), !parent.children.isEmpty else {
return nil
}
-
+
return parent.children.first { child in
guard let childArticleID = child.articleID else {
return false
}
-
+
return child.type == .article && child.articleID == childArticleID
}
}