session-ios/SessionMessagingKit/Open Groups/OpenGroup.swift

44 lines
1.6 KiB
Swift

@objc(SNOpenGroup)
public final class OpenGroup : NSObject, NSCoding {
@objc public let id: String
@objc public let idAsData: Data
@objc public let channel: UInt64
@objc public let server: String
@objc public let displayName: String
@objc public let isDeletable: Bool
@objc public init?(channel: UInt64, server: String, displayName: String, isDeletable: Bool) {
let id = "\(server).\(channel)"
self.id = id
guard let idAsData = id.data(using: .utf8) else { return nil }
self.idAsData = idAsData
self.channel = channel
self.server = server.lowercased()
self.displayName = displayName
self.isDeletable = isDeletable
}
// MARK: Coding
@objc public init?(coder: NSCoder) {
channel = UInt64(coder.decodeInt64(forKey: "channel"))
server = coder.decodeObject(forKey: "server") as! String
let id = "\(server).\(channel)"
self.id = id
guard let idAsData = id.data(using: .utf8) else { return nil }
self.idAsData = idAsData
displayName = coder.decodeObject(forKey: "displayName") as! String
isDeletable = coder.decodeBool(forKey: "isDeletable")
super.init()
}
@objc public func encode(with coder: NSCoder) {
coder.encode(Int64(channel), forKey: "channel")
coder.encode(server, forKey: "server")
coder.encode(displayName, forKey: "displayName")
coder.encode(isDeletable, forKey: "isDeletable")
}
override public var description: String { "\(displayName) (\(server))" }
}