diff --git a/app/src/main/java/xyz/btcland/libretube/PipedApi.kt b/app/src/main/java/xyz/btcland/libretube/PipedApi.kt index 19bbbcb65..ce0eafce8 100644 --- a/app/src/main/java/xyz/btcland/libretube/PipedApi.kt +++ b/app/src/main/java/xyz/btcland/libretube/PipedApi.kt @@ -5,6 +5,7 @@ import retrofit2.http.Path import retrofit2.http.Query import xyz.btcland.libretube.obj.StreamItem import xyz.btcland.libretube.obj.Streams +import xyz.btcland.libretube.obj.SearchResult interface PipedApi { @GET("trending") @@ -16,8 +17,8 @@ interface PipedApi { @GET("search") suspend fun getSearchResults( @Query("q") searchQuery: String, - @Query("filter") filer: String - ): List + @Query("filter") filter: String + ): SearchResult @GET("suggestions") suspend fun getSuggestions(@Query("query") query: String): List diff --git a/app/src/main/java/xyz/btcland/libretube/RetrofitInstance.kt b/app/src/main/java/xyz/btcland/libretube/RetrofitInstance.kt index 791ef9199..fffd97e61 100644 --- a/app/src/main/java/xyz/btcland/libretube/RetrofitInstance.kt +++ b/app/src/main/java/xyz/btcland/libretube/RetrofitInstance.kt @@ -6,7 +6,7 @@ import retrofit2.converter.jackson.JacksonConverterFactory object RetrofitInstance { val api: PipedApi by lazy { Retrofit.Builder() - .baseUrl("https://piped-api.alefvanoon.xyz/") + .baseUrl("https://pipedapi.tokhmi.xyz/") .addConverterFactory(JacksonConverterFactory.create()) .build() .create(PipedApi::class.java) diff --git a/app/src/main/java/xyz/btcland/libretube/SearchFragment.kt b/app/src/main/java/xyz/btcland/libretube/SearchFragment.kt index 14ad7606f..4efaae1b8 100644 --- a/app/src/main/java/xyz/btcland/libretube/SearchFragment.kt +++ b/app/src/main/java/xyz/btcland/libretube/SearchFragment.kt @@ -11,6 +11,9 @@ import android.view.ViewGroup import android.widget.ArrayAdapter import android.widget.AutoCompleteTextView import androidx.lifecycle.lifecycleScope +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch import retrofit2.HttpException import java.io.IOException @@ -61,11 +64,13 @@ class SearchFragment : Fragment() { override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { if(s!! != ""){ - println(s.toString()) - fetchSuggestions(s.toString(), autoTextView) - } - + GlobalScope.launch { + fetchSuggestions(s.toString(), autoTextView) + delay(2000) + fetchSearch(s.toString()) + } } + } override fun afterTextChanged(s: Editable?) { @@ -94,7 +99,21 @@ class SearchFragment : Fragment() { autoTextView.setAdapter(adapter) } } - + private fun fetchSearch(query: String){ + lifecycleScope.launchWhenCreated { + val response = try { + RetrofitInstance.api.getSearchResults(query, "all") + } catch (e: IOException) { + println(e) + Log.e(TAG, "IOException, you might not have internet connection") + return@launchWhenCreated + } catch (e: HttpException) { + Log.e(TAG, "HttpException, unexpected response") + return@launchWhenCreated + } + print(response!!.items!![0]) + } + } companion object { /** * Use this factory method to create a new instance of diff --git a/app/src/main/java/xyz/btcland/libretube/obj/SearchItem.kt b/app/src/main/java/xyz/btcland/libretube/obj/SearchItem.kt new file mode 100644 index 000000000..16a330e9d --- /dev/null +++ b/app/src/main/java/xyz/btcland/libretube/obj/SearchItem.kt @@ -0,0 +1,22 @@ +package xyz.btcland.libretube.obj + +data class SearchItem( + var url: String?, + var title: String?, + var thumbnail: String?, + var uploaderName: String?, + var uploaderUrl: String?, + var uploaderAvatar: String?, + var uploadedDate: String?, + var duration: Long?, + var views: Long?, + var uploaderVerified: Boolean?, +//Channel and Playlist attributes + var name: String? = null, + var description: String? = null, + var subscribers: Long? = -1, + var videos: Long? = -1, + var verified: Boolean? = null +){ + constructor() : this("","","","","","","",0,0,null) +} diff --git a/app/src/main/java/xyz/btcland/libretube/obj/SearchResult.kt b/app/src/main/java/xyz/btcland/libretube/obj/SearchResult.kt new file mode 100644 index 000000000..29c382189 --- /dev/null +++ b/app/src/main/java/xyz/btcland/libretube/obj/SearchResult.kt @@ -0,0 +1,10 @@ +package xyz.btcland.libretube.obj + +import xyz.btcland.libretube.obj.StreamItem + +data class SearchResult( + val items: List? = listOf(), + val nextpage: String? ="", + val suggestion: String?="", + val corrected: Boolean? = null +) diff --git a/app/src/main/java/xyz/btcland/libretube/obj/StreamItem.kt b/app/src/main/java/xyz/btcland/libretube/obj/StreamItem.kt index 245fb336f..57ff146df 100644 --- a/app/src/main/java/xyz/btcland/libretube/obj/StreamItem.kt +++ b/app/src/main/java/xyz/btcland/libretube/obj/StreamItem.kt @@ -1,15 +1,5 @@ package xyz.btcland.libretube.obj -import com.fasterxml.jackson.annotation.JsonSubTypes -import com.fasterxml.jackson.annotation.JsonTypeInfo -import xyz.btcland.libretube.obj.search.SearchChannel -import xyz.btcland.libretube.obj.search.SearchPlaylist - -@JsonTypeInfo(use = JsonTypeInfo.Id.DEDUCTION) -@JsonSubTypes(value =[ - JsonSubTypes.Type(SearchChannel::class), - JsonSubTypes.Type(SearchPlaylist::class) -]) data class StreamItem( var url: String?, var title: String?, diff --git a/app/src/main/java/xyz/btcland/libretube/obj/search/SearchChannel.kt b/app/src/main/java/xyz/btcland/libretube/obj/search/SearchChannel.kt deleted file mode 100644 index 508b762dd..000000000 --- a/app/src/main/java/xyz/btcland/libretube/obj/search/SearchChannel.kt +++ /dev/null @@ -1,11 +0,0 @@ -package xyz.btcland.libretube.obj.search - -data class SearchChannel( - var name: String? = null, - var thumbnail: String? = null, - var url: String? = null, - var description: String? = null, - var subscribers: Long? = -1, - var videos: Long? = -1, - var verified: Boolean? = null -) diff --git a/app/src/main/java/xyz/btcland/libretube/obj/search/SearchPlaylist.kt b/app/src/main/java/xyz/btcland/libretube/obj/search/SearchPlaylist.kt deleted file mode 100644 index 7ad42fd20..000000000 --- a/app/src/main/java/xyz/btcland/libretube/obj/search/SearchPlaylist.kt +++ /dev/null @@ -1,10 +0,0 @@ -package xyz.btcland.libretube.obj.search - -data class SearchPlaylist( - var name: String? = null, - var thumbnail: String? = null, - var url: String? = null, - var uploaderName: String? =null, - var videos: Long = -1 - -)