diff options
| author | Dustin Mierau <dustin@mierau.me> | 2023-12-12 16:29:12 -0800 |
|---|---|---|
| committer | Dustin Mierau <dustin@mierau.me> | 2023-12-12 16:29:12 -0800 |
| commit | a428e3e28fb851cec65ff27f212c19bce08e5369 (patch) | |
| tree | d106ce73c1411dff56f401f3a9df62419c8d4f58 /Hotline/Models/ChatMessage.swift | |
| parent | a4798840e1d58ddb19ed5d5e0e0a4f0add47c9fb (diff) | |
Break model objects out into their own files.
Diffstat (limited to 'Hotline/Models/ChatMessage.swift')
| -rw-r--r-- | Hotline/Models/ChatMessage.swift | 35 |
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 + } + } +} |