Reduce code duplication
This commit is contained in:
parent
4995c14f69
commit
f2f94c4a93
|
@ -221,55 +221,34 @@ internal class DefaultSendService @AssistedInject constructor(
|
||||||
* We use the roomId of the local echo event
|
* We use the roomId of the local echo event
|
||||||
*/
|
*/
|
||||||
private fun internalSendMedia(allLocalEchoes: List<Event>, attachment: ContentAttachmentData, compressBeforeSending: Boolean): Cancelable {
|
private fun internalSendMedia(allLocalEchoes: List<Event>, attachment: ContentAttachmentData, compressBeforeSending: Boolean): Cancelable {
|
||||||
val splitLocalEchoes = allLocalEchoes.groupBy { cryptoService.isRoomEncrypted(it.roomId!!) }
|
|
||||||
|
|
||||||
val encryptedLocalEchoes = splitLocalEchoes[true].orEmpty()
|
|
||||||
val clearLocalEchoes = splitLocalEchoes[false].orEmpty()
|
|
||||||
|
|
||||||
val cancelableBag = CancelableBag()
|
val cancelableBag = CancelableBag()
|
||||||
|
|
||||||
if (encryptedLocalEchoes.isNotEmpty()) {
|
allLocalEchoes.groupBy { cryptoService.isRoomEncrypted(it.roomId!!) }
|
||||||
val uploadWork = createUploadMediaWork(encryptedLocalEchoes, attachment, true, compressBeforeSending, startChain = true)
|
.apply {
|
||||||
|
keys.forEach { isRoomEncrypted ->
|
||||||
|
// Should never be empty
|
||||||
|
val localEchoes = get(isRoomEncrypted).orEmpty()
|
||||||
|
val uploadWork = createUploadMediaWork(localEchoes, attachment, isRoomEncrypted, compressBeforeSending, startChain = true)
|
||||||
|
|
||||||
val dispatcherWork = createMultipleEventDispatcherWork(true)
|
val dispatcherWork = createMultipleEventDispatcherWork(isRoomEncrypted)
|
||||||
|
|
||||||
workManagerProvider.workManager
|
workManagerProvider.workManager
|
||||||
.beginUniqueWork(buildWorkName(UPLOAD_WORK), ExistingWorkPolicy.APPEND, uploadWork)
|
.beginUniqueWork(buildWorkName(UPLOAD_WORK), ExistingWorkPolicy.APPEND, uploadWork)
|
||||||
.then(dispatcherWork)
|
.then(dispatcherWork)
|
||||||
.enqueue()
|
.enqueue()
|
||||||
.also { operation ->
|
.also { operation ->
|
||||||
operation.result.addListener(Runnable {
|
operation.result.addListener(Runnable {
|
||||||
if (operation.result.isCancelled) {
|
if (operation.result.isCancelled) {
|
||||||
Timber.e("CHAIN WAS CANCELLED")
|
Timber.e("CHAIN WAS CANCELLED")
|
||||||
} else if (operation.state.value is Operation.State.FAILURE) {
|
} else if (operation.state.value is Operation.State.FAILURE) {
|
||||||
Timber.e("CHAIN DID FAIL")
|
Timber.e("CHAIN DID FAIL")
|
||||||
}
|
}
|
||||||
}, workerFutureListenerExecutor)
|
}, workerFutureListenerExecutor)
|
||||||
|
}
|
||||||
|
|
||||||
|
cancelableBag.add(CancelableWork(workManagerProvider.workManager, dispatcherWork.id))
|
||||||
}
|
}
|
||||||
|
}
|
||||||
cancelableBag.add(CancelableWork(workManagerProvider.workManager, dispatcherWork.id))
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clearLocalEchoes.isNotEmpty()) {
|
|
||||||
val uploadWork = createUploadMediaWork(clearLocalEchoes, attachment, false, compressBeforeSending, startChain = true)
|
|
||||||
val dispatcherWork = createMultipleEventDispatcherWork(false)
|
|
||||||
|
|
||||||
workManagerProvider.workManager
|
|
||||||
.beginUniqueWork(buildWorkName(UPLOAD_WORK), ExistingWorkPolicy.APPEND, uploadWork)
|
|
||||||
.then(dispatcherWork)
|
|
||||||
.enqueue()
|
|
||||||
.also { operation ->
|
|
||||||
operation.result.addListener(Runnable {
|
|
||||||
if (operation.result.isCancelled) {
|
|
||||||
Timber.e("CHAIN WAS CANCELLED")
|
|
||||||
} else if (operation.state.value is Operation.State.FAILURE) {
|
|
||||||
Timber.e("CHAIN DID FAIL")
|
|
||||||
}
|
|
||||||
}, workerFutureListenerExecutor)
|
|
||||||
}
|
|
||||||
|
|
||||||
cancelableBag.add(CancelableWork(workManagerProvider.workManager, dispatcherWork.id))
|
|
||||||
}
|
|
||||||
|
|
||||||
return cancelableBag
|
return cancelableBag
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue