Adds getting/sending messages
This commit is contained in:
@@ -36,6 +36,40 @@ enum Display
|
||||
self.messagePreview = messagePreview
|
||||
}
|
||||
}
|
||||
|
||||
struct Message: Identifiable
|
||||
{
|
||||
let id: String
|
||||
let sender: Sender
|
||||
let text: String
|
||||
|
||||
var isFromMe: Bool {
|
||||
if case .me = sender { true }
|
||||
else { false }
|
||||
}
|
||||
|
||||
init(from m: Serialized.Message) {
|
||||
self.id = m.guid
|
||||
self.text = m.text
|
||||
self.sender = if m.sender == "(Me)" {
|
||||
.me
|
||||
} else {
|
||||
.counterpart(m.sender)
|
||||
}
|
||||
}
|
||||
|
||||
init(id: String = UUID().uuidString, sender: Sender = .me, text: String) {
|
||||
self.id = id
|
||||
self.sender = sender
|
||||
self.text = text
|
||||
}
|
||||
|
||||
enum Sender
|
||||
{
|
||||
case me
|
||||
case counterpart(String)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
enum Serialized
|
||||
@@ -70,4 +104,26 @@ enum Serialized
|
||||
self.date = dt
|
||||
}
|
||||
}
|
||||
|
||||
struct Message: Decodable
|
||||
{
|
||||
let guid: String
|
||||
let sender: String
|
||||
let text: String
|
||||
let date: Date
|
||||
|
||||
init?(xpc dict: xpc_object_t)
|
||||
{
|
||||
guard let g: String = dict["id"] else { return nil }
|
||||
|
||||
let s: String = dict["sender"] ?? ""
|
||||
let t: String = dict["text"] ?? ""
|
||||
let d: Date = dict["date"] ?? Date(timeIntervalSince1970: 0)
|
||||
|
||||
self.guid = g
|
||||
self.sender = s
|
||||
self.text = t
|
||||
self.date = d
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user