diff --git a/app/src/main/java/com/github/libretube/api/obj/Channel.kt b/app/src/main/java/com/github/libretube/api/obj/Channel.kt index e1b261df4..5a227bea4 100644 --- a/app/src/main/java/com/github/libretube/api/obj/Channel.kt +++ b/app/src/main/java/com/github/libretube/api/obj/Channel.kt @@ -1,17 +1,17 @@ package com.github.libretube.api.obj -import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import kotlinx.serialization.Serializable -@JsonIgnoreProperties(ignoreUnknown = true) +@Serializable data class Channel( - var id: String? = null, - var name: String? = null, - var avatarUrl: String? = null, - var bannerUrl: String? = null, - var description: String? = null, - var nextpage: String? = null, - var subscriberCount: Long = 0, - var verified: Boolean = false, - var relatedStreams: List? = listOf(), - var tabs: List? = listOf() + val id: String, + val name: String, + val avatarUrl: String, + val bannerUrl: String, + val description: String, + val nextpage: String? = null, + val subscriberCount: Long = 0, + val verified: Boolean = false, + val relatedStreams: List = emptyList(), + val tabs: List = emptyList() ) diff --git a/app/src/main/java/com/github/libretube/api/obj/ChannelTab.kt b/app/src/main/java/com/github/libretube/api/obj/ChannelTab.kt index c7e2d63de..14e0f86cf 100644 --- a/app/src/main/java/com/github/libretube/api/obj/ChannelTab.kt +++ b/app/src/main/java/com/github/libretube/api/obj/ChannelTab.kt @@ -1,9 +1,9 @@ package com.github.libretube.api.obj -import com.fasterxml.jackson.annotation.JsonIgnoreProperties +import kotlinx.serialization.Serializable -@JsonIgnoreProperties(ignoreUnknown = true) +@Serializable data class ChannelTab( - val name: String? = null, - val data: String? = null + val name: String, + val data: String ) diff --git a/app/src/main/java/com/github/libretube/api/obj/ChannelTabResponse.kt b/app/src/main/java/com/github/libretube/api/obj/ChannelTabResponse.kt index 6c6fd7bae..8208239a0 100644 --- a/app/src/main/java/com/github/libretube/api/obj/ChannelTabResponse.kt +++ b/app/src/main/java/com/github/libretube/api/obj/ChannelTabResponse.kt @@ -1,6 +1,9 @@ package com.github.libretube.api.obj +import kotlinx.serialization.Serializable + +@Serializable data class ChannelTabResponse( - val content: List = listOf(), + val content: List = emptyList(), val nextpage: String? = null ) diff --git a/app/src/main/java/com/github/libretube/api/obj/ContentItem.kt b/app/src/main/java/com/github/libretube/api/obj/ContentItem.kt index c40c2a44f..7d1492a66 100644 --- a/app/src/main/java/com/github/libretube/api/obj/ContentItem.kt +++ b/app/src/main/java/com/github/libretube/api/obj/ContentItem.kt @@ -4,9 +4,9 @@ import kotlinx.serialization.Serializable @Serializable data class ContentItem( - val url: String? = null, - val type: String? = null, - val thumbnail: String? = null, + val url: String, + val type: String, + val thumbnail: String, val uploaderName: String? = null, val uploaded: Long? = null, val shortDescription: String? = null, diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt index 737acd17d..67802600e 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt @@ -98,7 +98,7 @@ class SearchAdapter( root.setOnClickListener { NavigationHelper.navigateVideo(root.context, item.url) } - val videoId = item.url!!.toID() + val videoId = item.url.toID() val videoName = item.title!! root.setOnLongClickListener { VideoOptionsBottomSheet(videoId, videoName) @@ -135,12 +135,12 @@ class SearchAdapter( } root.setOnLongClickListener { - ChannelOptionsBottomSheet(item.url!!.toID(), item.name) + ChannelOptionsBottomSheet(item.url.toID(), item.name) .show((root.context as BaseActivity).supportFragmentManager) true } - binding.searchSubButton.setupSubscriptionButton(item.url?.toID(), item.name?.toID()) + binding.searchSubButton.setupSubscriptionButton(item.url.toID(), item.name?.toID()) } } @@ -158,7 +158,7 @@ class SearchAdapter( } deletePlaylist.visibility = View.GONE root.setOnLongClickListener { - val playlistId = item.url!!.toID() + val playlistId = item.url.toID() val playlistName = item.name!! PlaylistOptionsBottomSheet(playlistId, playlistName, PlaylistType.PUBLIC) .show( diff --git a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt index 3164fbafd..22c29884e 100644 --- a/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt +++ b/app/src/main/java/com/github/libretube/ui/fragments/ChannelFragment.kt @@ -142,7 +142,7 @@ class ChannelFragment : BaseFragment() { binding.channelShare.setOnClickListener { val shareDialog = ShareDialog( - response.id!!.toID(), + response.id.toID(), ShareObjectType.CHANNEL, shareData ) @@ -169,10 +169,10 @@ class ChannelFragment : BaseFragment() { R.string.subscribers, response.subscriberCount.formatShort() ) - if (response.description?.trim() == "") { + if (response.description.isBlank()) { binding.channelDescription.visibility = View.GONE } else { - binding.channelDescription.text = response.description?.trim() + binding.channelDescription.text = response.description.trim() } binding.channelDescription.setOnClickListener { @@ -186,13 +186,13 @@ class ChannelFragment : BaseFragment() { // recyclerview of the videos by the channel channelAdapter = VideosAdapter( - response.relatedStreams.orEmpty().toMutableList(), + response.relatedStreams.toMutableList(), forceMode = VideosAdapter.Companion.ForceMode.CHANNEL ) binding.channelRecView.adapter = channelAdapter } - response.tabs?.let { setupTabs(it) } + setupTabs(response.tabs) } } @@ -230,16 +230,13 @@ class ChannelFragment : BaseFragment() { private fun loadTab(tab: ChannelTab) { scope.launch { - tab.data ?: return@launch val response = try { RetrofitInstance.api.getChannelTab(tab.data) } catch (e: Exception) { return@launch } - val adapter = SearchAdapter( - response.content.toMutableList() - ) + val adapter = SearchAdapter(response.content.toMutableList()) runOnUiThread { binding.channelRecView.adapter = adapter @@ -275,7 +272,7 @@ class ChannelFragment : BaseFragment() { return@launchWhenCreated } nextPage = response.nextpage - channelAdapter?.insertItems(response.relatedStreams.orEmpty()) + channelAdapter?.insertItems(response.relatedStreams) isLoading = false binding.channelRefresh.isRefreshing = false } @@ -291,9 +288,9 @@ class ChannelFragment : BaseFragment() { ) { scope.launch { val newContent = try { - RetrofitInstance.api.getChannelTab(tab.data ?: "", nextPage) + RetrofitInstance.api.getChannelTab(tab.data, nextPage) } catch (e: Exception) { - e.printStackTrace() + Log.e(TAG(), "Exception: $e") null } onNewNextPage.invoke(newContent?.nextpage) diff --git a/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt index 987cfbf7a..f3edef523 100644 --- a/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt +++ b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt @@ -20,7 +20,7 @@ import kotlinx.coroutines.runBlocking */ class ChannelOptionsBottomSheet( private val channelId: String, - private val channelName: String? + channelName: String? ) : BaseBottomSheet() { private val shareData = ShareData(currentChannel = channelName) override fun onCreate(savedInstanceState: Bundle?) { @@ -44,7 +44,7 @@ class ChannelOptionsBottomSheet( val channel = runBlocking { RetrofitInstance.api.getChannel(channelId) } - channel.relatedStreams?.firstOrNull()?.url?.toID()?.let { + channel.relatedStreams.firstOrNull()?.url?.toID()?.let { NavigationHelper.navigateVideo( requireContext(), it, @@ -60,7 +60,7 @@ class ChannelOptionsBottomSheet( val channel = runBlocking { RetrofitInstance.api.getChannel(channelId) } - channel.relatedStreams?.firstOrNull()?.url?.toID()?.let { + channel.relatedStreams.firstOrNull()?.url?.toID()?.let { BackgroundHelper.playOnBackground( requireContext(), videoId = it, diff --git a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt index 31769d384..99981aeda 100644 --- a/app/src/main/java/com/github/libretube/util/PlayingQueue.kt +++ b/app/src/main/java/com/github/libretube/util/PlayingQueue.kt @@ -147,7 +147,7 @@ object PlayingQueue { scope.launch { while (channelNextPage != null) { RetrofitInstance.api.getChannelNextPage(channelId, nextPage!!).apply { - add(*relatedStreams.orEmpty().toTypedArray()) + add(*relatedStreams.toTypedArray()) channelNextPage = this.nextpage } } @@ -158,7 +158,7 @@ object PlayingQueue { scope.launch { runCatching { val channel = RetrofitInstance.api.getChannel(channelId) - add(*channel.relatedStreams.orEmpty().toTypedArray()) + add(*channel.relatedStreams.toTypedArray()) updateCurrent(newCurrentStream) if (channel.nextpage == null) return@launch fetchMoreFromChannel(channelId, channel.nextpage)