Skip to content

Commit

Permalink
Fixed Local Playlist CRUD
Browse files Browse the repository at this point in the history
  • Loading branch information
maxrave-dev committed Jul 30, 2024
1 parent f76bad3 commit 82b9724
Show file tree
Hide file tree
Showing 9 changed files with 196 additions and 154 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -224,7 +224,6 @@ class SimpleMediaServiceHandler(
}.filter { it >= 0f }
.distinctUntilChanged()
.collect { current ->
Log.d("Seek to", "Current $current")
if (dataStoreManager.sponsorBlockEnabled.first() == TRUE) {
if (player.duration > 0L) {
val skipSegments = skipSegments.value
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import androidx.media3.datasource.cache.SimpleCache
import androidx.media3.exoplayer.offline.Download
import androidx.media3.exoplayer.offline.DownloadManager
import androidx.media3.exoplayer.offline.DownloadNotificationHelper
import androidx.media3.exoplayer.offline.DownloadRequest
import androidx.media3.exoplayer.offline.DownloadService
import com.maxrave.simpmusic.common.DownloadState
import com.maxrave.simpmusic.data.repository.MainRepository
import com.maxrave.simpmusic.di.DownloadCache
Expand All @@ -37,7 +39,7 @@ import javax.inject.Singleton
@UnstableApi
@Singleton
class DownloadUtils @Inject constructor(
@ApplicationContext context: Context,
@ApplicationContext private val context: Context,
@PlayerCache private val playerCache: SimpleCache,
@DownloadCache private val downloadCache: SimpleCache,
private val mainRepository: MainRepository,
Expand Down Expand Up @@ -113,6 +115,20 @@ class DownloadUtils @Inject constructor(
val downloads = MutableStateFlow<Map<String, Download>>(emptyMap())
val downloadingVideoIds = MutableStateFlow<MutableSet<String>>(mutableSetOf())

fun downloadTrack(videoId: String, title: String) {
val downloadRequest =
DownloadRequest.Builder(videoId, videoId.toUri())
.setData(title.toByteArray())
.setCustomCacheKey(videoId)
.build()
DownloadService.sendAddDownload(
context,
MusicDownloadService::class.java,
downloadRequest,
false,
)
}

fun getDownload(songId: String): Flow<Download?> = downloads.map { it[songId] }

init {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ import coil.request.ImageRequest
import coil.request.SuccessResult
import com.maxrave.simpmusic.R
import com.maxrave.simpmusic.common.Config
import com.maxrave.simpmusic.data.db.entities.PairSongLocalPlaylist
import com.maxrave.simpmusic.data.model.browse.album.Track
import com.maxrave.simpmusic.data.model.explore.mood.genre.ItemsPlaylist
import com.maxrave.simpmusic.data.model.explore.mood.moodmoments.Item
Expand All @@ -70,6 +71,7 @@ import com.maxrave.simpmusic.data.model.home.chart.ItemVideo
import com.maxrave.simpmusic.extension.connectArtists
import com.maxrave.simpmusic.extension.generateRandomColor
import com.maxrave.simpmusic.extension.navigateSafe
import com.maxrave.simpmusic.extension.removeConflicts
import com.maxrave.simpmusic.extension.toListName
import com.maxrave.simpmusic.extension.toTrack
import com.maxrave.simpmusic.service.PlaylistType
Expand All @@ -83,6 +85,7 @@ import com.skydoves.landscapist.animation.crossfade.CrossfadePlugin
import com.skydoves.landscapist.coil.CoilImage
import com.skydoves.landscapist.components.rememberImageComponent
import com.skydoves.landscapist.placeholder.placeholder.PlaceholderPlugin
import java.time.LocalDateTime

@OptIn(ExperimentalFoundationApi::class)
@UnstableApi
Expand Down Expand Up @@ -123,6 +126,40 @@ fun HomeItem(
getLocalPlaylist = {
homeViewModel.getAllLocalPlaylist()
},
onAddToLocalPlaylist = { playlist ->
val song = homeViewModel.songEntity.value ?: return@NowPlayingBottomSheet
val tempTrack = ArrayList<String>()
if (playlist.tracks != null) {
tempTrack.addAll(playlist.tracks)
}
if (!tempTrack.contains(
song.videoId,
) &&
playlist.syncedWithYouTubePlaylist == 1 &&
playlist.youtubePlaylistId != null
) {
sharedViewModel.addToYouTubePlaylist(
playlist.id,
playlist.youtubePlaylistId,
song.videoId,
)
}
if (!tempTrack.contains(song.videoId)) {
sharedViewModel.insertPairSongLocalPlaylist(
PairSongLocalPlaylist(
playlistId = playlist.id,
songId = song.videoId,
position = playlist.tracks?.size ?: 0,
inPlaylist = LocalDateTime.now(),
),
)
tempTrack.add(song.videoId)
}
sharedViewModel.updateLocalPlaylistTracks(
tempTrack.removeConflicts(),
playlist.id,
)
},
listLocalPlaylist = homeViewModel.localPlaylist.collectAsState(),
)
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.maxrave.simpmusic.ui.component

import androidx.compose.foundation.ExperimentalFoundationApi
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.Column
Expand All @@ -15,7 +16,6 @@ import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.foundation.lazy.rememberLazyListState
import androidx.compose.foundation.shape.RoundedCornerShape
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
Expand Down Expand Up @@ -46,9 +46,7 @@ import com.skydoves.landscapist.components.rememberImageComponent
import java.time.format.DateTimeFormatter

@androidx.annotation.OptIn(UnstableApi::class)
@OptIn(
ExperimentalMaterial3Api::class,
)
@ExperimentalFoundationApi
@Composable
fun LocalPlaylistHeader(
id: Long,
Expand Down Expand Up @@ -310,6 +308,7 @@ fun LocalPlaylistHeader(
PlaylistItems(
isPlaying = false,
songEntity = item,
modifier = Modifier.animateItemPlacement()
)
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.layout.ContentScale
import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.airbnb.lottie.compose.LottieAnimation
import com.airbnb.lottie.compose.LottieCompositionSpec
Expand All @@ -36,7 +35,6 @@ import com.maxrave.simpmusic.R
import com.maxrave.simpmusic.common.DownloadState
import com.maxrave.simpmusic.data.db.entities.SongEntity
import com.maxrave.simpmusic.data.model.browse.album.Track
import com.maxrave.simpmusic.data.model.searchResult.songs.Artist
import com.maxrave.simpmusic.extension.connectArtists
import com.maxrave.simpmusic.extension.toListName
import com.maxrave.simpmusic.ui.theme.typo
Expand All @@ -53,13 +51,14 @@ fun PlaylistItems(
isPlaying: Boolean,
onMoreClickListener: ((videoId: String) -> Unit)? = null,
onClickListener: ((videoId: String) -> Unit)? = null,
modifier: Modifier
) {
val composition by rememberLottieComposition(
LottieCompositionSpec.RawRes(R.raw.audio_playing_animation),
)
Box(
modifier =
Modifier.clickable{
modifier.clickable{
onClickListener?.invoke(track?.videoId ?: songEntity?.videoId ?: "")
}
) {
Expand Down Expand Up @@ -257,35 +256,3 @@ fun SuggestItems(
}
}
}

@Preview
@Composable
fun PlaylistItemsPreview() {
PlaylistItems(
isPlaying = false,
track =
Track(
album = null,
artists =
listOf(
Artist(
id = null,
name = "Janai",
),
),
duration = null,
durationSeconds = null,
isAvailable = false,
isExplicit = false,
likeStatus = null,
thumbnails = listOf(),
title = "Ernest",
videoId = "Delaina",
videoType = null,
category = null,
feedbackTokens = null,
resultType = null,
year = null,
),
)
}
Loading

0 comments on commit 82b9724

Please sign in to comment.