crypto: Expose the new outgoing request method
This commit is contained in:
parent
e16c5d07e5
commit
1eeb97ec51
|
@ -22,6 +22,11 @@ import androidx.lifecycle.LiveData
|
||||||
import androidx.paging.PagedList
|
import androidx.paging.PagedList
|
||||||
import com.squareup.moshi.Types
|
import com.squareup.moshi.Types
|
||||||
import dagger.Lazy
|
import dagger.Lazy
|
||||||
|
import java.io.File
|
||||||
|
import java.util.concurrent.atomic.AtomicBoolean
|
||||||
|
import javax.inject.Inject
|
||||||
|
import kotlin.jvm.Throws
|
||||||
|
import kotlin.math.max
|
||||||
import kotlinx.coroutines.CancellationException
|
import kotlinx.coroutines.CancellationException
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.cancelChildren
|
import kotlinx.coroutines.cancelChildren
|
||||||
|
@ -98,11 +103,7 @@ import org.matrix.android.sdk.internal.util.JsonCanonicalizer
|
||||||
import org.matrix.android.sdk.internal.util.MatrixCoroutineDispatchers
|
import org.matrix.android.sdk.internal.util.MatrixCoroutineDispatchers
|
||||||
import org.matrix.olm.OlmManager
|
import org.matrix.olm.OlmManager
|
||||||
import timber.log.Timber
|
import timber.log.Timber
|
||||||
import java.io.File
|
import uniffi.olm.Request
|
||||||
import java.util.concurrent.atomic.AtomicBoolean
|
|
||||||
import javax.inject.Inject
|
|
||||||
import kotlin.jvm.Throws
|
|
||||||
import kotlin.math.max
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A `CryptoService` class instance manages the end-to-end crypto for a session.
|
* A `CryptoService` class instance manages the end-to-end crypto for a session.
|
||||||
|
@ -363,7 +364,7 @@ internal class DefaultCryptoService @Inject constructor(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun internalStart() {
|
private suspend fun internalStart() {
|
||||||
if (isStarted.get() || isStarting.get()) {
|
if (isStarted.get() || isStarting.get()) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -372,7 +373,17 @@ internal class DefaultCryptoService @Inject constructor(
|
||||||
|
|
||||||
try {
|
try {
|
||||||
olmMachine = OlmMachine(userId, deviceId!!, dataDir)
|
olmMachine = OlmMachine(userId, deviceId!!, dataDir)
|
||||||
|
|
||||||
Timber.v("HELLLO WORLD STARTING CRYPTO ${olmMachine?.identityKeys()}")
|
Timber.v("HELLLO WORLD STARTING CRYPTO ${olmMachine?.identityKeys()}")
|
||||||
|
|
||||||
|
// TODO sent out those requests in a sensible place.
|
||||||
|
for (request in olmMachine!!.outgoingRequests()) {
|
||||||
|
when (request) {
|
||||||
|
is Request.KeysUpload -> Timber.v("HELLO KEYS UPLOAD REQUEST ${request.body}")
|
||||||
|
is Request.KeysQuery -> Timber.v("HELLO KEYS QUERY REQUEST ${request.body}")
|
||||||
|
is Request.ToDevice -> Timber.v("HELLO TO DEVICE REQUEST ${request.body}")
|
||||||
|
}
|
||||||
|
}
|
||||||
} catch (throwable: Throwable) {
|
} catch (throwable: Throwable) {
|
||||||
Timber.v("HELLLO WORLD FAILED CRYPTO $throwable")
|
Timber.v("HELLLO WORLD FAILED CRYPTO $throwable")
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@ import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import uniffi.olm.Device as InnerDevice
|
import uniffi.olm.Device as InnerDevice
|
||||||
import uniffi.olm.OlmMachine as InnerMachine
|
import uniffi.olm.OlmMachine as InnerMachine
|
||||||
|
import uniffi.olm.Request
|
||||||
|
import uniffi.olm.RequestType
|
||||||
import uniffi.olm.Sas as InnerSas
|
import uniffi.olm.Sas as InnerSas
|
||||||
|
|
||||||
class Device(inner: InnerDevice, machine: InnerMachine) {
|
class Device(inner: InnerDevice, machine: InnerMachine) {
|
||||||
|
@ -59,6 +61,18 @@ class OlmMachine(user_id: String, device_id: String, path: File) {
|
||||||
return this.inner.identityKeys()
|
return this.inner.identityKeys()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
suspend fun outgoingRequests(): List<Request> = withContext(Dispatchers.IO) {
|
||||||
|
inner.outgoingRequests()
|
||||||
|
}
|
||||||
|
|
||||||
|
suspend fun markRequestAsSent(
|
||||||
|
request_id: String,
|
||||||
|
request_type: RequestType,
|
||||||
|
response_body: String
|
||||||
|
) = withContext(Dispatchers.IO) {
|
||||||
|
inner.markRequestAsSent(request_id, request_type, response_body)
|
||||||
|
}
|
||||||
|
|
||||||
suspend fun getDevice(user_id: String, device_id: String): Device? = withContext(Dispatchers.IO) {
|
suspend fun getDevice(user_id: String, device_id: String): Device? = withContext(Dispatchers.IO) {
|
||||||
when (val device: InnerDevice? = inner.getDevice(user_id, device_id)) {
|
when (val device: InnerDevice? = inner.getDevice(user_id, device_id)) {
|
||||||
null -> null
|
null -> null
|
||||||
|
|
Loading…
Reference in New Issue