diff options
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 + } + } +} |