From d2755483160ff4da85adbb7e9a6981556d6b8080 Mon Sep 17 00:00:00 2001 From: Stefan Niedermann Date: Tue, 16 Jan 2024 10:12:18 +0100 Subject: [PATCH] chore(sync): Minor code refactoring Signed-off-by: Stefan Niedermann --- app/build.gradle | 3 -- .../deck/remote/api/ApiProvider.java | 5 +++ .../deck/remote/api/RequestHelper.java | 39 +++++++++---------- 3 files changed, 24 insertions(+), 23 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index aa3e7efe4..fa82a387e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -129,9 +129,6 @@ dependencies { // Retrofit implementation 'com.squareup.retrofit2:retrofit:2.9.0' - // ReactiveX - implementation 'io.reactivex.rxjava2:rxjava:2.2.21' - // Zoom Layout implementation("com.otaliastudios:zoomlayout:1.9.0") diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java index cad3457a8..cee04e2dc 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/ApiProvider.java @@ -36,6 +36,11 @@ public synchronized void initSsoApi(@NonNull final NextcloudAPI.ApiConnectedList } } + @NonNull + public Context getContext() { + return this.context; + } + public DeckAPI getDeckAPI() { return deckAPI; } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java index d760f5a79..4106c73a3 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/RequestHelper.java @@ -1,9 +1,13 @@ package it.niedermann.nextcloud.deck.remote.api; +import android.content.Context; + import androidx.annotation.NonNull; import com.nextcloud.android.sso.exceptions.NextcloudHttpRequestFailedException; +import java.util.function.Supplier; + import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.util.ExecutorServiceProvider; import okhttp3.Request; @@ -14,45 +18,40 @@ public class RequestHelper { -// static { -// RxJavaPlugins.setErrorHandler(DeckLog::logError); -// } - - public static void request(@NonNull final ApiProvider provider, @NonNull final ObservableProvider call, @NonNull final ResponseCallback callback) { + public static void request(@NonNull final ApiProvider provider, + @NonNull final Supplier> callProvider, + @NonNull final ResponseCallback callback) { if (provider.getDeckAPI() == null) { provider.initSsoApi(callback::onError); } - final ResponseConsumer cb = new ResponseConsumer<>(callback); - ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit(() -> call.getObservableFromCall().enqueue(cb)); -// .subscribeOn(Schedulers.from(ExecutorServiceProvider.getExecutorService())) -// .subscribe(cb, cb.getExceptionConsumer()); - } - - public interface ObservableProvider { - Call getObservableFromCall(); + final ResponseConsumer cb = new ResponseConsumer<>(provider.getContext(), callback); + ExecutorServiceProvider.getLinkedBlockingQueueExecutor().submit(() -> callProvider.get().enqueue(cb)); } private static class ResponseConsumer implements Callback { + @NonNull + private final Context context; @NonNull private final ResponseCallback callback; - private ResponseConsumer(@NonNull ResponseCallback callback) { + private ResponseConsumer(@NonNull Context context, @NonNull ResponseCallback callback) { + this.context = context; this.callback = callback; } @Override public void onResponse(@NonNull Call call, Response response) { - if(response.isSuccessful()) { + if (response.isSuccessful()) { T responseObject = response.body(); callback.fillAccountIDs(responseObject); callback.onResponseWithHeaders(responseObject, response.headers()); } else { - onFailure(call, new NextcloudHttpRequestFailedException(response.code(), buildCause(response))); + onFailure(call, new NextcloudHttpRequestFailedException(context, response.code(), buildCause(response))); } } - private RuntimeException buildCause(Response response){ + private RuntimeException buildCause(Response response) { Request request = response.raw().request(); String url = request.url().toString(); String method = request.method(); @@ -60,10 +59,10 @@ private RuntimeException buildCause(Response response){ String responseBody = ""; try (ResponseBody body = response.errorBody()) { if (body != null) { - responseBody = response.errorBody().string() ; + responseBody = response.errorBody().string(); } } catch (Exception e) { - responseBody = ""; + responseBody = ""; } return new RuntimeException("HTTP StatusCode wasn't 2xx:\n" + "Got [HTTP " + code + "] for Call [" + method + " " + url + "] with Message:\n" + @@ -71,7 +70,7 @@ private RuntimeException buildCause(Response response){ } @Override - public void onFailure(@NonNull Call call, Throwable t) { + public void onFailure(@NonNull Call call, @NonNull Throwable t) { DeckLog.logError(t); callback.onError(ServerCommunicationErrorHandler.translateError(t)); }