another.im-ios/Monal/another.im/XMPP/Models/Message.swift
2024-12-06 22:32:17 +01:00

53 lines
1.2 KiB
Swift

import Foundation
import monalxmpp
enum MessageStatus {
case pending
case sent
case delivered
case error
case inbound
}
struct Message: Identifiable {
let accountId: Int
let participantJid: String
let dbId: Int
let stanzaId: String
let timestamp: Date
let body: String
let isInbound: Bool
let encrypted: Bool
let status: MessageStatus
var id: String {
"\(accountId)|\(dbId)"
}
init?(_ obj: MLMessage) {
guard let accId = obj.accountID as? Int, let dbId = obj.messageDBId as? Int else { return nil }
accountId = accId
participantJid = obj.participantJid
self.dbId = dbId
stanzaId = obj.stanzaId
timestamp = obj.timestamp
body = obj.messageText
isInbound = obj.inbound
encrypted = obj.encrypted
if !obj.inbound {
if obj.hasBeenSent {
status = .sent
} else if obj.hasBeenReceived {
status = .delivered
} else if !obj.errorType.isEmpty {
status = .error
} else {
status = .pending
}
} else {
status = .inbound
}
}
}