mirror of https://github.com/oxen-io/session-ios
You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.6 KiB
Swift
47 lines
1.6 KiB
Swift
3 years ago
|
// Copyright © 2022 Rangeproof Pty Ltd. All rights reserved.
|
||
|
|
||
|
import Foundation
|
||
|
|
||
|
@objc(SNOpenGroupServerIdLookup)
|
||
|
public final class OpenGroupServerIdLookup: NSObject, NSCoding { // NSObject/NSCoding conformance is needed for YapDatabase compatibility
|
||
|
@objc public let id: String
|
||
|
@objc public let serverId: UInt64
|
||
|
@objc public let tsMessageId: String
|
||
|
|
||
|
// MARK: - Initialization
|
||
|
|
||
|
@objc public init(server: String, room: String, serverId: UInt64, tsMessageId: String) {
|
||
|
self.id = OpenGroupServerIdLookup.id(serverId: serverId, in: room, on: server)
|
||
|
self.serverId = serverId
|
||
|
self.tsMessageId = tsMessageId
|
||
|
|
||
|
super.init()
|
||
|
}
|
||
|
|
||
|
private override init() { preconditionFailure("Use init(blindedId:sessionId:) instead.") }
|
||
|
|
||
|
// MARK: - Coding
|
||
|
|
||
|
public required init?(coder: NSCoder) {
|
||
|
guard let id: String = coder.decodeObject(forKey: "id") as! String? else { return nil }
|
||
|
guard let serverId: UInt64 = coder.decodeObject(forKey: "serverId") as! UInt64? else { return nil }
|
||
|
guard let tsMessageId: String = coder.decodeObject(forKey: "tsMessageId") as! String? else { return nil }
|
||
|
|
||
|
self.id = id
|
||
|
self.serverId = serverId
|
||
|
self.tsMessageId = tsMessageId
|
||
|
}
|
||
|
|
||
|
public func encode(with coder: NSCoder) {
|
||
|
coder.encode(id, forKey: "id")
|
||
|
coder.encode(serverId, forKey: "serverId")
|
||
|
coder.encode(tsMessageId, forKey: "tsMessageId")
|
||
|
}
|
||
|
|
||
|
// MARK: - Convenience
|
||
|
|
||
|
static func id(serverId: UInt64, in room: String, on server: String) -> String {
|
||
|
return "\(server).\(room).\(serverId)"
|
||
|
}
|
||
|
}
|