From 9c1725fcd3fe26567ac73f63d5f6d74db512647d Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 28 Mar 2020 14:28:55 +0100 Subject: Give some love to gpodder login UI --- .../core/preferences/GpodnetPreferences.java | 10 ---------- .../danoeh/antennapod/core/sync/SyncService.java | 22 ++++++++++++++-------- 2 files changed, 14 insertions(+), 18 deletions(-) (limited to 'core/src/main/java/de/danoeh') diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java index 4e7d59a48..0a72b5d5c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java +++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java @@ -34,16 +34,6 @@ public class GpodnetPreferences { return ClientConfig.applicationCallbacks.getApplicationInstance().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE); } - public static void registerOnSharedPreferenceChangeListener( - SharedPreferences.OnSharedPreferenceChangeListener listener) { - getPreferences().registerOnSharedPreferenceChangeListener(listener); - } - - public static void unregisterOnSharedPreferenceChangeListener( - SharedPreferences.OnSharedPreferenceChangeListener listener) { - getPreferences().unregisterOnSharedPreferenceChangeListener(listener); - } - private static synchronized void ensurePreferencesLoaded() { if (!preferencesLoaded) { SharedPreferences prefs = getPreferences(); diff --git a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java index a31c19562..d9174255c 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java +++ b/core/src/main/java/de/danoeh/antennapod/core/sync/SyncService.java @@ -11,6 +11,7 @@ import androidx.annotation.NonNull; import androidx.collection.ArrayMap; import androidx.core.app.NotificationCompat; import androidx.core.util.Pair; +import androidx.work.BackoffPolicy; import androidx.work.Constraints; import androidx.work.ExistingWorkPolicy; import androidx.work.NetworkType; @@ -23,6 +24,7 @@ import de.danoeh.antennapod.core.event.SyncServiceEvent; import de.danoeh.antennapod.core.feed.Feed; import de.danoeh.antennapod.core.feed.FeedItem; import de.danoeh.antennapod.core.feed.FeedMedia; +import de.danoeh.antennapod.core.preferences.GpodnetPreferences; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.AntennapodHttpClient; import de.danoeh.antennapod.core.storage.DBReader; @@ -71,27 +73,30 @@ public class SyncService extends Worker { @Override @NonNull public Result doWork() { + if (!GpodnetPreferences.loggedIn()) { + return Result.success(); + } syncServiceImpl = new GpodnetService(AntennapodHttpClient.getHttpClient(), GpodnetService.DEFAULT_BASE_HOST); SharedPreferences.Editor prefs = getApplicationContext().getSharedPreferences(PREF_NAME, Context.MODE_PRIVATE) .edit(); prefs.putLong(PREF_LAST_SYNC_ATTEMPT_TIMESTAMP, System.currentTimeMillis()).apply(); try { syncServiceImpl.login(); - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_subscriptions)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_subscriptions)); syncSubscriptions(); - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_episodes)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_episodes)); syncEpisodeActions(); syncServiceImpl.logout(); clearErrorNotifications(); - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_success)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_success)); prefs.putBoolean(PREF_LAST_SYNC_ATTEMPT_SUCCESS, true).apply(); return Result.success(); } catch (SyncServiceException e) { - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_error)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_error)); prefs.putBoolean(PREF_LAST_SYNC_ATTEMPT_SUCCESS, false).apply(); e.printStackTrace(); updateErrorNotification(e); - return Result.failure(); + return Result.retry(); } } @@ -156,7 +161,7 @@ public class SyncService extends Worker { public static void sync(Context context) { OneTimeWorkRequest workRequest = getWorkRequest().build(); WorkManager.getInstance().enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest); - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_started)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_started)); } public static void fullSync(Context context) { @@ -169,9 +174,10 @@ public class SyncService extends Worker { } OneTimeWorkRequest workRequest = getWorkRequest() .setInitialDelay(0L, TimeUnit.SECONDS) + .setBackoffCriteria(BackoffPolicy.EXPONENTIAL, 1, TimeUnit.MINUTES) .build(); WorkManager.getInstance().enqueueUniqueWork(WORK_ID_SYNC, ExistingWorkPolicy.REPLACE, workRequest); - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_started)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_started)); } private static OneTimeWorkRequest.Builder getWorkRequest() { @@ -307,7 +313,7 @@ public class SyncService extends Worker { // upload local actions List queuedEpisodeActions = getQueuedEpisodeActions(); if (lastSync == 0) { - EventBus.getDefault().post(new SyncServiceEvent(R.string.sync_status_upload_played)); + EventBus.getDefault().postSticky(new SyncServiceEvent(R.string.sync_status_upload_played)); List readItems = DBReader.getPlayedItems(); Log.d(TAG, "First sync. Upload state for all " + readItems.size() + " played episodes"); for (FeedItem item : readItems) { -- cgit v1.2.3