Fix issue with callback.onSuccess() called multiple times

This commit is contained in:
Benoit Marty 2020-11-09 23:07:53 +01:00
parent cedeea13e6
commit 13ddc28d05
1 changed files with 15 additions and 14 deletions

View File

@ -35,6 +35,7 @@ import org.matrix.android.sdk.internal.task.TaskExecutor
import org.matrix.android.sdk.internal.task.configureWith import org.matrix.android.sdk.internal.task.configureWith
import org.matrix.android.sdk.internal.task.launchToCallback import org.matrix.android.sdk.internal.task.launchToCallback
import org.matrix.android.sdk.internal.util.MatrixCoroutineDispatchers import org.matrix.android.sdk.internal.util.MatrixCoroutineDispatchers
import org.matrix.android.sdk.internal.util.awaitCallback
internal class DefaultStateService @AssistedInject constructor(@Assisted private val roomId: String, internal class DefaultStateService @AssistedInject constructor(@Assisted private val roomId: String,
private val stateEventDataSource: StateEventDataSource, private val stateEventDataSource: StateEventDataSource,
@ -132,23 +133,23 @@ internal class DefaultStateService @AssistedInject constructor(@Assisted private
override fun updateAvatar(avatarUri: Uri, fileName: String, callback: MatrixCallback<Unit>): Cancelable { override fun updateAvatar(avatarUri: Uri, fileName: String, callback: MatrixCallback<Unit>): Cancelable {
return taskExecutor.executorScope.launchToCallback(coroutineDispatchers.main, callback) { return taskExecutor.executorScope.launchToCallback(coroutineDispatchers.main, callback) {
val response = fileUploader.uploadFromUri(avatarUri, fileName, "image/jpeg") val response = fileUploader.uploadFromUri(avatarUri, fileName, "image/jpeg")
sendStateEvent( awaitCallback<Unit> {
eventType = EventType.STATE_ROOM_AVATAR, sendStateEvent(
body = mapOf("url" to response.contentUri), eventType = EventType.STATE_ROOM_AVATAR,
callback = callback, body = mapOf("url" to response.contentUri),
stateKey = null callback = it,
) stateKey = null
)
}
} }
} }
override fun deleteAvatar(callback: MatrixCallback<Unit>): Cancelable { override fun deleteAvatar(callback: MatrixCallback<Unit>): Cancelable {
return taskExecutor.executorScope.launchToCallback(coroutineDispatchers.main, callback) { return sendStateEvent(
sendStateEvent( eventType = EventType.STATE_ROOM_AVATAR,
eventType = EventType.STATE_ROOM_AVATAR, body = emptyMap(),
body = emptyMap(), callback = callback,
callback = callback, stateKey = null
stateKey = null )
)
}
} }
} }