Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
# Conflicts:
#	composeApp/src/androidMain/kotlin/it/fast4x/rimusic/ui/screens/localplaylist/LocalPlaylistSongs.kt
#	composeApp/src/androidMain/kotlin/it/fast4x/rimusic/utils/SyncYTMusicUtils.kt
  • Loading branch information
fast4x committed Feb 5, 2025
2 parents 1b6ba97 + 8257a33 commit 819b9c5
Show file tree
Hide file tree
Showing 31 changed files with 124 additions and 147 deletions.
14 changes: 13 additions & 1 deletion composeApp/src/androidMain/kotlin/it/fast4x/rimusic/Database.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2055,6 +2055,18 @@ interface Database {
""")
fun sortSongsFromPlaylistByRowId( id: Long ): Flow<List<SongEntity>>

@Query("""
SELECT DISTINCT S.*, Album.title as albumTitle, Format.contentLength as contentLength
FROM Song S
INNER JOIN SongPlaylistMap SP ON S.id = SP.songId
LEFT JOIN SongAlbumMap ON SongAlbumMap.songId = S.id
LEFT JOIN Album ON Album.id = SongAlbumMap.albumId
LEFT JOIN Format ON Format.songId = S.id
WHERE SP.playlistId = :id
ORDER BY SP.dateAdded
""")
fun sortSongsFromPlaylistByDateAdded( id: Long ): Flow<List<SongEntity>>

@Query("""
SELECT DISTINCT S.*, Album.title as albumTitle, Format.contentLength as contentLength
FROM Song S
Expand All @@ -2080,7 +2092,7 @@ interface Database {
PlaylistSongSortBy.Title -> sortSongsFromPlaylistByTitle( id )
PlaylistSongSortBy.Duration -> sortSongsFromPlaylistByDuration( id )
PlaylistSongSortBy.DateLiked -> sortSongsFromPlaylistByLikedAt( id )
PlaylistSongSortBy.DateAdded -> sortSongsFromPlaylistByRowId( id )
PlaylistSongSortBy.DateAdded -> sortSongsFromPlaylistByDateAdded( id )
}.map {
it.run {
if( sortOrder == SortOrder.Descending )
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,4 +29,10 @@ data class SongPlaylistMap(
val position: Int,
val setVideoId: String? = null,
val dateAdded: Long? = null
)
){
fun default(): SongPlaylistMap {
return copy(
dateAdded = System.currentTimeMillis()
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2031,7 +2031,7 @@ fun SongMatchingDialog(
songId = song.asMediaItem.mediaId,
playlistId = playlistId,
position = position
)
).default()
)
insert(
Album(id = song.album?.endpoint?.browseId ?: "", title = song.asMediaItem.mediaMetadata.albumTitle?.toString()),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ fun BaseMediaItemGridMenu(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
).default()
)
}
if(isYouTubeSyncEnabled())
Expand Down Expand Up @@ -252,7 +252,7 @@ fun MiniMediaItemGridMenu(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
).default()
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -72,8 +72,6 @@ import it.fast4x.rimusic.MONTHLY_PREFIX
import it.fast4x.rimusic.PINNED_PREFIX
import it.fast4x.rimusic.PIPED_PREFIX
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTEDITABLEPLAYLIST_PREFIX
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.enums.MenuStyle
import it.fast4x.rimusic.enums.NavRoutes
Expand Down Expand Up @@ -599,7 +597,7 @@ fun BaseMediaItemMenu(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
).default()
)
}

Expand Down Expand Up @@ -686,7 +684,7 @@ fun MiniMediaItemMenu(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
).default()
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -239,7 +239,7 @@ fun AddToPlaylistPlayerMenu(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
)
).default()
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,6 @@ import it.fast4x.compose.persist.persistList
import it.fast4x.rimusic.Database
import it.fast4x.rimusic.PIPED_PREFIX
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTEDITABLEPLAYLIST_PREFIX
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.colorPalette
import it.fast4x.rimusic.models.PlaylistPreview
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,6 @@ import it.fast4x.rimusic.MONTHLY_PREFIX
import it.fast4x.rimusic.PINNED_PREFIX
import it.fast4x.rimusic.PIPED_PREFIX
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.enums.MenuStyle
import it.fast4x.rimusic.enums.NavRoutes
import it.fast4x.rimusic.enums.PlaylistSortBy
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -45,8 +45,6 @@ import it.fast4x.rimusic.MONTHLY_PREFIX
import it.fast4x.rimusic.PINNED_PREFIX
import it.fast4x.rimusic.PIPED_PREFIX
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTEDITABLEPLAYLIST_PREFIX
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.enums.MenuStyle
import it.fast4x.rimusic.enums.NavRoutes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class PlaylistsMenu private constructor(
songId = mediaItem.mediaId,
playlistId = preview.playlist.id,
position = startPos + index
)
).default()
)
}
} catch ( e: Throwable ) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import it.fast4x.innertube.Innertube
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.models.Album
import it.fast4x.rimusic.ui.components.themed.TextPlaceholder
Expand All @@ -46,7 +45,8 @@ fun AlbumItem(
alternative: Boolean = false,
yearCentered: Boolean = true,
showAuthors: Boolean = false,
disableScrollingText: Boolean
disableScrollingText: Boolean,
isYoutubeAlbum: Boolean = false
) {
AlbumItem(
thumbnailUrl = album.thumbnailUrl,
Expand All @@ -59,7 +59,8 @@ fun AlbumItem(
alternative = alternative,
showAuthors = showAuthors,
modifier = modifier,
disableScrollingText = disableScrollingText
disableScrollingText = disableScrollingText,
isYoutubeAlbum = isYoutubeAlbum
)
}

Expand Down Expand Up @@ -100,7 +101,8 @@ fun AlbumItem(
modifier: Modifier = Modifier,
alternative: Boolean = false,
showAuthors: Boolean? = false,
disableScrollingText: Boolean
disableScrollingText: Boolean,
isYoutubeAlbum: Boolean = false
) {
ItemContainer(
alternative = alternative,
Expand All @@ -117,7 +119,7 @@ fun AlbumItem(
.clip(thumbnailShape())
.requiredSize(thumbnailSizeDp)
)
if (title?.startsWith(YTP_PREFIX) == true) {
if (isYoutubeAlbum) {
Image(
painter = painterResource(R.drawable.ytmusic),
colorFilter = ColorFilter.tint(Color.Red.copy(0.75f).compositeOver(Color.White)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@ import androidx.compose.ui.unit.dp
import coil.compose.AsyncImage
import it.fast4x.innertube.Innertube
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.models.Artist
import it.fast4x.rimusic.ui.components.themed.TextPlaceholder
Expand All @@ -46,7 +45,8 @@ fun ArtistItem(
modifier: Modifier = Modifier,
alternative: Boolean = false,
showName: Boolean = true,
disableScrollingText: Boolean
disableScrollingText: Boolean,
isYoutubeArtist : Boolean = false
) {
ArtistItem(
thumbnailUrl = artist.thumbnailUrl,
Expand All @@ -57,7 +57,8 @@ fun ArtistItem(
modifier = modifier,
alternative = alternative,
showName = showName,
disableScrollingText = disableScrollingText
disableScrollingText = disableScrollingText,
isYoutubeArtist = isYoutubeArtist
)
}

Expand All @@ -68,7 +69,8 @@ fun ArtistItem(
thumbnailSizeDp: Dp,
modifier: Modifier = Modifier,
alternative: Boolean = false,
disableScrollingText: Boolean
disableScrollingText: Boolean,
isYoutubeArtist : Boolean = false
) {
ArtistItem(
thumbnailUrl = artist.thumbnail?.url,
Expand All @@ -78,7 +80,8 @@ fun ArtistItem(
thumbnailSizeDp = thumbnailSizeDp,
modifier = modifier,
alternative = alternative,
disableScrollingText = disableScrollingText
disableScrollingText = disableScrollingText,
isYoutubeArtist = isYoutubeArtist
)
}

Expand All @@ -92,7 +95,8 @@ fun ArtistItem(
modifier: Modifier = Modifier,
alternative: Boolean = false,
showName: Boolean = true,
disableScrollingText: Boolean
disableScrollingText: Boolean,
isYoutubeArtist : Boolean = false
) {
ItemContainer(
alternative = alternative,
Expand All @@ -109,7 +113,7 @@ fun ArtistItem(
.clip(thumbnailShape())
.requiredSize(thumbnailSizeDp)
)
if (name?.startsWith(YTP_PREFIX) == true) {
if (isYoutubeArtist) {
Image(
painter = painterResource(R.drawable.ytmusic),
colorFilter = ColorFilter.tint(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,8 +44,6 @@ import it.fast4x.rimusic.ui.styling.onOverlay
import it.fast4x.rimusic.ui.styling.overlay
import it.fast4x.rimusic.ui.styling.shimmer
import it.fast4x.rimusic.MONTHLY_PREFIX
import it.fast4x.rimusic.YTEDITABLEPLAYLIST_PREFIX
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.utils.checkFileExists
import it.fast4x.rimusic.utils.color
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,6 @@ import it.fast4x.rimusic.EXPLICIT_PREFIX
import it.fast4x.rimusic.LocalPlayerServiceBinder
import it.fast4x.rimusic.MODIFIED_PREFIX
import it.fast4x.rimusic.R
import it.fast4x.rimusic.YTEDITABLEPLAYLIST_PREFIX
import it.fast4x.rimusic.YTP_PREFIX
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.enums.NavRoutes
import it.fast4x.rimusic.enums.UiType
Expand Down Expand Up @@ -232,14 +230,15 @@ fun AlbumDetails(
Database.upsert(
Album(
id = browseId,
title = if (album?.title?.startsWith(YTP_PREFIX) == true) YTP_PREFIX+albumPage?.album?.title else albumPage?.album?.title,
title = if (album?.title?.startsWith(MODIFIED_PREFIX) == true) album?.title else albumPage?.album?.title,
thumbnailUrl = if (album?.thumbnailUrl?.startsWith(MODIFIED_PREFIX) == true) album?.thumbnailUrl else albumPage?.album?.thumbnail?.url,
year = albumPage?.album?.year,
authorsText = if (album?.authorsText?.startsWith(MODIFIED_PREFIX) == true) album?.authorsText else albumPage?.album?.authors
?.joinToString("") { it.name ?: "" },
shareUrl = albumPage?.url,
timestamp = System.currentTimeMillis(),
bookmarkedAt = album?.bookmarkedAt
bookmarkedAt = album?.bookmarkedAt,
isYoutubeAlbum = album?.isYoutubeAlbum == true
),
albumPage
?.songs?.distinct()
Expand All @@ -266,7 +265,7 @@ fun AlbumDetails(
songId = albumSongsState.song.id,
playlistId = item.playlistId,
position = item.position
)
).default()
)
}
}
Expand Down Expand Up @@ -384,8 +383,7 @@ fun AlbumDetails(
setValue = {
if (it.isNotEmpty()) {
Database.asyncTransaction {
updateAlbumTitle(browseId,
if (album?.title?.startsWith(YTP_PREFIX) == true) YTP_PREFIX+it else it)
updateAlbumTitle(browseId, it)
}
}
},
Expand Down Expand Up @@ -587,10 +585,7 @@ fun AlbumDetails(
key = "header"
) {

val modifierArt =
if (isLandscape) Modifier.fillMaxWidth() else Modifier
.fillMaxWidth()
.aspectRatio(4f / 3)
val modifierArt = Modifier.fillMaxWidth()

Box(
modifier = modifierArt
Expand All @@ -599,7 +594,7 @@ fun AlbumDetails(
if (!isLandscape)
Box {
AsyncImage(
model = album?.thumbnailUrl?.resize(1200, 900),
model = album?.thumbnailUrl?.resize(1200, 1200),
contentDescription = "loading...",
modifier = Modifier
.fillMaxWidth()
Expand All @@ -611,7 +606,7 @@ fun AlbumDetails(
bottom = Dimensions.fadeSpacingBottom
)
)
if (album?.title?.startsWith(YTP_PREFIX) == true){
if (album?.isYoutubeAlbum == true){
Image(
painter = painterResource(R.drawable.ytmusic),
colorFilter = ColorFilter.tint(Color.Red.copy(0.75f).compositeOver(Color.White)),
Expand Down Expand Up @@ -765,15 +760,7 @@ fun AlbumDetails(
if (it != null) {
YtMusic.removelikePlaylistOrAlbum(it)
Database.asyncTransaction {
updateAlbumTitle(
browseId,
(album?.title
?: "").replace(
YTP_PREFIX,
"",
true
)
)
update(album!!.copy(isYoutubeAlbum = false))
}
}
}
Expand All @@ -783,10 +770,7 @@ fun AlbumDetails(
YtMusic.likePlaylistOrAlbum(it)
if (album != null) {
Database.asyncTransaction {
updateAlbumTitle(
browseId,
YTP_PREFIX + album?.title
)
update(album!!.copy(isYoutubeAlbum = true))
}
}
}
Expand Down Expand Up @@ -1004,7 +988,7 @@ fun AlbumDetails(
},
*/
onChangeAlbumTitle = {
if (album?.title?.startsWith(YTP_PREFIX) == true){
if (album?.isYoutubeAlbum == true){
SmartMessage(context.resources.getString(R.string.cant_rename_Saved_albums),type = PopupType.Error, context = context)
} else
showDialogChangeAlbumTitle = true
Expand Down Expand Up @@ -1065,7 +1049,7 @@ fun AlbumDetails(
songId = song.asMediaItem.mediaId,
playlistId = playlistPreview.playlist.id,
position = position + index
)
).default()
)
}
}
Expand All @@ -1089,7 +1073,7 @@ fun AlbumDetails(
songId = song.mediaId,
playlistId = playlistPreview.playlist.id,
position = position + index
)
).default()
)
}
}
Expand Down
Loading

0 comments on commit 819b9c5

Please sign in to comment.