Skip to content

Commit

Permalink
Merge pull request #5657 from aneesh1122/Fixing-YT-related-things
Browse files Browse the repository at this point in the history
Fixing yt related things
  • Loading branch information
fast4x authored Feb 11, 2025
2 parents 1235a9d + e1a65b6 commit 469be40
Show file tree
Hide file tree
Showing 23 changed files with 1,242 additions and 512 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -300,7 +300,13 @@ object MyDownloadHelper {

fun autoDownloadWhenLiked(context: Context, mediaItem: MediaItem) {
if (context.preferences.getBoolean(autoDownloadSongWhenLikedKey, false)) {
autoDownload(context, mediaItem)
Database.asyncQuery {
if (getLikedAt(mediaItem.mediaId) !in listOf(-1L,null)) {
autoDownload(context, mediaItem)
} else {
removeDownload(context, mediaItem)
}
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import androidx.media3.exoplayer.offline.DownloadService
import it.fast4x.innertube.Innertube
import it.fast4x.rimusic.Database
import it.fast4x.rimusic.R
import it.fast4x.rimusic.appContext
import it.fast4x.rimusic.enums.AlbumSwipeAction
import it.fast4x.rimusic.enums.DownloadedStateMedia
import it.fast4x.rimusic.enums.PlaylistSwipeAction
Expand All @@ -53,7 +54,16 @@ import it.fast4x.rimusic.utils.queueSwipeLeftActionKey
import it.fast4x.rimusic.utils.queueSwipeRightActionKey
import kotlinx.coroutines.flow.distinctUntilChanged
import it.fast4x.rimusic.colorPalette
import it.fast4x.rimusic.context
import it.fast4x.rimusic.enums.PopupType
import it.fast4x.rimusic.service.MyDownloadHelper
import it.fast4x.rimusic.service.MyDownloadService
import it.fast4x.rimusic.ui.screens.settings.isYouTubeSyncEnabled
import it.fast4x.rimusic.utils.addToYtLikedSong
import it.fast4x.rimusic.utils.isNetworkConnected
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch

@Composable
fun SwipeableContent(
Expand Down Expand Up @@ -174,22 +184,32 @@ fun SwipeableQueueItem(
Database.likedAt(mediaItem.mediaId).distinctUntilChanged().collect { likedAt = it }
}
val onFavourite: () -> Unit = {
mediaItemToggleLike(mediaItem)
val message: String
val mTitle: String = mediaItem.mediaMetadata.title?.toString() ?: ""
val mArtist: String = mediaItem.mediaMetadata.artist?.toString() ?: ""
if(likedAt == -1L) {
message = "\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_disliked)}"
} else if( likedAt != null ) {
message = "\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_favorites)}"
} else
message = context.resources.getString(R.string.added_to_favorites)
if (!isNetworkConnected(appContext()) && isYouTubeSyncEnabled()) {
SmartMessage(appContext().resources.getString(R.string.no_connection), context = appContext(), type = PopupType.Error)
} else if (!isYouTubeSyncEnabled()){
mediaItemToggleLike(mediaItem)
val message: String
val mTitle: String = mediaItem.mediaMetadata.title?.toString() ?: ""
val mArtist: String = mediaItem.mediaMetadata.artist?.toString() ?: ""
if (likedAt == -1L) {
message =
"\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_disliked)}"
} else if (likedAt != null) {
message =
"\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_favorites)}"
} else
message = context.resources.getString(R.string.added_to_favorites)

SmartMessage(
message,
durationLong = likedAt != null,
context = context
)
SmartMessage(
message,
durationLong = likedAt != null,
context = context
)
} else {
CoroutineScope(Dispatchers.IO).launch {
addToYtLikedSong(mediaItem)
}
}
}

val queueSwipeLeftAction by rememberPreference(queueSwipeLeftActionKey, QueueSwipeAction.RemoveFromQueue)
Expand Down Expand Up @@ -250,22 +270,32 @@ fun SwipeablePlaylistItem(
Database.likedAt(mediaItem.mediaId).distinctUntilChanged().collect { likedAt = it }
}
val onFavourite: () -> Unit = {
mediaItemToggleLike(mediaItem)
val message: String
val mTitle: String = mediaItem.mediaMetadata.title?.toString() ?: ""
val mArtist: String = mediaItem.mediaMetadata.artist?.toString() ?: ""
if(likedAt == -1L) {
message = "\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_disliked)}"
} else if ( likedAt != null ) {
message = "\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_favorites)}"
} else
message = context.resources.getString(R.string.added_to_favorites)
if (!isNetworkConnected(appContext()) && isYouTubeSyncEnabled()) {
SmartMessage(appContext().resources.getString(R.string.no_connection), context = appContext(), type = PopupType.Error)
} else if (!isYouTubeSyncEnabled()){
mediaItemToggleLike(mediaItem)
val message: String
val mTitle: String = mediaItem.mediaMetadata.title?.toString() ?: ""
val mArtist: String = mediaItem.mediaMetadata.artist?.toString() ?: ""
if (likedAt == -1L) {
message =
"\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_disliked)}"
} else if (likedAt != null) {
message =
"\"$mTitle - $mArtist\" ${context.resources.getString(R.string.removed_from_favorites)}"
} else
message = context.resources.getString(R.string.added_to_favorites)

SmartMessage(
message,
durationLong = likedAt != null,
context = context
)
SmartMessage(
message,
durationLong = likedAt != null,
context = context
)
} else {
CoroutineScope(Dispatchers.IO).launch {
addToYtLikedSong(mediaItem)
}
}
}

val playlistSwipeLeftAction by rememberPreference(playlistSwipeLeftActionKey, PlaylistSwipeAction.Favourite)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2006,6 +2006,7 @@ fun SongMatchingDialog(
itemsIndexed(songsList) { _, song ->
val artistsNames = song?.authors?.filter { it.endpoint != null }?.map { it.name }
val artistsIds = song?.authors?.filter { it.endpoint != null }?.map { it.endpoint?.browseId }
val artistNameString = song?.asMediaItem?.mediaMetadata?.artist?.toString() ?: ""
if (song != null) {
Row(horizontalArrangement = Arrangement.Start,
verticalAlignment = Alignment.CenterVertically,
Expand Down Expand Up @@ -2066,6 +2067,7 @@ fun SongMatchingDialog(
}
}
}
Database.updateSongArtist(song.asMediaItem.mediaId, artistNameString)
}
onDismiss()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ 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.appContext
import it.fast4x.rimusic.cleanPrefix
import it.fast4x.rimusic.enums.NavRoutes
import it.fast4x.rimusic.enums.PlaylistSortBy
Expand Down Expand Up @@ -93,8 +94,14 @@ import kotlinx.coroutines.flow.flowOf
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import it.fast4x.rimusic.colorPalette
import it.fast4x.rimusic.context
import it.fast4x.rimusic.enums.PopupType
import it.fast4x.rimusic.service.MyDownloadHelper
import it.fast4x.rimusic.typography
import it.fast4x.rimusic.ui.screens.settings.isYouTubeSyncEnabled
import it.fast4x.rimusic.utils.addSongToYtPlaylist
import it.fast4x.rimusic.utils.addToYtLikedSong
import it.fast4x.rimusic.utils.isNetworkConnected

@OptIn(UnstableApi::class)
@Composable
Expand Down Expand Up @@ -175,20 +182,22 @@ fun BaseMediaItemGridMenu(
onAddToPreferites = onAddToPreferites,
onMatchingSong = onMatchingSong,
onAddToPlaylist = { playlist, position ->
Database.asyncTransaction {
insert(mediaItem)
insert(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
).default()
)
}
if(isYouTubeSyncEnabled() && playlist.isYoutubePlaylist && playlist.isEditable)
if (!isYouTubeSyncEnabled() || !playlist.isYoutubePlaylist){
Database.asyncTransaction {
insert(mediaItem)
insert(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
).default()
)
}
} else {
CoroutineScope(Dispatchers.IO).launch {
playlist.browseId?.let { YtMusic.addToPlaylist(cleanPrefix(it), mediaItem.mediaId) }
addSongToYtPlaylist(playlist.id, position, playlist.browseId ?: "", mediaItem)
}
}
},
onHideFromDatabase = onHideFromDatabase,
onDeleteFromDatabase = onDeleteFromDatabase,
Expand Down Expand Up @@ -245,21 +254,22 @@ fun MiniMediaItemGridMenu(
mediaItem = mediaItem,
onDismiss = onDismiss,
onAddToPlaylist = { playlist, position ->
Database.asyncTransaction {
insert(mediaItem)
insert(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
).default()
)
}

if(isYouTubeSyncEnabled() && playlist.isYoutubePlaylist && playlist.isEditable)
if (!isYouTubeSyncEnabled() || !playlist.isYoutubePlaylist){
Database.asyncTransaction {
insert(mediaItem)
insert(
SongPlaylistMap(
songId = mediaItem.mediaId,
playlistId = insert(playlist).takeIf { it != -1L } ?: playlist.id,
position = position
).default()
)
}
} else {
CoroutineScope(Dispatchers.IO).launch {
playlist.browseId?.let { YtMusic.addToPlaylist(cleanPrefix(it), mediaItem.mediaId) }
addSongToYtPlaylist(playlist.id, position, playlist.browseId ?: "", mediaItem)
}
}

onDismiss()
},
Expand Down Expand Up @@ -441,8 +451,16 @@ fun MediaItemGridMenu (
icon = if (likedAt == null) R.drawable.heart_outline else R.drawable.heart,
color = colorPalette().favoritesIcon,
onClick = {
mediaItemToggleLike(mediaItem)
updateData = !updateData
if (!isNetworkConnected(appContext()) && isYouTubeSyncEnabled()) {
SmartMessage(appContext().resources.getString(R.string.no_connection), context = appContext(), type = PopupType.Error)
} else if (!isYouTubeSyncEnabled()){
mediaItemToggleLike(mediaItem)
updateData = !updateData
} else {
CoroutineScope(Dispatchers.IO).launch {
addToYtLikedSong(mediaItem)
}
}
},
modifier = Modifier
.padding(all = 4.dp)
Expand Down
Loading

0 comments on commit 469be40

Please sign in to comment.