mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
1492232224
Added a new OpenGroupServerIdLookup to make it easier to get a database id via an open group server id Added a migration to generate the above data Updated the handleCompactBody method to stop early if there are no messages to delete (would previously enumerate all interactions regardless) Updated the handleCompactBody to fetch the mapping for the deleted message so we can avoid enumerating all interactions
46 lines
1.6 KiB
Swift
46 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)"
|
|
}
|
|
}
|