Fix / Cancel messages was not sent
This commit is contained in:
parent
f541661059
commit
b26318f15c
|
@ -36,7 +36,7 @@ internal interface SasTransport {
|
||||||
|
|
||||||
fun sendVerificationRequest(localID: String, otherUserId: String, roomId: String, callback: (String?, MessageVerificationRequestContent?) -> Unit)
|
fun sendVerificationRequest(localID: String, otherUserId: String, roomId: String, callback: (String?, MessageVerificationRequestContent?) -> Unit)
|
||||||
|
|
||||||
fun cancelTransaction(transactionId: String, userId: String, userDevice: String, code: CancelCode)
|
fun cancelTransaction(transactionId: String, otherUserId: String, otherUserDevice: String, code: CancelCode)
|
||||||
|
|
||||||
fun done(transactionId: String)
|
fun done(transactionId: String)
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -177,7 +177,7 @@ internal class SasTransportRoomMessage(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun cancelTransaction(transactionId: String, userId: String, userDevice: String, code: CancelCode) {
|
override fun cancelTransaction(transactionId: String, otherUserId: String, otherUserDevice: String, code: CancelCode) {
|
||||||
Timber.d("## SAS canceling transaction $transactionId for reason $code")
|
Timber.d("## SAS canceling transaction $transactionId for reason $code")
|
||||||
val event = createEventAndLocalEcho(
|
val event = createEventAndLocalEcho(
|
||||||
type = EventType.KEY_VERIFICATION_CANCEL,
|
type = EventType.KEY_VERIFICATION_CANCEL,
|
||||||
|
@ -185,7 +185,7 @@ internal class SasTransportRoomMessage(
|
||||||
content = MessageVerificationCancelContent.create(transactionId, code).toContent()
|
content = MessageVerificationCancelContent.create(transactionId, code).toContent()
|
||||||
)
|
)
|
||||||
val workerParams = WorkerParamsFactory.toData(SendVerificationMessageWorker.Params(
|
val workerParams = WorkerParamsFactory.toData(SendVerificationMessageWorker.Params(
|
||||||
userId = userId,
|
userId = this.userId,
|
||||||
event = event
|
event = event
|
||||||
))
|
))
|
||||||
enqueueSendWork(workerParams)
|
enqueueSendWork(workerParams)
|
||||||
|
|
|
@ -77,11 +77,11 @@ internal class SasTransportToDevice(
|
||||||
// To device do not do anything here
|
// To device do not do anything here
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun cancelTransaction(transactionId: String, userId: String, userDevice: String, code: CancelCode) {
|
override fun cancelTransaction(transactionId: String, otherUserId: String, otherUserDevice: String, code: CancelCode) {
|
||||||
Timber.d("## SAS canceling transaction $transactionId for reason $code")
|
Timber.d("## SAS canceling transaction $transactionId for reason $code")
|
||||||
val cancelMessage = KeyVerificationCancel.create(transactionId, code)
|
val cancelMessage = KeyVerificationCancel.create(transactionId, code)
|
||||||
val contentMap = MXUsersDevicesMap<Any>()
|
val contentMap = MXUsersDevicesMap<Any>()
|
||||||
contentMap.setObject(userId, userDevice, cancelMessage)
|
contentMap.setObject(otherUserId, otherUserDevice, cancelMessage)
|
||||||
sendToDeviceTask
|
sendToDeviceTask
|
||||||
.configureWith(SendToDeviceTask.Params(EventType.KEY_VERIFICATION_CANCEL, contentMap, transactionId)) {
|
.configureWith(SendToDeviceTask.Params(EventType.KEY_VERIFICATION_CANCEL, contentMap, transactionId)) {
|
||||||
this.callback = object : MatrixCallback<Unit> {
|
this.callback = object : MatrixCallback<Unit> {
|
||||||
|
|
|
@ -12,6 +12,7 @@ import im.vector.matrix.android.api.session.events.model.Event
|
||||||
import im.vector.matrix.android.internal.crypto.tasks.SendVerificationMessageTask
|
import im.vector.matrix.android.internal.crypto.tasks.SendVerificationMessageTask
|
||||||
import im.vector.matrix.android.internal.worker.WorkerParamsFactory
|
import im.vector.matrix.android.internal.worker.WorkerParamsFactory
|
||||||
import im.vector.matrix.android.internal.worker.getSessionComponent
|
import im.vector.matrix.android.internal.worker.getSessionComponent
|
||||||
|
import timber.log.Timber
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
internal class SendVerificationMessageWorker constructor(context: Context, params: WorkerParameters)
|
internal class SendVerificationMessageWorker constructor(context: Context, params: WorkerParameters)
|
||||||
|
@ -30,10 +31,14 @@ internal class SendVerificationMessageWorker constructor(context: Context, param
|
||||||
lateinit var cryptoService: CryptoService
|
lateinit var cryptoService: CryptoService
|
||||||
|
|
||||||
override suspend fun doWork(): Result {
|
override suspend fun doWork(): Result {
|
||||||
|
val errorOutputData = Data.Builder().putBoolean("failed", true).build()
|
||||||
val params = WorkerParamsFactory.fromData<Params>(inputData)
|
val params = WorkerParamsFactory.fromData<Params>(inputData)
|
||||||
?: return Result.success(Data.Builder().putBoolean("failed", true).build())
|
?: return Result.success(errorOutputData)
|
||||||
|
|
||||||
val sessionComponent = getSessionComponent(params.userId) ?: return Result.success()
|
val sessionComponent = getSessionComponent(params.userId) ?: return Result.success(errorOutputData).also {
|
||||||
|
// TODO, can this happen? should I update local echo?
|
||||||
|
Timber.e("Unknown Session, cannot send message, userId:${params.userId}")
|
||||||
|
}
|
||||||
sessionComponent.inject(this)
|
sessionComponent.inject(this)
|
||||||
val localId = params.event.eventId ?: ""
|
val localId = params.event.eventId ?: ""
|
||||||
return try {
|
return try {
|
||||||
|
@ -49,7 +54,7 @@ internal class SendVerificationMessageWorker constructor(context: Context, param
|
||||||
if (exception.shouldBeRetried()) {
|
if (exception.shouldBeRetried()) {
|
||||||
Result.retry()
|
Result.retry()
|
||||||
} else {
|
} else {
|
||||||
Result.success(Data.Builder().putBoolean("failed", true).build())
|
Result.success(errorOutputData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue