mirror of
https://github.com/libre-tube/LibreTube.git
synced 2025-04-28 07:50:31 +05:30
Use view binding extensions in the search fragments.
This commit is contained in:
parent
ab1b94d78d
commit
5030453db4
@ -122,6 +122,9 @@ dependencies {
|
||||
/* Room */
|
||||
kapt libs.room.compiler
|
||||
implementation libs.room
|
||||
|
||||
/* View binding */
|
||||
implementation libs.viewBindingPropertyDelegate
|
||||
}
|
||||
|
||||
static def getUnixTime() {
|
||||
|
@ -2,12 +2,13 @@ package com.github.libretube.ui.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.databinding.FragmentSearchBinding
|
||||
import com.github.libretube.db.DatabaseHolder.Database
|
||||
@ -16,12 +17,10 @@ import com.github.libretube.extensions.awaitQuery
|
||||
import com.github.libretube.ui.activities.MainActivity
|
||||
import com.github.libretube.ui.adapters.SearchHistoryAdapter
|
||||
import com.github.libretube.ui.adapters.SearchSuggestionsAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import com.github.libretube.ui.models.SearchViewModel
|
||||
|
||||
class SearchFragment : BaseFragment() {
|
||||
private var _binding: FragmentSearchBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
class SearchFragment : Fragment(R.layout.fragment_search) {
|
||||
private val binding by viewBinding(FragmentSearchBinding::bind)
|
||||
|
||||
private val viewModel: SearchViewModel by activityViewModels()
|
||||
|
||||
@ -32,15 +31,6 @@ class SearchFragment : BaseFragment() {
|
||||
query = arguments?.getString("query")
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
_binding = FragmentSearchBinding.inflate(layoutInflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
@ -75,15 +65,12 @@ class SearchFragment : BaseFragment() {
|
||||
return@launchWhenCreated
|
||||
}
|
||||
// only load the suggestions if the input field didn't get cleared yet
|
||||
val suggestionsAdapter =
|
||||
SearchSuggestionsAdapter(
|
||||
response.reversed(),
|
||||
(activity as MainActivity).searchView
|
||||
)
|
||||
runOnUiThread {
|
||||
if (viewModel.searchQuery.value != "") {
|
||||
binding.suggestionsRecycler.adapter = suggestionsAdapter
|
||||
}
|
||||
val suggestionsAdapter = SearchSuggestionsAdapter(
|
||||
response.reversed(),
|
||||
(activity as MainActivity).searchView
|
||||
)
|
||||
if (isAdded && viewModel.searchQuery.value != "") {
|
||||
binding.suggestionsRecycler.adapter = suggestionsAdapter
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -2,12 +2,12 @@ package com.github.libretube.ui.fragments
|
||||
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||
import com.github.libretube.R
|
||||
import com.github.libretube.api.RetrofitInstance
|
||||
import com.github.libretube.constants.PreferenceKeys
|
||||
@ -18,15 +18,13 @@ import com.github.libretube.extensions.TAG
|
||||
import com.github.libretube.extensions.hideKeyboard
|
||||
import com.github.libretube.helpers.PreferenceHelper
|
||||
import com.github.libretube.ui.adapters.SearchAdapter
|
||||
import com.github.libretube.ui.base.BaseFragment
|
||||
import java.io.IOException
|
||||
import kotlinx.coroutines.Dispatchers
|
||||
import kotlinx.coroutines.withContext
|
||||
import retrofit2.HttpException
|
||||
|
||||
class SearchResultFragment : BaseFragment() {
|
||||
private var _binding: FragmentSearchResultBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
class SearchResultFragment : Fragment(R.layout.fragment_search_result) {
|
||||
private val binding by viewBinding(FragmentSearchResultBinding::bind)
|
||||
|
||||
private var nextPage: String? = null
|
||||
private var query: String = ""
|
||||
@ -39,15 +37,6 @@ class SearchResultFragment : BaseFragment() {
|
||||
query = arguments?.getString("query").toString()
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View {
|
||||
_binding = FragmentSearchResultBinding.inflate(layoutInflater, container, false)
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
@ -77,7 +66,7 @@ class SearchResultFragment : BaseFragment() {
|
||||
fetchSearch()
|
||||
|
||||
binding.searchRecycler.viewTreeObserver.addOnScrollChangedListener {
|
||||
if (_binding?.searchRecycler?.canScrollVertically(1) == false &&
|
||||
if (isAdded && !binding.searchRecycler.canScrollVertically(1) &&
|
||||
nextPage != null
|
||||
) {
|
||||
fetchNextSearchItems()
|
||||
@ -85,11 +74,6 @@ class SearchResultFragment : BaseFragment() {
|
||||
}
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
_binding = null
|
||||
}
|
||||
|
||||
private fun fetchSearch() {
|
||||
lifecycleScope.launchWhenCreated {
|
||||
view?.let { context?.hideKeyboard(it) }
|
||||
|
@ -20,6 +20,7 @@ room = "2.5.0"
|
||||
kotlinxSerialization = "1.4.1"
|
||||
kotlinxDatetime = "0.4.0"
|
||||
kotlinxRetrofit = "0.8.0"
|
||||
viewBindingDelegate = "1.5.8"
|
||||
|
||||
[libraries]
|
||||
androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
|
||||
@ -50,4 +51,5 @@ room = { group = "androidx.room", name="room-ktx", version.ref = "room" }
|
||||
room-compiler = { group = "androidx.room", name = "room-compiler", version.ref = "room" }
|
||||
kotlinx-serialization = { group = "org.jetbrains.kotlinx", name = "kotlinx-serialization-json", version.ref = "kotlinxSerialization" }
|
||||
kotlinx-datetime = { group = "org.jetbrains.kotlinx", name = "kotlinx-datetime", version.ref = "kotlinxDatetime" }
|
||||
kotlinx-serialization-retrofit = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "kotlinxRetrofit" }
|
||||
kotlinx-serialization-retrofit = { group = "com.jakewharton.retrofit", name = "retrofit2-kotlinx-serialization-converter", version.ref = "kotlinxRetrofit" }
|
||||
viewBindingPropertyDelegate = { group = "com.github.kirich1409", name = "viewbindingpropertydelegate-noreflection", version.ref = "viewBindingDelegate" }
|
Loading…
x
Reference in New Issue
Block a user