1
0
mirror of https://github.com/owncloud/android-library.git synced 2025-06-07 07:56:19 +00:00

Handle remote operations, both sync and non-sync

This commit is contained in:
davigonz 2019-09-27 13:45:10 +02:00
parent 9aff678fa4
commit d73ee43e3d
2 changed files with 11 additions and 3 deletions

View File

@ -192,7 +192,7 @@ public abstract class RemoteOperation<T> implements Runnable {
/**
* Synchronously executes the remote operation
* <p>
*
* Do not call this method from the main thread.
*
* @param client Client object to reach an ownCloud server during the execution of

View File

@ -20,14 +20,22 @@
package com.owncloud.android.lib.common.operations
suspend fun <T> awaitToRemoteOperationResult(remoteOperation: suspend () -> RemoteOperationResult<T>): T {
remoteOperation.invoke().also {
return handleRemoteOperationResult(it)
}
}
val remoteOperationResult = remoteOperation.invoke()
fun <T> waitForRemoteOperationResult(remoteOperation: () -> RemoteOperationResult<T>): T {
remoteOperation.invoke().also {
return handleRemoteOperationResult(it)
}
}
private fun <T> handleRemoteOperationResult(remoteOperationResult: RemoteOperationResult<T>): T {
if (remoteOperationResult.isSuccess) {
return remoteOperationResult.data
}
// Errors
when (remoteOperationResult.code) {
RemoteOperationResult.ResultCode.UNHANDLED_HTTP_CODE -> throw Exception()
RemoteOperationResult.ResultCode.UNAUTHORIZED -> throw Exception()