extension filtering

This commit is contained in:
rebelonion 2024-02-03 04:27:16 -06:00
parent d3f097f675
commit 97ed84127e
10 changed files with 39 additions and 3 deletions

View file

@ -71,6 +71,10 @@ class AnimeExtensionsFragment : Fragment(),
viewModel.setSearchQuery(query ?: "")
}
override fun notifyDataChanged() {
viewModel.invalidatePager()
}
override fun onInstallClick(pkg: AnimeExtension.Available) {
val context = requireContext()
if (isAdded) {

View file

@ -7,6 +7,7 @@ import android.os.Build.VERSION.*
import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.View
import android.view.ViewGroup
import android.widget.AutoCompleteTextView
import androidx.appcompat.app.AppCompatActivity
@ -64,6 +65,8 @@ class ExtensionsActivity : AppCompatActivity() {
searchView.setText("")
searchView.clearFocus()
tabLayout.clearFocus()
if (tab.text?.contains("Installed") == true) binding.languageselect.visibility = View.GONE
else binding.languageselect.visibility = View.VISIBLE
viewPager.updateLayoutParams<ViewGroup.LayoutParams> {
height = ViewGroup.LayoutParams.MATCH_PARENT
}
@ -123,6 +126,11 @@ class ExtensionsActivity : AppCompatActivity() {
builder.setTitle("Language")
builder.setSingleChoiceItems(languageOptions, index){ dialog, i ->
PrefManager.setVal(PrefName.LangSort, LanguageMapper.Companion.Language.entries[i].code)
val currentFragment =
supportFragmentManager.findFragmentByTag("f${viewPager.currentItem}")
if (currentFragment is SearchQueryHandler) {
currentFragment.notifyDataChanged()
}
dialog.dismiss()
}
val dialog = builder.show()
@ -140,4 +148,5 @@ class ExtensionsActivity : AppCompatActivity() {
interface SearchQueryHandler {
fun updateContentBasedOnQuery(query: String?)
fun notifyDataChanged()
}

View file

@ -248,6 +248,9 @@ class InstalledAnimeExtensionsFragment : Fragment(), SearchQueryHandler {
extensionsAdapter.filter(query ?: "", animeExtensionManager.installedExtensionsFlow.value)
}
override fun notifyDataChanged() { // Do nothing
}
private class AnimeExtensionsAdapter(
private val onSettingsClicked: (AnimeExtension.Installed) -> Unit,
private val onUninstallClicked: (AnimeExtension.Installed, Boolean) -> Unit,

View file

@ -243,6 +243,9 @@ class InstalledMangaExtensionsFragment : Fragment(), SearchQueryHandler {
extensionsAdapter.filter(query ?: "", mangaExtensionManager.installedExtensionsFlow.value)
}
override fun notifyDataChanged() { // Do nothing
}
private class MangaExtensionsAdapter(
private val onSettingsClicked: (MangaExtension.Installed) -> Unit,
private val onUninstallClicked: (MangaExtension.Installed, Boolean) -> Unit,

View file

@ -130,6 +130,9 @@ class InstalledNovelExtensionsFragment : Fragment(), SearchQueryHandler {
extensionsAdapter.filter(query ?: "", novelExtensionManager.installedExtensionsFlow.value)
}
override fun notifyDataChanged() { // do nothing
}
private class NovelExtensionsAdapter(
private val onSettingsClicked: (NovelExtension.Installed) -> Unit,
private val onUninstallClicked: (NovelExtension.Installed, Boolean) -> Unit,

View file

@ -72,6 +72,10 @@ class MangaExtensionsFragment : Fragment(),
viewModel.setSearchQuery(query ?: "")
}
override fun notifyDataChanged() {
viewModel.invalidatePager()
}
override fun onInstallClick(pkg: MangaExtension.Available) {
if (isAdded) { // Check if the fragment is currently added to its activity
val context = requireContext()

View file

@ -73,6 +73,10 @@ class NovelExtensionsFragment : Fragment(),
viewModel.setSearchQuery(query ?: "")
}
override fun notifyDataChanged() {
viewModel.invalidatePager()
}
override fun onInstallClick(pkg: NovelExtension.Available) {
if (isAdded) { // Check if the fragment is currently added to its activity
val context = requireContext()

View file

@ -76,7 +76,9 @@ class AnimeExtensionsViewModel(
prefetchDistance = 15
)
) {
AnimeExtensionPagingSource(available, installed, query)
val aEPS = AnimeExtensionPagingSource(available, installed, query)
currentPagingSource = aEPS
aEPS
}.flow
}.cachedIn(viewModelScope)
}

View file

@ -75,7 +75,9 @@ class MangaExtensionsViewModel(
prefetchDistance = 15
)
) {
MangaExtensionPagingSource(available, installed, query)
val mEPS = MangaExtensionPagingSource(available, installed, query)
currentPagingSource = mEPS
mEPS
}.flow
}.cachedIn(viewModelScope)
}

View file

@ -76,7 +76,9 @@ class NovelExtensionsViewModel(
prefetchDistance = 15
)
) {
NovelExtensionPagingSource(available, installed, query)
val nEPS = NovelExtensionPagingSource(available, installed, query)
currentPagingSource = nEPS
nEPS
}.flow
}.cachedIn(viewModelScope)
}