commit
3a888a2d3b
|
@ -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
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="de.danoeh.antennapod.core">
|
||||
xmlns:tools="http://schemas.android.com/tools" package="de.danoeh.antennapod.core">
|
||||
|
||||
<uses-permission android:name="android.permission.INTERNET" />
|
||||
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
|
||||
|
@ -12,15 +12,19 @@
|
|||
|
||||
<application
|
||||
android:allowBackup="true"
|
||||
android:icon="@mipmap/ic_launcher">
|
||||
android:icon="@mipmap/ic_launcher"
|
||||
android:supportsRtl="true">
|
||||
|
||||
<service
|
||||
android:name=".service.download.DownloadService"
|
||||
android:enabled="true" />
|
||||
|
||||
<service android:name=".service.playback.PlaybackService"
|
||||
android:label="@string/app_name"
|
||||
android:enabled="true"
|
||||
android:exported="true">
|
||||
android:exported="true"
|
||||
tools:ignore="ExportedService">
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.media.browse.MediaBrowserService"/>
|
||||
</intent-filter>
|
||||
|
@ -39,8 +43,8 @@
|
|||
|
||||
<receiver android:name=".receiver.FeedUpdateReceiver"
|
||||
android:label="@string/feed_update_receiver_name"
|
||||
android:exported="true"> <!-- allow feeds update to be triggered by external apps -->
|
||||
</receiver>
|
||||
android:exported="true"
|
||||
tools:ignore="ExportedReceiver" /> <!-- allow feeds update to be triggered by external apps -->
|
||||
</application>
|
||||
|
||||
</manifest>
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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<List<FeedItem>> 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;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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<FeedItem> itemsToEnqueue = new ArrayList<>();
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="@dimen/widget_margin" >
|
||||
|
@ -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">
|
||||
|
||||
<ImageButton
|
||||
android:id="@+id/butPlay"
|
||||
|
@ -41,6 +42,7 @@
|
|||
android:layout_width="@android:dimen/app_icon_size"
|
||||
android:layout_height="match_parent"
|
||||
android:src="@mipmap/ic_launcher_round"
|
||||
android:importantForAccessibility="no"
|
||||
android:layout_margin="12dp" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
Loading…
Reference in New Issue