aboutsummaryrefslogtreecommitdiff
path: root/Hotline/Models/ChatMessage.swift
blob: 36648d12a2bc8f457b268f7667d9ba20c07efe61 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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*([\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
    }
  }
}