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
		
	
// 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)"
 | 
						|
    }
 | 
						|
}
 |