diff options
-rw-r--r-- | build.gradle | 1 | ||||
-rw-r--r-- | core/build.gradle | 1 | ||||
-rw-r--r-- | core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java | 20 |
3 files changed, 17 insertions, 5 deletions
diff --git a/build.gradle b/build.gradle index 373f47faf..5089286c9 100644 --- a/build.gradle +++ b/build.gradle @@ -43,6 +43,7 @@ project.ext { targetSdkVersion = 26 supportVersion = "26.1.0" + awaitilityVersion = "3.1.2" commonsioVersion = "2.5" commonslangVersion = "3.6" commonstextVersion = "1.3" diff --git a/core/build.gradle b/core/build.gradle index 4998b3853..0a6d4c36b 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -66,6 +66,7 @@ dependencies { implementation "com.squareup.okio:okio:$okioVersion" implementation "de.greenrobot:eventbus:$eventbusVersion" implementation "io.reactivex:rxandroid:$rxAndroidVersion" + implementation "org.awaitility:awaitility:$awaitilityVersion" implementation "com.google.android.exoplayer:exoplayer:$exoPlayerVersion" implementation "com.github.AntennaPod:AntennaPod-AudioPlayer:$audioPlayerVersion" diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java index 24e0da9ed..afaf13390 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java +++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedUpdateUtils.java @@ -2,20 +2,30 @@ package de.danoeh.antennapod.core.util; import android.content.Context; import android.util.Log; + +import org.awaitility.core.ConditionTimeoutException; + +import java.util.concurrent.TimeUnit; + import de.danoeh.antennapod.core.storage.DBTasks; +import static org.awaitility.Awaitility.with; + public class FeedUpdateUtils { private static final String TAG = "FeedUpdateUtils"; - private FeedUpdateUtils() { - - } + private FeedUpdateUtils() {} public static void startAutoUpdate(Context context, Runnable callback) { - if (NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()) { + try { + with().pollInterval(1, TimeUnit.SECONDS) + .await() + .atMost(10, TimeUnit.SECONDS) + .until(() -> NetworkUtils.networkAvailable() && NetworkUtils.isDownloadAllowed()); DBTasks.refreshAllFeeds(context, null, callback); - } else { + } catch (ConditionTimeoutException ignore) { Log.d(TAG, "Blocking automatic update: no wifi available / no mobile updates allowed"); } } + } |