aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/ChatMessage.swift
diff options
context:
space:
mode:
Diffstat (limited to 'Hotline/Models/ChatMessage.swift')
-rw-r--r--Hotline/Models/ChatMessage.swift35
1 files changed, 35 insertions, 0 deletions
diff --git a/Hotline/Models/ChatMessage.swift b/Hotline/Models/ChatMessage.swift
new file mode 100644
index 0000000..8a57d61
--- /dev/null
+++ b/Hotline/Models/ChatMessage.swift
@@ -0,0 +1,35 @@
+import SwiftUI
+
+enum ChatMessageType {
+ case agreement
+ case status
+ case message
+ case server
+}
+
+struct ChatMessage: Identifiable {
+ let id = UUID()
+
+ let text: String
+ let type: ChatMessageType
+ let date: Date
+ let username: String?
+
+ static let parser = /^\s*([^\:]+)\:\s*(.+)/
+
+ init(text: String, type: ChatMessageType, date: Date) {
+ self.type = type
+ self.date = date
+
+ if
+ type == .message,
+ let match = text.firstMatch(of: ChatMessage.parser) {
+ self.username = String(match.1)
+ self.text = String(match.2)
+ }
+ else {
+ self.username = nil
+ self.text = text
+ }
+ }
+}