aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/ChatMessage.swift
diff options
context:
space:
mode:
authorDustin Mierau <dustin@mierau.me>2023-12-12 16:29:12 -0800
committerDustin Mierau <dustin@mierau.me>2023-12-12 16:29:12 -0800
commita428e3e28fb851cec65ff27f212c19bce08e5369 (patch)
treed106ce73c1411dff56f401f3a9df62419c8d4f58 /Hotline/Models/ChatMessage.swift
parenta4798840e1d58ddb19ed5d5e0e0a4f0add47c9fb (diff)
Break model objects out into their own files.
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
+ }
+ }
+}