Set last hash in params.

pull/17/head
Mikunj 7 years ago
parent 3dcb859316
commit a12d36fb9e

@ -7,7 +7,7 @@ import PromiseKit
public static let defaultMessageTTL: UInt64 = 4 * 24 * 60 * 60 public static let defaultMessageTTL: UInt64 = 4 * 24 * 60 * 60
// MARK: Types // MARK: Types
private struct Target : Hashable { fileprivate struct Target : Hashable {
let address: String let address: String
let port: UInt16 let port: UInt16
@ -59,10 +59,16 @@ import PromiseKit
public static func getMessages() -> Promise<[MessagesPromise]> { public static func getMessages() -> Promise<[MessagesPromise]> {
let hexEncodedPublicKey = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey let hexEncodedPublicKey = OWSIdentityManager.shared().identityKeyPair()!.hexEncodedPublicKey
let lastHash = "" // TODO: Implement
let parameters: [String:Any] = [ "pubKey" : hexEncodedPublicKey, "lastHash" : "" ]
return getTargetSnodes(for: hexEncodedPublicKey).mapValues { targetSnode in return getTargetSnodes(for: hexEncodedPublicKey).mapValues { targetSnode in
return invoke(.getMessages, on: targetSnode, with: parameters).map { parseProtoEnvelopes(from: $0) } let lastHash = getLastHash(for: targetSnode) ?? ""
let parameters: [String:Any] = [ "pubKey" : hexEncodedPublicKey, "lastHash" : lastHash ]
return invoke(.getMessages, on: targetSnode, with: parameters).map { response in
if let json = response as? JSON, let messages = json["messages"] as? [JSON], let lastMessage = messages.last,
let hash = lastMessage["hash"] as? String, let expiresAt = lastMessage["expiration"] as? Int {
updateLastHash(for: targetSnode, hash: hash, expiresAt: UInt64(expiresAt))
}
return parseProtoEnvelopes(from: response)
}
} }
} }
@ -115,19 +121,19 @@ private extension Promise {
// MARK: Last Hash // MARK: Last Hash
extension LokiAPI { fileprivate extension LokiAPI {
private var primaryStorage: OWSPrimaryStorage { private static var primaryStorage: OWSPrimaryStorage {
return OWSPrimaryStorage.shared() return OWSPrimaryStorage.shared()
} }
fileprivate func updateLastHash(for node: Target, hash: String, expiresAt: UInt64) { fileprivate static func updateLastHash(for node: Target, hash: String, expiresAt: UInt64) {
primaryStorage.dbReadWriteConnection.readWrite { transaction in primaryStorage.dbReadWriteConnection.readWrite { transaction in
self.primaryStorage.setLastMessageHash(hash, expiresAt: expiresAt, serviceNode: node.address, transaction: transaction) self.primaryStorage.setLastMessageHash(hash, expiresAt: expiresAt, serviceNode: node.address, transaction: transaction)
} }
} }
fileprivate func getLastHash(for node: Target) -> String? { fileprivate static func getLastHash(for node: Target) -> String? {
var lastHash: String? = nil var lastHash: String? = nil
primaryStorage.dbReadWriteConnection.readWrite { transaction in primaryStorage.dbReadWriteConnection.readWrite { transaction in
lastHash = self.primaryStorage.getLastMessageHash(forServiceNode: node.address, transaction: transaction) lastHash = self.primaryStorage.getLastMessageHash(forServiceNode: node.address, transaction: transaction)

Loading…
Cancel
Save