Merge pull request #3053 from Isira-Seneviratne/Search_binding

Use view binding extensions in the search fragments.
This commit is contained in:
Bnyro 2023-02-13 15:44:02 +01:00 committed by GitHub
commit 582ab70bd1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 16 additions and 45 deletions

View File

@ -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
}
}
}

View File

@ -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) }