diff --git a/.idea/kotlinc.xml b/.idea/kotlinc.xml
index f8467b45..8d81632f 100644
--- a/.idea/kotlinc.xml
+++ b/.idea/kotlinc.xml
@@ -1,6 +1,6 @@
-
+
\ No newline at end of file
diff --git a/app/src/main/java/com/maxrave/simpmusic/adapter/home/HomeItemContentAdapter.kt b/app/src/main/java/com/maxrave/simpmusic/adapter/home/HomeItemContentAdapter.kt
index 749ff699..22804d69 100644
--- a/app/src/main/java/com/maxrave/simpmusic/adapter/home/HomeItemContentAdapter.kt
+++ b/app/src/main/java/com/maxrave/simpmusic/adapter/home/HomeItemContentAdapter.kt
@@ -49,11 +49,11 @@ class HomeItemContentAdapter(private var listContent: ArrayList, privat
}
fun bind(content: Content){
with(binding){
- if (content.thumbnails.size > 1) {
- ivArt.load(content.thumbnails[1].url)
- }
- else{
- ivArt.load(content.thumbnails[0].url)
+ if (content.thumbnails.isNotEmpty()) {
+ ivArt.load(content.thumbnails.lastOrNull()?.url) {
+ crossfade(true)
+ placeholder(R.drawable.holder)
+ }
}
tvSongName.text = content.title
tvSongName.isSelected = true
@@ -76,7 +76,10 @@ class HomeItemContentAdapter(private var listContent: ArrayList, privat
fun bind(content: Content) {
with(binding) {
if (content.thumbnails.isNotEmpty()) {
- ivArt.load(content.thumbnails.lastOrNull()?.url)
+ ivArt.load(content.thumbnails.lastOrNull()?.url) {
+ crossfade(true)
+ placeholder(R.drawable.holder)
+ }
}
tvSongName.text = content.title
tvSongName.isSelected = true
@@ -98,14 +101,15 @@ class HomeItemContentAdapter(private var listContent: ArrayList, privat
fun bind(content: Content) {
with(binding) {
- if (content.thumbnails.size > 1) {
- ivArt.load(content.thumbnails[1].url)
- } else {
- ivArt.load(content.thumbnails[0].url)
+ ivArt.load(content.thumbnails.lastOrNull()?.url) {
+ crossfade(true)
+ placeholder(R.drawable.holder)
}
tvTitle.text = content.title
tvTitle.isSelected = true
- tvDescription.text = content.description ?: (if (!content.artists.isNullOrEmpty()) content.artists.toListName().connectArtists() else context.getString(R.string.playlist))
+ tvDescription.text = content.description
+ ?: (if (!content.artists.isNullOrEmpty()) content.artists.toListName()
+ .connectArtists() else context.getString(R.string.playlist))
tvDescription.isSelected = true
}
}
@@ -115,20 +119,19 @@ class HomeItemContentAdapter(private var listContent: ArrayList, privat
binding.root.setOnClickListener {listener.onAlbumItemClick(bindingAdapterPosition)}
}
fun bind(content: Content){
- with(binding){
- if (content.thumbnails.size > 1) {
- ivArt.load(content.thumbnails[1].url)
- }
- else{
- ivArt.load(content.thumbnails[0].url)
+ with(binding) {
+ ivArt.load(content.thumbnails.lastOrNull()?.url) {
+ crossfade(true)
+ placeholder(R.drawable.holder)
}
tvTitle.text = content.title
tvTitle.isSelected = true
if (content.description != "" && content.description != null) {
tvDescription.text = content.description
- }
- else {
- tvDescription.text = if (!content.artists.isNullOrEmpty()) content.artists.toListName().connectArtists() else context.getString(R.string.album)
+ } else {
+ tvDescription.text =
+ if (!content.artists.isNullOrEmpty()) content.artists.toListName()
+ .connectArtists() else context.getString(R.string.album)
}
tvDescription.isSelected = true
}
@@ -139,12 +142,10 @@ class HomeItemContentAdapter(private var listContent: ArrayList, privat
binding.root.setOnClickListener {listener.onArtistItemClick(bindingAdapterPosition)}
}
fun bind(content: Content){
- with(binding){
- if (content.thumbnails.size > 1) {
- ivArt.load(content.thumbnails[1].url)
- }
- else{
- ivArt.load(content.thumbnails[0].url)
+ with(binding) {
+ ivArt.load(content.thumbnails.lastOrNull()?.url) {
+ crossfade(true)
+ placeholder(R.drawable.holder)
}
tvArtistName.text = content.title
}
diff --git a/app/src/main/java/com/maxrave/simpmusic/data/repository/MainRepository.kt b/app/src/main/java/com/maxrave/simpmusic/data/repository/MainRepository.kt
index a681dfb6..49adf27c 100644
--- a/app/src/main/java/com/maxrave/simpmusic/data/repository/MainRepository.kt
+++ b/app/src/main/java/com/maxrave/simpmusic/data/repository/MainRepository.kt
@@ -1413,6 +1413,8 @@ class MainRepository @Inject constructor(private val localDataSource: LocalDataS
}.flowOn(Dispatchers.IO)
suspend fun getStream(videoId: String, itag: Int): Flow = flow{
YouTube.player(videoId).onSuccess { data ->
+ val acceptToPlayVideo =
+ runBlocking { dataStoreManager.watchVideoInsteadOfPlayingAudio.first() == DataStoreManager.TRUE }
val videoItag =
VIDEO_QUALITY.itags.getOrNull(VIDEO_QUALITY.items.indexOf(dataStoreManager.videoQuality.first()))
?: 22
@@ -1423,7 +1425,11 @@ class MainRepository @Inject constructor(private val localDataSource: LocalDataS
) else Log.w("Stream", "response: is VIDEO")
Log.w("Stream: ", data.toString())
var format =
- if (data.third == MediaType.Song) response.streamingData?.adaptiveFormats?.find { it.itag == itag } else response.streamingData?.formats?.find { it.itag == videoItag }
+ if (acceptToPlayVideo) {
+ if (data.third == MediaType.Song) response.streamingData?.adaptiveFormats?.find { it.itag == itag } else response.streamingData?.formats?.find { it.itag == videoItag }
+ } else {
+ response.streamingData?.adaptiveFormats?.find { it.itag == itag }
+ }
if (format == null) {
format = response.streamingData?.adaptiveFormats?.lastOrNull()
}
diff --git a/app/src/main/java/com/maxrave/simpmusic/ui/fragment/other/AlbumFragment.kt b/app/src/main/java/com/maxrave/simpmusic/ui/fragment/other/AlbumFragment.kt
index c8982c55..ed842e23 100644
--- a/app/src/main/java/com/maxrave/simpmusic/ui/fragment/other/AlbumFragment.kt
+++ b/app/src/main/java/com/maxrave/simpmusic/ui/fragment/other/AlbumFragment.kt
@@ -188,18 +188,23 @@ class AlbumFragment: Fragment() {
}
}
binding.btPlayPause.setOnClickListener {
- if (viewModel.albumBrowse.value is Resource.Success && viewModel.albumBrowse.value?.data != null){
+ if (viewModel.albumBrowse.value is Resource.Success && viewModel.albumBrowse.value?.data != null && songsAdapter.getList()
+ .isNotEmpty()
+ ) {
val args = Bundle()
args.putString("type", Config.ALBUM_CLICK)
- args.putString("videoId", viewModel.albumBrowse.value?.data!!.tracks[0].videoId)
+ args.putString("videoId", songsAdapter.getList()[0].videoId)
args.putString("from", "Album \"${viewModel.albumBrowse.value?.data!!.title}\"")
if (viewModel.albumEntity.value?.downloadState == DownloadState.STATE_DOWNLOADED) {
args.putInt("downloaded", 1)
}
- args.putString("playlistId", viewModel.albumBrowse.value?.data?.audioPlaylistId?.replaceFirst("VL", ""))
+ args.putString(
+ "playlistId",
+ viewModel.albumBrowse.value?.data?.audioPlaylistId?.replaceFirst("VL", "")
+ )
Queue.clear()
- Queue.setNowPlaying(viewModel.albumBrowse.value?.data!!.tracks[0])
- Queue.addAll(viewModel.albumBrowse.value?.data!!.tracks as ArrayList