diff --git a/app/src/main/java/com/simplecity/amp_library/utils/DataManager.java b/app/src/main/java/com/simplecity/amp_library/utils/DataManager.java index c1ac89e20..bdc814280 100644 --- a/app/src/main/java/com/simplecity/amp_library/utils/DataManager.java +++ b/app/src/main/java/com/simplecity/amp_library/utils/DataManager.java @@ -283,7 +283,9 @@ public Observable> getPlaylistsRelay() { playlistsSubscription = SqlBriteUtils.createObservableList(ShuttleApplication.getInstance(), Playlist::new, Playlist.getQuery()) .subscribe(playlistsRelay, error -> LogUtils.logException(TAG, "getPlaylistRelay threw error", error)); } - return playlistsRelay.subscribeOn(Schedulers.io()).map(ArrayList::new); + return playlistsRelay + .distinctUntilChanged() + .subscribeOn(Schedulers.io()).map(ArrayList::new); } public Observable> getFavoriteSongsRelay() { diff --git a/app/src/main/java/com/simplecity/amp_library/utils/PlaylistUtils.java b/app/src/main/java/com/simplecity/amp_library/utils/PlaylistUtils.java index e15b3a287..883ba09e6 100644 --- a/app/src/main/java/com/simplecity/amp_library/utils/PlaylistUtils.java +++ b/app/src/main/java/com/simplecity/amp_library/utils/PlaylistUtils.java @@ -236,6 +236,7 @@ private static Completable createPlaylistMenu(SubMenu subMenu, boolean autoUpdat return DataManager.getInstance() .getPlaylistsRelay() .take(autoUpdate ? Long.MAX_VALUE : 1) + .observeOn(AndroidSchedulers.mainThread()) .doOnNext(playlists -> { if (subMenu != null) { subMenu.clear(); @@ -249,8 +250,7 @@ private static Completable createPlaylistMenu(SubMenu subMenu, boolean autoUpdat }) .ignoreElements() .doOnError(throwable -> LogUtils.logException(TAG, "createUpdatingPlaylistMenu failed", throwable)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()); + .subscribeOn(Schedulers.io()); } /** @@ -402,10 +402,14 @@ private static void insertPlaylistItems(@NonNull Context context, Uri uri = MediaStore.Audio.Playlists.Members.getContentUri("external", playlist.id); if (uri != null) { - ShuttleApplication.getInstance().getContentResolver().bulkInsert(uri, contentValues); - PlaylistUtils.showPlaylistToast(context, songs.size()); - if (insertCallback != null) { - insertCallback.run(); + try { + ShuttleApplication.getInstance().getContentResolver().bulkInsert(uri, contentValues); + PlaylistUtils.showPlaylistToast(context, songs.size()); + if (insertCallback != null) { + insertCallback.run(); + } + } catch (SecurityException e) { + LogUtils.logException(TAG, "Failed to insert playlist items", e); } } }