Channel Tabs backend

This commit is contained in:
Bnyro 2022-10-29 11:20:34 +02:00
parent 8474471691
commit 36e2da52fb
8 changed files with 40 additions and 9 deletions

View File

@ -1,6 +1,7 @@
package com.github.libretube.api package com.github.libretube.api
import com.github.libretube.api.obj.Channel import com.github.libretube.api.obj.Channel
import com.github.libretube.api.obj.ChannelTabResponse
import com.github.libretube.api.obj.CommentsPage import com.github.libretube.api.obj.CommentsPage
import com.github.libretube.api.obj.DeleteUserRequest import com.github.libretube.api.obj.DeleteUserRequest
import com.github.libretube.api.obj.Login import com.github.libretube.api.obj.Login
@ -63,6 +64,12 @@ interface PipedApi {
@GET("channel/{channelId}") @GET("channel/{channelId}")
suspend fun getChannel(@Path("channelId") channelId: String): Channel suspend fun getChannel(@Path("channelId") channelId: String): Channel
@GET("channels/tabs")
suspend fun getChannelTab(
@Query("data") data: String,
@Query("nextpage") nextPage: String? = null
): ChannelTabResponse
@GET("user/{name}") @GET("user/{name}")
suspend fun getChannelByName(@Path("name") channelName: String): Channel suspend fun getChannelByName(@Path("name") channelName: String): Channel

View File

@ -12,5 +12,6 @@ data class Channel(
var nextpage: String? = null, var nextpage: String? = null,
var subscriberCount: Long = 0, var subscriberCount: Long = 0,
var verified: Boolean = false, var verified: Boolean = false,
var relatedStreams: List<StreamItem>? = null var relatedStreams: List<StreamItem>? = listOf(),
var tabs: List<ChannelTab>? = listOf()
) )

View File

@ -0,0 +1,9 @@
package com.github.libretube.api.obj
import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties(ignoreUnknown = true)
data class ChannelTab(
val name: String? = null,
val data: String? = null
)

View File

@ -0,0 +1,6 @@
package com.github.libretube.api.obj
data class ChannelTabResponse(
val content: List<ContentItem> = listOf(),
val nextpage: String? = null
)

View File

@ -3,7 +3,7 @@ package com.github.libretube.api.obj
import com.fasterxml.jackson.annotation.JsonIgnoreProperties import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
data class SearchItem( data class ContentItem(
var url: String? = null, var url: String? = null,
var thumbnail: String? = null, var thumbnail: String? = null,
var uploaderName: String? = null, var uploaderName: String? = null,

View File

@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
data class SearchResult( data class SearchResult(
val items: MutableList<SearchItem>? = arrayListOf(), val items: MutableList<ContentItem>? = arrayListOf(),
val nextpage: String? = "", val nextpage: String? = "",
val suggestion: String? = "", val suggestion: String? = "",
val corrected: Boolean? = null val corrected: Boolean? = null

View File

@ -8,7 +8,7 @@ import androidx.fragment.app.FragmentManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.api.SubscriptionHelper import com.github.libretube.api.SubscriptionHelper
import com.github.libretube.api.obj.SearchItem import com.github.libretube.api.obj.ContentItem
import com.github.libretube.databinding.ChannelRowBinding import com.github.libretube.databinding.ChannelRowBinding
import com.github.libretube.databinding.PlaylistSearchRowBinding import com.github.libretube.databinding.PlaylistSearchRowBinding
import com.github.libretube.databinding.VideoRowBinding import com.github.libretube.databinding.VideoRowBinding
@ -26,12 +26,12 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
class SearchAdapter( class SearchAdapter(
private val searchItems: MutableList<SearchItem>, private val searchItems: MutableList<ContentItem>,
private val childFragmentManager: FragmentManager private val childFragmentManager: FragmentManager
) : ) :
RecyclerView.Adapter<SearchViewHolder>() { RecyclerView.Adapter<SearchViewHolder>() {
fun updateItems(newItems: List<SearchItem>) { fun updateItems(newItems: List<ContentItem>) {
val searchItemsSize = searchItems.size val searchItemsSize = searchItems.size
searchItems.addAll(newItems) searchItems.addAll(newItems)
notifyItemRangeInserted(searchItemsSize, newItems.size) notifyItemRangeInserted(searchItemsSize, newItems.size)
@ -81,7 +81,7 @@ class SearchAdapter(
} }
} }
private fun bindWatch(item: SearchItem, binding: VideoRowBinding) { private fun bindWatch(item: ContentItem, binding: VideoRowBinding) {
binding.apply { binding.apply {
ImageHelper.loadImage(item.thumbnail, thumbnail) ImageHelper.loadImage(item.thumbnail, thumbnail)
thumbnailDuration.setFormattedDuration(item.duration!!) thumbnailDuration.setFormattedDuration(item.duration!!)
@ -114,7 +114,7 @@ class SearchAdapter(
@SuppressLint("SetTextI18n") @SuppressLint("SetTextI18n")
private fun bindChannel( private fun bindChannel(
item: SearchItem, item: ContentItem,
binding: ChannelRowBinding binding: ChannelRowBinding
) { ) {
binding.apply { binding.apply {
@ -164,7 +164,7 @@ class SearchAdapter(
} }
private fun bindPlaylist( private fun bindPlaylist(
item: SearchItem, item: ContentItem,
binding: PlaylistSearchRowBinding binding: PlaylistSearchRowBinding
) { ) {
binding.apply { binding.apply {

View File

@ -171,6 +171,14 @@ class ChannelFragment : BaseFragment() {
) )
binding.channelRecView.adapter = channelAdapter binding.channelRecView.adapter = channelAdapter
} }
response.tabs?.forEach {
try {
RetrofitInstance.api.getChannelTab(it.data!!).toString()
} catch (e: Exception) {
Log.e("error", e.toString())
}
}
} }
} }