|
1 | 1 | package com.simplecity.amp_library.utils;
|
2 | 2 |
|
| 3 | +import android.annotation.SuppressLint; |
| 4 | +import android.database.ContentObserver; |
| 5 | +import android.net.Uri; |
| 6 | +import android.os.Handler; |
| 7 | +import android.os.Looper; |
| 8 | +import android.provider.MediaStore; |
3 | 9 | import com.annimon.stream.Optional;
|
4 | 10 | import com.annimon.stream.Stream;
|
5 | 11 | import com.annimon.stream.function.Predicate;
|
|
17 | 23 | import com.squareup.sqlbrite2.SqlBrite;
|
18 | 24 | import io.reactivex.Observable;
|
19 | 25 | import io.reactivex.ObservableTransformer;
|
| 26 | +import io.reactivex.android.schedulers.AndroidSchedulers; |
| 27 | +import io.reactivex.annotations.Nullable; |
20 | 28 | import io.reactivex.disposables.Disposable;
|
21 | 29 | import io.reactivex.schedulers.Schedulers;
|
22 | 30 | import java.util.ArrayList;
|
@@ -67,6 +75,26 @@ public static DataManager getInstance() {
|
67 | 75 |
|
68 | 76 | private DataManager() {
|
69 | 77 |
|
| 78 | + ShuttleApplication.getInstance() |
| 79 | + .getContentResolver() |
| 80 | + .registerContentObserver(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, true, new ContentObserver(new Handler(Looper.getMainLooper())) { |
| 81 | + @Override |
| 82 | + public void onChange(boolean selfChange) { |
| 83 | + onChange(selfChange, null); |
| 84 | + } |
| 85 | + |
| 86 | + @SuppressLint("CheckResult") |
| 87 | + @Override |
| 88 | + public void onChange(boolean selfChange, @Nullable Uri uri) { |
| 89 | + SqlBriteUtils.createObservableList(ShuttleApplication.getInstance(), Playlist::new, Playlist.getQuery()) |
| 90 | + .first(Collections.emptyList()) |
| 91 | + .subscribeOn(AndroidSchedulers.mainThread()) |
| 92 | + .subscribe( |
| 93 | + playlists -> playlistsRelay.accept(playlists), |
| 94 | + throwable -> LogUtils.logException(TAG, "Failed to update playlist relay", throwable) |
| 95 | + ); |
| 96 | + } |
| 97 | + }); |
70 | 98 | }
|
71 | 99 |
|
72 | 100 | public Observable<List<Song>> getAllSongsRelay() {
|
|
0 commit comments