From 7cfd7921464afbb7ad4da15e7276027fcb655de3 Mon Sep 17 00:00:00 2001 From: stefan-niedermann Date: Fri, 6 Dec 2019 18:22:47 +0100 Subject: Allow SyncManager to be instanziated with only a Context --- .../it/niedermann/nextcloud/deck/api/RequestHelper.java | 16 +++++++++++----- .../nextcloud/deck/persistence/sync/SyncManager.java | 12 ++++++++++-- .../deck/persistence/sync/adapters/ServerAdapter.java | 11 +++++------ 3 files changed, 26 insertions(+), 13 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java index fcbe31acb..b632b4501 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java @@ -2,6 +2,8 @@ package it.niedermann.nextcloud.deck.api; import android.app.Activity; +import androidx.annotation.Nullable; + import com.nextcloud.android.sso.api.NextcloudAPI; import io.reactivex.Observable; @@ -10,7 +12,7 @@ import io.reactivex.schedulers.Schedulers; public class RequestHelper { - public static void request(final Activity sourceActivity, final ApiProvider provider, final ObservableProvider call, final IResponseCallback callback){ + public static void request(@Nullable final Activity sourceActivity, final ApiProvider provider, final ObservableProvider call, final IResponseCallback callback){ if (provider.getDeckAPI() == null){ provider.initSsoApi(new NextcloudAPI.ApiConnectedListener() { @@ -25,7 +27,7 @@ public class RequestHelper { runRequest(sourceActivity, call.getObservableFromCall(), callback); } - private static void runRequest(final Activity sourceActivity, final Observable request, final IResponseCallback callback){ + private static void runRequest(@Nullable final Activity sourceActivity, final Observable request, final IResponseCallback callback){ ResponseConsumer cb = new ResponseConsumer<>(sourceActivity, callback); request.subscribeOn(Schedulers.newThread()) .subscribe(cb, cb.getExceptionConsumer()); @@ -38,16 +40,20 @@ public class RequestHelper { public static class ResponseConsumer implements Consumer { - private Activity sourceActivity; + @Nullable private Activity sourceActivity; private IResponseCallback callback; private Consumer exceptionConsumer = new Consumer() { @Override public void accept(final Throwable throwable) { - sourceActivity.runOnUiThread(() -> callback.onError(throwable) ); + if(sourceActivity == null) { + callback.onError(throwable); + } else { + sourceActivity.runOnUiThread(() -> callback.onError(throwable)); + } } }; - public ResponseConsumer(Activity sourceActivity, IResponseCallback callback) { + public ResponseConsumer(@Nullable Activity sourceActivity, IResponseCallback callback) { this.sourceActivity = sourceActivity; this.callback = callback; } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java index 5902f2fa9..c9e630efb 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java @@ -5,6 +5,7 @@ import android.content.Context; import android.net.Uri; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.lifecycle.LiveData; import androidx.lifecycle.MutableLiveData; @@ -53,13 +54,20 @@ public class SyncManager { private DataBaseAdapter dataBaseAdapter; private ServerAdapter serverAdapter; - public SyncManager(Activity sourceActivity) { - Context applicationContext = sourceActivity.getApplicationContext(); + public SyncManager(Context context, @Nullable Activity sourceActivity) { + if(context == null) { + throw new IllegalArgumentException("Provide a valid context."); + } + Context applicationContext = context.getApplicationContext(); LastSyncUtil.init(applicationContext); dataBaseAdapter = new DataBaseAdapter(applicationContext); this.serverAdapter = new ServerAdapter(applicationContext, sourceActivity); } + public SyncManager(Activity sourceActivity) { + this(sourceActivity, sourceActivity); + } + private void doAsync(Runnable r) { new Thread(r).start(); } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java index 45e007559..3eec356aa 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/ServerAdapter.java @@ -9,6 +9,8 @@ import android.net.NetworkCapabilities; import android.net.NetworkInfo; import android.preference.PreferenceManager; +import androidx.annotation.Nullable; + import com.nextcloud.android.sso.exceptions.NextcloudFilesAppAccountNotFoundException; import com.nextcloud.android.sso.exceptions.NoCurrentAccountSelectedException; @@ -19,8 +21,6 @@ import java.util.List; import java.util.Locale; import java.util.TimeZone; -import butterknife.BindString; -import butterknife.ButterKnife; import it.niedermann.nextcloud.deck.R; import it.niedermann.nextcloud.deck.api.ApiProvider; import it.niedermann.nextcloud.deck.api.IResponseCallback; @@ -42,7 +42,6 @@ import it.niedermann.nextcloud.deck.util.DateUtil; public class ServerAdapter { - @BindString(R.string.pref_key_wifi_only) String prefKeyWifiOnly; private static final DateFormat API_FORMAT = @@ -54,13 +53,13 @@ public class ServerAdapter { private Context applicationContext; private ApiProvider provider; - private Activity sourceActivity; + @Nullable private Activity sourceActivity; private SharedPreferences lastSyncPref; - public ServerAdapter(Context applicationContext, Activity sourceActivity) { + public ServerAdapter(Context applicationContext, @Nullable Activity sourceActivity) { this.applicationContext = applicationContext; this.sourceActivity = sourceActivity; - ButterKnife.bind(this, sourceActivity); + prefKeyWifiOnly = applicationContext.getResources().getString(R.string.pref_key_wifi_only); provider = new ApiProvider(applicationContext); lastSyncPref = applicationContext.getSharedPreferences( applicationContext.getString(R.string.shared_preference_last_sync), Context.MODE_PRIVATE); -- cgit v1.2.3