mirror of
https://github.com/TeamNewPipe/NewPipe
synced 2024-12-23 00:20:32 +00:00
Made some small code improvements
This commit is contained in:
parent
5d3955854e
commit
68ea99d6e6
@ -206,19 +206,15 @@ public final class Migrations {
|
|||||||
+ "INTEGER NOT NULL DEFAULT -1");
|
+ "INTEGER NOT NULL DEFAULT -1");
|
||||||
|
|
||||||
// Migrate the thumbnail_url to the thumbnail_stream_id
|
// Migrate the thumbnail_url to the thumbnail_stream_id
|
||||||
database.execSQL("CREATE TEMPORARY TABLE temporary_table AS"
|
database.execSQL("UPDATE playlists SET thumbnail_stream_id = ("
|
||||||
|
+ " SELECT CASE WHEN COUNT(*) != 0 then stream_uid ELSE -1 END"
|
||||||
|
+ " FROM ("
|
||||||
+ " SELECT p.uid AS playlist_uid, s.uid AS stream_uid"
|
+ " SELECT p.uid AS playlist_uid, s.uid AS stream_uid"
|
||||||
+ " FROM playlists p"
|
+ " FROM playlists p"
|
||||||
+ " LEFT JOIN playlist_stream_join ps ON p.uid = ps.playlist_id"
|
+ " LEFT JOIN playlist_stream_join ps ON p.uid = ps.playlist_id"
|
||||||
+ " LEFT JOIN streams s ON s.uid = ps.stream_id"
|
+ " LEFT JOIN streams s ON s.uid = ps.stream_id"
|
||||||
+ " WHERE s.thumbnail_url = p.thumbnail_url");
|
+ " WHERE s.thumbnail_url = p.thumbnail_url) AS temporary_table"
|
||||||
|
+ " WHERE playlist_uid = playlists.uid)");
|
||||||
database.execSQL("UPDATE playlists SET thumbnail_stream_id = ("
|
|
||||||
+ "SELECT CASE WHEN COUNT(*) != 0 then stream_uid ELSE -1 END "
|
|
||||||
+ "FROM temporary_table "
|
|
||||||
+ "WHERE playlist_uid = playlists.uid)");
|
|
||||||
|
|
||||||
database.execSQL("DROP TABLE temporary_table");
|
|
||||||
|
|
||||||
// Remove the thumbnail_url field in the playlist table
|
// Remove the thumbnail_url field in the playlist table
|
||||||
database.execSQL("CREATE TABLE IF NOT EXISTS `playlists_new`"
|
database.execSQL("CREATE TABLE IF NOT EXISTS `playlists_new`"
|
||||||
|
@ -9,6 +9,7 @@ import org.schabi.newpipe.database.BasicDAO;
|
|||||||
import org.schabi.newpipe.database.playlist.PlaylistDuplicatesEntry;
|
import org.schabi.newpipe.database.playlist.PlaylistDuplicatesEntry;
|
||||||
import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
|
import org.schabi.newpipe.database.playlist.PlaylistMetadataEntry;
|
||||||
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
|
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
|
||||||
|
import org.schabi.newpipe.database.playlist.model.PlaylistEntity;
|
||||||
import org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity;
|
import org.schabi.newpipe.database.playlist.model.PlaylistStreamEntity;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -59,14 +60,15 @@ public interface PlaylistStreamDAO extends BasicDAO<PlaylistStreamEntity> {
|
|||||||
+ " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId")
|
+ " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId")
|
||||||
Flowable<Integer> getMaximumIndexOf(long playlistId);
|
Flowable<Integer> getMaximumIndexOf(long playlistId);
|
||||||
|
|
||||||
@Query("SELECT CASE WHEN COUNT(*) != 0 then " + STREAM_ID + " ELSE -1 END"
|
@Query("SELECT CASE WHEN COUNT(*) != 0 then " + STREAM_ID
|
||||||
|
+ " ELSE " + PlaylistEntity.DEFAULT_THUMBNAIL_ID + " END"
|
||||||
+ " FROM " + STREAM_TABLE
|
+ " FROM " + STREAM_TABLE
|
||||||
+ " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE
|
+ " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE
|
||||||
+ " ON " + STREAM_ID + " = " + JOIN_STREAM_ID
|
+ " ON " + STREAM_ID + " = " + JOIN_STREAM_ID
|
||||||
+ " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId "
|
+ " WHERE " + JOIN_PLAYLIST_ID + " = :playlistId "
|
||||||
+ " LIMIT 1"
|
+ " LIMIT 1"
|
||||||
)
|
)
|
||||||
Flowable<Long> getAutomaticThumbnailUrl(long playlistId);
|
Flowable<Long> getAutomaticThumbnailStreamId(long playlistId);
|
||||||
|
|
||||||
@RewriteQueriesToDropUnusedColumns
|
@RewriteQueriesToDropUnusedColumns
|
||||||
@Transaction
|
@Transaction
|
||||||
@ -91,14 +93,13 @@ public interface PlaylistStreamDAO extends BasicDAO<PlaylistStreamEntity> {
|
|||||||
@Transaction
|
@Transaction
|
||||||
@Query("SELECT " + PLAYLIST_ID + ", " + PLAYLIST_NAME + ","
|
@Query("SELECT " + PLAYLIST_ID + ", " + PLAYLIST_NAME + ","
|
||||||
|
|
||||||
+ " CASE WHEN " + PLAYLIST_THUMBNAIL_STREAM_ID + " = -1"
|
+ " CASE WHEN " + PLAYLIST_THUMBNAIL_STREAM_ID + " = "
|
||||||
+ " THEN " + "'" + DEFAULT_THUMBNAIL + "'"
|
+ PlaylistEntity.DEFAULT_THUMBNAIL_ID + " THEN " + "'" + DEFAULT_THUMBNAIL + "'"
|
||||||
+ " ELSE (SELECT " + STREAM_THUMBNAIL_URL
|
+ " ELSE (SELECT " + STREAM_THUMBNAIL_URL
|
||||||
+ " FROM " + STREAM_TABLE
|
+ " FROM " + STREAM_TABLE
|
||||||
+ " WHERE " + STREAM_TABLE + "." + STREAM_ID + " = " + PLAYLIST_THUMBNAIL_STREAM_ID
|
+ " WHERE " + STREAM_TABLE + "." + STREAM_ID + " = " + PLAYLIST_THUMBNAIL_STREAM_ID
|
||||||
+ " ) END AS " + PLAYLIST_THUMBNAIL_URL + ", "
|
+ " ) END AS " + PLAYLIST_THUMBNAIL_URL + ", "
|
||||||
|
|
||||||
+ PLAYLIST_NAME + ", "
|
|
||||||
+ "COALESCE(COUNT(" + JOIN_PLAYLIST_ID + "), 0) AS " + PLAYLIST_STREAM_COUNT
|
+ "COALESCE(COUNT(" + JOIN_PLAYLIST_ID + "), 0) AS " + PLAYLIST_STREAM_COUNT
|
||||||
+ " FROM " + PLAYLIST_TABLE
|
+ " FROM " + PLAYLIST_TABLE
|
||||||
+ " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE
|
+ " LEFT JOIN " + PLAYLIST_STREAM_JOIN_TABLE
|
||||||
@ -111,14 +112,14 @@ public interface PlaylistStreamDAO extends BasicDAO<PlaylistStreamEntity> {
|
|||||||
@Query("SELECT " + PLAYLIST_TABLE + "." + PLAYLIST_ID + ", "
|
@Query("SELECT " + PLAYLIST_TABLE + "." + PLAYLIST_ID + ", "
|
||||||
+ PLAYLIST_NAME + ", "
|
+ PLAYLIST_NAME + ", "
|
||||||
|
|
||||||
+ " CASE WHEN " + PLAYLIST_THUMBNAIL_STREAM_ID + " = -1"
|
+ " CASE WHEN " + PLAYLIST_THUMBNAIL_STREAM_ID + " = "
|
||||||
+ " THEN " + "'" + DEFAULT_THUMBNAIL + "'"
|
+ PlaylistEntity.DEFAULT_THUMBNAIL_ID + " THEN " + "'" + DEFAULT_THUMBNAIL + "'"
|
||||||
+ " ELSE (SELECT " + STREAM_THUMBNAIL_URL
|
+ " ELSE (SELECT " + STREAM_THUMBNAIL_URL
|
||||||
+ " FROM " + STREAM_TABLE
|
+ " FROM " + STREAM_TABLE
|
||||||
+ " WHERE " + STREAM_TABLE + "." + STREAM_ID + " = " + PLAYLIST_THUMBNAIL_STREAM_ID
|
+ " WHERE " + STREAM_TABLE + "." + STREAM_ID + " = " + PLAYLIST_THUMBNAIL_STREAM_ID
|
||||||
+ " ) END AS " + PLAYLIST_THUMBNAIL_URL
|
+ " ) END AS " + PLAYLIST_THUMBNAIL_URL + ", "
|
||||||
|
|
||||||
+ ", COALESCE(COUNT(" + JOIN_PLAYLIST_ID + "), 0) AS " + PLAYLIST_STREAM_COUNT + ", "
|
+ "COALESCE(COUNT(" + JOIN_PLAYLIST_ID + "), 0) AS " + PLAYLIST_STREAM_COUNT + ", "
|
||||||
+ "COALESCE(SUM(" + STREAM_URL + " = :streamUrl), 0) AS "
|
+ "COALESCE(SUM(" + STREAM_URL + " = :streamUrl), 0) AS "
|
||||||
+ PLAYLIST_TIMES_STREAM_IS_CONTAINED
|
+ PLAYLIST_TIMES_STREAM_IS_CONTAINED
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@ public class PlaylistEntity {
|
|||||||
|
|
||||||
public static final String DEFAULT_THUMBNAIL = "drawable://"
|
public static final String DEFAULT_THUMBNAIL = "drawable://"
|
||||||
+ R.drawable.placeholder_thumbnail_playlist;
|
+ R.drawable.placeholder_thumbnail_playlist;
|
||||||
|
public static final long DEFAULT_THUMBNAIL_ID = -1;
|
||||||
|
|
||||||
public static final String PLAYLIST_TABLE = "playlists";
|
public static final String PLAYLIST_TABLE = "playlists";
|
||||||
public static final String PLAYLIST_ID = "uid";
|
public static final String PLAYLIST_ID = "uid";
|
||||||
public static final String PLAYLIST_NAME = "name";
|
public static final String PLAYLIST_NAME = "name";
|
||||||
|
@ -35,6 +35,7 @@ import org.schabi.newpipe.R;
|
|||||||
import org.schabi.newpipe.database.LocalItem;
|
import org.schabi.newpipe.database.LocalItem;
|
||||||
import org.schabi.newpipe.database.history.model.StreamHistoryEntry;
|
import org.schabi.newpipe.database.history.model.StreamHistoryEntry;
|
||||||
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
|
import org.schabi.newpipe.database.playlist.PlaylistStreamEntry;
|
||||||
|
import org.schabi.newpipe.database.playlist.model.PlaylistEntity;
|
||||||
import org.schabi.newpipe.database.stream.model.StreamEntity;
|
import org.schabi.newpipe.database.stream.model.StreamEntity;
|
||||||
import org.schabi.newpipe.databinding.DialogEditTextBinding;
|
import org.schabi.newpipe.databinding.DialogEditTextBinding;
|
||||||
import org.schabi.newpipe.databinding.LocalPlaylistHeaderBinding;
|
import org.schabi.newpipe.databinding.LocalPlaylistHeaderBinding;
|
||||||
@ -70,8 +71,6 @@ import io.reactivex.rxjava3.schedulers.Schedulers;
|
|||||||
import io.reactivex.rxjava3.subjects.PublishSubject;
|
import io.reactivex.rxjava3.subjects.PublishSubject;
|
||||||
|
|
||||||
public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistStreamEntry>, Void> {
|
public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistStreamEntry>, Void> {
|
||||||
public static final long DEFAULT_THUMBNAIL_ID = -1;
|
|
||||||
public static final long NO_THUMBNAIL_ID = -2;
|
|
||||||
// Save the list 10 seconds after the last change occurred
|
// Save the list 10 seconds after the last change occurred
|
||||||
private static final long SAVE_DEBOUNCE_MILLIS = 10000;
|
private static final long SAVE_DEBOUNCE_MILLIS = 10000;
|
||||||
private static final int MINIMUM_INITIAL_DRAG_VELOCITY = 12;
|
private static final int MINIMUM_INITIAL_DRAG_VELOCITY = 12;
|
||||||
@ -624,7 +623,7 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt
|
|||||||
thumbnailStreamId = ((PlaylistStreamEntry) itemListAdapter.getItemsList().get(0))
|
thumbnailStreamId = ((PlaylistStreamEntry) itemListAdapter.getItemsList().get(0))
|
||||||
.getStreamEntity().getUid();
|
.getStreamEntity().getUid();
|
||||||
} else {
|
} else {
|
||||||
thumbnailStreamId = DEFAULT_THUMBNAIL_ID;
|
thumbnailStreamId = PlaylistEntity.DEFAULT_THUMBNAIL_ID;
|
||||||
}
|
}
|
||||||
|
|
||||||
changeThumbnailStreamId(thumbnailStreamId, false);
|
changeThumbnailStreamId(thumbnailStreamId, false);
|
||||||
|
@ -23,6 +23,8 @@ import io.reactivex.rxjava3.core.Single;
|
|||||||
import io.reactivex.rxjava3.schedulers.Schedulers;
|
import io.reactivex.rxjava3.schedulers.Schedulers;
|
||||||
|
|
||||||
public class LocalPlaylistManager {
|
public class LocalPlaylistManager {
|
||||||
|
private static final long THUMBNAIL_ID_LEAVE_UNCHANGED = -2;
|
||||||
|
|
||||||
private final AppDatabase database;
|
private final AppDatabase database;
|
||||||
private final StreamDAO streamTable;
|
private final StreamDAO streamTable;
|
||||||
private final PlaylistDAO playlistTable;
|
private final PlaylistDAO playlistTable;
|
||||||
@ -115,7 +117,7 @@ public class LocalPlaylistManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Maybe<Integer> renamePlaylist(final long playlistId, final String name) {
|
public Maybe<Integer> renamePlaylist(final long playlistId, final String name) {
|
||||||
return modifyPlaylist(playlistId, name, LocalPlaylistFragment.NO_THUMBNAIL_ID, false);
|
return modifyPlaylist(playlistId, name, THUMBNAIL_ID_LEAVE_UNCHANGED, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public Maybe<Integer> changePlaylistThumbnail(final long playlistId,
|
public Maybe<Integer> changePlaylistThumbnail(final long playlistId,
|
||||||
@ -134,10 +136,10 @@ public class LocalPlaylistManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public long getAutomaticPlaylistThumbnailStreamId(final long playlistId) {
|
public long getAutomaticPlaylistThumbnailStreamId(final long playlistId) {
|
||||||
final long streamId = playlistStreamTable.getAutomaticThumbnailUrl(playlistId)
|
final long streamId = playlistStreamTable.getAutomaticThumbnailStreamId(playlistId)
|
||||||
.blockingFirst();
|
.blockingFirst();
|
||||||
if (streamId < 0) {
|
if (streamId < 0) {
|
||||||
return LocalPlaylistFragment.DEFAULT_THUMBNAIL_ID;
|
return PlaylistEntity.DEFAULT_THUMBNAIL_ID;
|
||||||
}
|
}
|
||||||
return streamId;
|
return streamId;
|
||||||
}
|
}
|
||||||
@ -154,7 +156,7 @@ public class LocalPlaylistManager {
|
|||||||
if (name != null) {
|
if (name != null) {
|
||||||
playlist.setName(name);
|
playlist.setName(name);
|
||||||
}
|
}
|
||||||
if (thumbnailStreamId != LocalPlaylistFragment.NO_THUMBNAIL_ID) {
|
if (thumbnailStreamId != THUMBNAIL_ID_LEAVE_UNCHANGED) {
|
||||||
playlist.setThumbnailStreamId(thumbnailStreamId);
|
playlist.setThumbnailStreamId(thumbnailStreamId);
|
||||||
playlist.setIsThumbnailPermanent(isPermanent);
|
playlist.setIsThumbnailPermanent(isPermanent);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user