diff --git a/.circleci/config.yml b/.circleci/config.yml
index 910f476b8..1a97e73c5 100644
--- a/.circleci/config.yml
+++ b/.circleci/config.yml
@@ -90,7 +90,14 @@ workflows:
- run:
name: Lint app
command: ./gradlew app:lintPlayRelease
+ - run:
+ name: Lint core
+ command: ./gradlew core:lintPlayRelease
- store_artifacts:
- name: Uploading lint reports
+ name: Uploading app lint reports
path: app/build/reports/lint-results-playRelease.html
- destination: lint-results.html
+ destination: lint-results-app.html
+ - store_artifacts:
+ name: Uploading core lint reports
+ path: core/build/reports/lint-results-playRelease.html
+ destination: lint-results-core.html
diff --git a/core/build.gradle b/core/build.gradle
index bfaffd14f..b3c614059 100644
--- a/core/build.gradle
+++ b/core/build.gradle
@@ -52,6 +52,16 @@ android {
dimension "market"
}
}
+
+ lintOptions {
+ disable "InvalidPeriodicWorkRequestInterval", "ObsoleteLintCustomCheck", "DefaultLocale", "UnusedAttribute",
+ "GradleDependency", "ParcelClassLoader", "Typos", "ExtraTranslation", "ImpliedQuantity",
+ "PluralsCandidate", "UnusedQuantity", "StringFormatCount", "TrustAllX509TrustManager",
+ "StaticFieldLeak", "TypographyEllipsis", "IconDensities", "IconDuplicates", "CheckResult"
+
+ warningsAsErrors true
+ abortOnError true
+ }
}
dependencies {
diff --git a/core/src/main/AndroidManifest.xml b/core/src/main/AndroidManifest.xml
index 1f6c36c40..ae5e56e55 100644
--- a/core/src/main/AndroidManifest.xml
+++ b/core/src/main/AndroidManifest.xml
@@ -1,5 +1,5 @@
+ xmlns:tools="http://schemas.android.com/tools" package="de.danoeh.antennapod.core">
@@ -12,15 +12,19 @@
+ android:icon="@mipmap/ic_launcher"
+ android:supportsRtl="true">
+
+ android:exported="true"
+ tools:ignore="ExportedService">
+
@@ -39,8 +43,8 @@
-
+ android:exported="true"
+ tools:ignore="ExportedReceiver" />
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index bcbc041a6..5700bb9a0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -249,7 +249,7 @@ public class UserPreferences {
public static void setFeedOrder(String selected) {
prefs.edit()
.putString(PREF_DRAWER_FEED_ORDER, selected)
- .commit();
+ .apply();
}
public static int getFeedCounterSetting() {
@@ -1054,7 +1054,7 @@ public class UserPreferences {
public static void setFeedFilter(String value) {
prefs.edit()
.putString(PREF_FILTER_FEED, value)
- .commit();
+ .apply();
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
index 883ba6023..9ef34cdac 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
@@ -8,6 +8,7 @@ import androidx.annotation.NonNull;
import android.util.Log;
import de.danoeh.antennapod.core.preferences.SleepTimerPreferences;
+import io.reactivex.disposables.Disposable;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
@@ -57,7 +58,7 @@ public class PlaybackServiceTaskManager {
private ScheduledFuture> widgetUpdaterFuture;
private ScheduledFuture> sleepTimerFuture;
private volatile Future> queueFuture;
- private volatile Future> chapterLoaderFuture;
+ private volatile Disposable chapterLoaderFuture;
private SleepTimer sleepTimer;
@@ -102,7 +103,7 @@ public class PlaybackServiceTaskManager {
private synchronized void loadQueue() {
if (!isQueueLoaderActive()) {
- queueFuture = schedExecutor.submit(DBReader::getQueue);
+ queueFuture = schedExecutor.submit(() -> DBReader.getQueue());
}
}
@@ -289,28 +290,19 @@ public class PlaybackServiceTaskManager {
}
}
- private synchronized void cancelChapterLoader() {
- if (isChapterLoaderActive()) {
- chapterLoaderFuture.cancel(true);
- }
- }
-
- private synchronized boolean isChapterLoaderActive() {
- return chapterLoaderFuture != null && !chapterLoaderFuture.isDone();
- }
-
/**
* Starts a new thread that loads the chapter marks from a playable object. If another chapter loader is already active,
* it will be cancelled first.
* On completion, the callback's onChapterLoaded method will be called.
*/
public synchronized void startChapterLoader(@NonNull final Playable media) {
- if (isChapterLoaderActive()) {
- cancelChapterLoader();
+ if (chapterLoaderFuture != null) {
+ chapterLoaderFuture.dispose();
+ chapterLoaderFuture = null;
}
if (media.getChapters() == null) {
- Completable.create(emitter -> {
+ chapterLoaderFuture = Completable.create(emitter -> {
media.loadChapterMarks();
emitter.onComplete();
})
@@ -330,7 +322,11 @@ public class PlaybackServiceTaskManager {
cancelWidgetUpdater();
disableSleepTimer();
cancelQueueLoader();
- cancelChapterLoader();
+
+ if (chapterLoaderFuture != null) {
+ chapterLoaderFuture.dispose();
+ chapterLoaderFuture = null;
+ }
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index 16e2825b4..4f2417b7d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -257,7 +257,6 @@ public final class DBTasks {
EventBus.getDefault().post(new MessageEvent(context.getString(R.string.error_file_not_found)));
}
- @VisibleForTesting(otherwise = VisibleForTesting.PACKAGE_PRIVATE)
public static List extends FeedItem> enqueueFeedItemsToDownload(final Context context,
List extends FeedItem> items) throws InterruptedException, ExecutionException {
List itemsToEnqueue = new ArrayList<>();
diff --git a/core/src/main/res/layout/player_widget.xml b/core/src/main/res/layout/player_widget.xml
index 6e463e9cd..8e38d7f6e 100644
--- a/core/src/main/res/layout/player_widget.xml
+++ b/core/src/main/res/layout/player_widget.xml
@@ -1,5 +1,6 @@
@@ -8,8 +9,8 @@
android:id="@+id/widgetLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:background="#262C31" >
-
+ android:background="#262C31"
+ tools:ignore="UselessParent">