Skip to content

Commit

Permalink
Fixed #200, Fixed #209, add cross-fade animation for home page
Browse files Browse the repository at this point in the history
  • Loading branch information
maxrave-dev committed Jan 9, 2024
1 parent 3a721aa commit 890cc38
Show file tree
Hide file tree
Showing 6 changed files with 62 additions and 45 deletions.
2 changes: 1 addition & 1 deletion .idea/kotlinc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Original file line number Diff line number Diff line change
Expand Up @@ -49,11 +49,11 @@ class HomeItemContentAdapter(private var listContent: ArrayList<Content>, 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
Expand All @@ -76,7 +76,10 @@ class HomeItemContentAdapter(private var listContent: ArrayList<Content>, 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
Expand All @@ -98,14 +101,15 @@ class HomeItemContentAdapter(private var listContent: ArrayList<Content>, 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
}
}
Expand All @@ -115,20 +119,19 @@ class HomeItemContentAdapter(private var listContent: ArrayList<Content>, 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
}
Expand All @@ -139,12 +142,10 @@ class HomeItemContentAdapter(private var listContent: ArrayList<Content>, 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
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1413,6 +1413,8 @@ class MainRepository @Inject constructor(private val localDataSource: LocalDataS
}.flowOn(Dispatchers.IO)
suspend fun getStream(videoId: String, itag: Int): Flow<String?> = 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
Expand All @@ -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()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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<Track>)
Queue.setNowPlaying(songsAdapter.getList()[0])
Queue.addAll(songsAdapter.getList())
if (Queue.getQueue().size >= 1) {
Queue.removeFirstTrackForPlaylistAndAlbum()
}
Expand Down Expand Up @@ -231,16 +236,19 @@ class AlbumFragment: Fragment() {
if (viewModel.albumBrowse.value is Resource.Success && viewModel.albumBrowse.value?.data != null){
val args = Bundle()
args.putString("type", Config.ALBUM_CLICK)
args.putString("videoId", viewModel.albumBrowse.value?.data!!.tracks[position].videoId)
args.putString("videoId", songsAdapter.getList()[position].videoId)
args.putString("from", "Album \"${viewModel.albumBrowse.value?.data!!.title}\"")
args.putInt("index", position)
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[position])
Queue.addAll(viewModel.albumBrowse.value?.data!!.tracks as ArrayList<Track>)
Queue.setNowPlaying(songsAdapter.getList()[position])
Queue.addAll(songsAdapter.getList())
if (Queue.getQueue().size >= 1) {
Queue.removeTrackWithIndex(position)
}
Expand All @@ -249,15 +257,15 @@ class AlbumFragment: Fragment() {
else if (viewModel.albumEntity.value != null && viewModel.albumEntity.value?.downloadState == DownloadState.STATE_DOWNLOADED){
val args = Bundle()
args.putString("type", Config.ALBUM_CLICK)
args.putString("videoId", viewModel.albumEntity.value?.tracks?.get(position))
args.putString("videoId", songsAdapter.getList()[position].videoId)
args.putString("from", "Album \"${viewModel.albumEntity.value?.title}\"")
args.putInt("index", position)
if (viewModel.albumEntity.value?.downloadState == DownloadState.STATE_DOWNLOADED) {
args.putInt("downloaded", 1)
}
args.putString("playlistId", viewModel.albumEntity.value?.browseId?.replaceFirst("VL", ""))
Queue.clear()
Queue.setNowPlaying(viewModel.listTrack.value?.get(position)!!.toTrack())
Queue.setNowPlaying(songsAdapter.getList()[position])
Queue.addAll(viewModel.listTrack.value.toArrayListTrack())
if (Queue.getQueue().size >= 1) {
Queue.removeTrackWithIndex(position)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -857,7 +857,9 @@ class SharedViewModel @Inject constructor(private var dataStoreManager: DataStor
return i
}
}
if (current in (0..(lyricsFormat?.get(0)?.startTimeMs ?: "0").toLong())) {
if (!lyricsFormat.isNullOrEmpty() && current in (0..(lyricsFormat[0].startTimeMs
?: "0").toLong())
) {
return -1
}
return null
Expand Down
10 changes: 5 additions & 5 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id("com.android.application") version "8.2.0" apply false
id("com.android.library") version "8.2.0" apply false
id("org.jetbrains.kotlin.android") version "1.9.10" apply false
id("com.android.application") version "8.2.1" apply false
id("com.android.library") version "8.2.1" apply false
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
id("androidx.navigation.safeargs.kotlin") version "2.5.3" apply false
id("com.google.dagger.hilt.android") version "2.48.1" apply false
id("org.jetbrains.kotlin.plugin.serialization") version "1.9.10" apply false
id("com.google.devtools.ksp") version "1.9.10-1.0.13" apply false
id("org.jetbrains.kotlin.plugin.serialization") version "1.9.22" apply false
id("com.google.devtools.ksp") version "1.9.22-1.0.16" apply false
val latestAboutLibsRelease = "10.9.1"
id("com.mikepenz.aboutlibraries.plugin") version latestAboutLibsRelease apply false
}

0 comments on commit 890cc38

Please sign in to comment.