diff --git a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt index 2f6cf141d1..099b2541ab 100644 --- a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt +++ b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt @@ -15,6 +15,7 @@ import nl.komponents.kovenant.all import nl.komponents.kovenant.functional.bind import nl.komponents.kovenant.functional.map import nl.komponents.kovenant.task +import nl.komponents.kovenant.unwrap import org.session.libsession.messaging.MessagingModuleConfiguration import org.session.libsession.messaging.utilities.MessageWrapper import org.session.libsession.messaging.utilities.SodiumUtilities.sodium @@ -202,7 +203,7 @@ object SnodeAPI { } // Public API - fun getAccountID(onsName: String): Promise { + fun getAccountID(onsName: String): Promise = task { val validationCount = 3 val accountIDByteCount = 33 // Hash the ONS name using BLAKE2b @@ -228,7 +229,7 @@ object SnodeAPI { } } } - return all(promises).map { results -> + all(promises).map { results -> results.map { json -> val intermediate = json["result"] as? Map<*, *> ?: throw Error.Generic val hexEncodedCiphertext = intermediate["encrypted_value"] as? String ?: throw Error.Generic @@ -264,7 +265,7 @@ object SnodeAPI { }.takeIf { it.size == validationCount && it.toSet().size == 1 }?.first() ?: throw Error.ValidationFailed } - } + }.unwrap() fun getSwarm(publicKey: String): Promise, Exception> = database.getSwarm(publicKey)?.takeIf { it.size >= minimumSwarmSnodeCount }?.let(Promise.Companion::of)