diff --git a/SignalServiceKit/src/Loki/API/LokiGroupChat.swift b/SignalServiceKit/src/Loki/API/LokiGroupChat.swift new file mode 100644 index 000000000..43912ae00 --- /dev/null +++ b/SignalServiceKit/src/Loki/API/LokiGroupChat.swift @@ -0,0 +1,38 @@ + +@objc(LKGroupChat) +public final class LokiGroupChat : NSObject { + public let kind: Kind + public let server: String + public let displayName: String + public let isDeletable: Bool + + public var id: String { + switch kind { + case .publicChat(let id): return "\(server).\(id)" + case .rss(let customID): return customID + } + } + + public enum Kind { case publicChat(id: UInt), rss(customID: String) } + + // MARK: Initialization + public init(kind: Kind, server: String, displayName: String, isDeletable: Bool) { + self.kind = kind + self.server = server + self.displayName = displayName + self.isDeletable = isDeletable + } + + @objc public convenience init(kindAsString: String, id: String, server: String, displayName: String, isDeletable: Bool) { + let kind: Kind + switch kindAsString { + case "publicChat": kind = .publicChat(id: UInt(id)!) + case "rss": kind = .rss(customID: id) + default: preconditionFailure() + } + self.init(kind: kind, server: server, displayName: displayName, isDeletable: isDeletable) + } + + // MARK: Description + override public var description: String { return "\(id) (\(displayName))" } +} diff --git a/SignalServiceKit/src/Loki/API/LokiGroupChatAPI.swift b/SignalServiceKit/src/Loki/API/LokiGroupChatAPI.swift index 9e430926d..205d58c5a 100644 --- a/SignalServiceKit/src/Loki/API/LokiGroupChatAPI.swift +++ b/SignalServiceKit/src/Loki/API/LokiGroupChatAPI.swift @@ -169,7 +169,7 @@ public final class LokiGroupChatAPI : NSObject { dateFormatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSSZ" guard let json = rawResponse as? JSON, let messageAsJSON = json["data"] as? JSON, let serverID = messageAsJSON["id"] as? UInt, let body = messageAsJSON["text"] as? String, let dateAsString = messageAsJSON["created_at"] as? String, let date = dateFormatter.date(from: dateAsString) else { - print("[Loki] Couldn't parse messages for group chat with ID: \(group) on server: \(server) from: \(rawResponse).") + print("[Loki] Couldn't parse message for group chat with ID: \(group) on server: \(server) from: \(rawResponse).") throw Error.messageParsingFailed } let timestamp = UInt64(date.timeIntervalSince1970) * 1000 @@ -197,7 +197,7 @@ public final class LokiGroupChatAPI : NSObject { } return rawMessages.flatMap { message in guard let serverID = message["id"] as? UInt else { - print("[Loki] Couldn't parse message for group chat with ID: \(group) on server: \(server) from: \(message).") + print("[Loki] Couldn't parse deleted message for group chat with ID: \(group) on server: \(server) from: \(message).") return nil } let isDeleted = (message["is_deleted"] as? Bool ?? false)