package org.schabi.newpipe.local.playlist; import io.reactivex.rxjava3.core.Flowable; import io.reactivex.rxjava3.core.Single; import io.reactivex.rxjava3.schedulers.Schedulers; import org.schabi.newpipe.database.AppDatabase; import org.schabi.newpipe.database.playlist.dao.PlaylistRemoteDAO; import org.schabi.newpipe.database.playlist.model.PlaylistRemoteEntity; import org.schabi.newpipe.extractor.playlist.PlaylistInfo; import java.util.List; public class RemotePlaylistManager { private final PlaylistRemoteDAO playlistRemoteTable; public RemotePlaylistManager(final AppDatabase db) { playlistRemoteTable = db.playlistRemoteDAO(); } public Flowable> getPlaylists() { return playlistRemoteTable.getAll().subscribeOn(Schedulers.io()); } public Flowable> getPlaylist(final PlaylistInfo info) { return playlistRemoteTable.getPlaylist(info.getServiceId(), info.getUrl()) .subscribeOn(Schedulers.io()); } public Single deletePlaylist(final long playlistId) { return Single.fromCallable(() -> playlistRemoteTable.deletePlaylist(playlistId)) .subscribeOn(Schedulers.io()); } public Single onBookmark(final PlaylistInfo playlistInfo) { return Single.fromCallable(() -> { final PlaylistRemoteEntity playlist = new PlaylistRemoteEntity(playlistInfo); return playlistRemoteTable.upsert(playlist); }).subscribeOn(Schedulers.io()); } public Single onUpdate(final long playlistId, final PlaylistInfo playlistInfo) { return Single.fromCallable(() -> { final PlaylistRemoteEntity playlist = new PlaylistRemoteEntity(playlistInfo); playlist.setUid(playlistId); return playlistRemoteTable.update(playlist); }).subscribeOn(Schedulers.io()); } }