tweaks for sending message to snode

pull/622/head
ryanzhao 2 years ago
parent 15b954dbd6
commit 4224a1fa3c

@ -205,7 +205,7 @@ public final class MessageSender : NSObject {
let timestamp = UInt64(Int64(message.sentTimestamp!) + SnodeAPI.clockOffset)
let snodeMessage = SnodeMessage(recipient: message.recipient!, data: base64EncodedData, ttl: message.ttl, timestamp: timestamp)
SnodeAPI.sendMessage(snodeMessage,
authenticated: (kind != .closedGroupMessage),
isClosedGroupMessage: (kind == .closedGroupMessage),
isConfigMessage: message.isKind(of: ConfigurationMessage.self))
.done(on: DispatchQueue.global(qos: .userInitiated)) { promises in
var isSuccess = false

@ -489,18 +489,12 @@ public final class SnodeAPI : NSObject {
// MARK: Store
public static func sendConfigMessage(_ message: SnodeMessage) -> Promise<Set<RawResponsePromise>> {
return sendMessageWithAuthentication(message, namespace: configNamespace)
}
public static func sendMessage(_ message: SnodeMessage, authenticated: Bool, isConfigMessage: Bool) -> Promise<Set<RawResponsePromise>> {
public static func sendMessage(_ message: SnodeMessage, isClosedGroupMessage: Bool, isConfigMessage: Bool) -> Promise<Set<RawResponsePromise>> {
if isConfigMessage {
return sendConfigMessage(message)
return sendMessageWithAuthentication(message, namespace: configNamespace)
}
if authenticated {
return sendMessageWithAuthentication(message, namespace: defaultNamespace)
}
return sendMessageUnauthenticated(message)
let namespace = isClosedGroupMessage ? unauthenticatedNamespace : defaultNamespace
return sendMessageUnauthenticated(message, namespace: namespace)
}
private static func sendMessageWithAuthentication(_ message: SnodeMessage, namespace: Int) -> Promise<Set<RawResponsePromise>> {
@ -533,13 +527,13 @@ public final class SnodeAPI : NSObject {
return promise
}
private static func sendMessageUnauthenticated(_ message: SnodeMessage) -> Promise<Set<RawResponsePromise>> {
private static func sendMessageUnauthenticated(_ message: SnodeMessage, namespace: Int) -> Promise<Set<RawResponsePromise>> {
let (promise, seal) = Promise<Set<RawResponsePromise>>.pending()
let publicKey = Features.useTestnet ? message.recipient.removing05PrefixIfNeeded() : message.recipient
Threading.workQueue.async {
getTargetSnodes(for: publicKey).map2 { targetSnodes in
var parameters = message.toJSON()
parameters["namespace"] = unauthenticatedNamespace
parameters["namespace"] = namespace
return Set(targetSnodes.map { targetSnode in
attempt(maxRetryCount: maxRetryCount, recoveringOn: Threading.workQueue) {
invoke(.sendMessage, on: targetSnode, associatedWith: publicKey, parameters: parameters)

Loading…
Cancel
Save