Skip to content
This repository was archived by the owner on Oct 2, 2022. It is now read-only.

Commit 5c5caf7

Browse files
committed
Fix filter sub and quality features to follow code structure from upstream.
1 parent eb5ee4e commit 5c5caf7

5 files changed

Lines changed: 62 additions & 42 deletions

File tree

app/src/main/java/com/lagradost/cloudstream3/MainAPI.kt

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,6 +402,47 @@ object APIHolder {
402402
)
403403
}
404404
}
405+
fun Context.filterSearchResultByFilmQuality(data: List<SearchResponse>): List<SearchResponse> {
406+
// Filter results omitting entries with certain quality
407+
if (data.isNotEmpty()) {
408+
val filteredSearchQuality = PreferenceManager.getDefaultSharedPreferences(this)
409+
?.getStringSet(getString(R.string.pref_filter_search_quality_key), setOf())
410+
?.mapNotNull { entry ->
411+
entry.toIntOrNull() ?: return@mapNotNull null
412+
} ?: listOf()
413+
if (filteredSearchQuality.isNotEmpty()) {
414+
return data.filter { item ->
415+
val searchQualVal = item.quality?.ordinal ?: -1
416+
//Log.i("filterSearch", "QuickSearch item => ${item.toJson()}")
417+
!filteredSearchQuality.contains(searchQualVal)
418+
}
419+
}
420+
}
421+
return data
422+
}
423+
424+
fun Context.filterHomePageListByFilmQuality(data: HomePageList): HomePageList {
425+
// Filter results omitting entries with certain quality
426+
if (data.list.isNotEmpty()) {
427+
val filteredSearchQuality = PreferenceManager.getDefaultSharedPreferences(this)
428+
?.getStringSet(getString(R.string.pref_filter_search_quality_key), setOf())
429+
?.mapNotNull { entry ->
430+
entry.toIntOrNull() ?: return@mapNotNull null
431+
} ?: listOf()
432+
if (filteredSearchQuality.isNotEmpty()) {
433+
return HomePageList(
434+
name = data.name,
435+
isHorizontalImages = data.isHorizontalImages,
436+
list = data.list.filter { item ->
437+
val searchQualVal = item.quality?.ordinal ?: -1
438+
//Log.i("filterSearch", "QuickSearch item => ${item.toJson()}")
439+
!filteredSearchQuality.contains(searchQualVal)
440+
}
441+
)
442+
}
443+
}
444+
return data
445+
}
405446
}
406447

407448

app/src/main/java/com/lagradost/cloudstream3/ui/home/HomeViewModel.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,9 @@ import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
77
import com.lagradost.cloudstream3.APIHolder.apis
8+
import com.lagradost.cloudstream3.APIHolder.filterHomePageListByFilmQuality
89
import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia
10+
import com.lagradost.cloudstream3.APIHolder.filterSearchResultByFilmQuality
911
import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull
1012
import com.lagradost.cloudstream3.AcraApplication.Companion.context
1113
import com.lagradost.cloudstream3.AcraApplication.Companion.getKey
@@ -225,8 +227,9 @@ class HomeViewModel : ViewModel() {
225227
expandable.clear()
226228
data.value.forEach { home ->
227229
home?.items?.forEach { list ->
230+
val filteredList = context?.filterHomePageListByFilmQuality(list) ?: list
228231
expandable[list.name] =
229-
ExpandableHomepageList(list, 1, home.hasNext)
232+
ExpandableHomepageList(filteredList, 1, home.hasNext)
230233
}
231234
}
232235
_page.postValue(Resource.Success(expandable))
@@ -241,7 +244,7 @@ class HomeViewModel : ViewModel() {
241244
.toList()
242245

243246
if (currentList.isNotEmpty()) {
244-
val randomItems = currentList.shuffled()
247+
val randomItems = context?.filterSearchResultByFilmQuality(currentList.shuffled()) ?: currentList.shuffled()
245248

246249
_randomItems.postValue(randomItems)
247250
}

app/src/main/java/com/lagradost/cloudstream3/ui/quicksearch/QuickSearchFragment.kt

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,9 @@ import androidx.core.view.isGone
1414
import androidx.core.view.isVisible
1515
import androidx.fragment.app.Fragment
1616
import androidx.lifecycle.ViewModelProvider
17-
import androidx.preference.PreferenceManager
1817
import androidx.recyclerview.widget.GridLayoutManager
1918
import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia
19+
import com.lagradost.cloudstream3.APIHolder.filterSearchResultByFilmQuality
2020
import com.lagradost.cloudstream3.APIHolder.getApiFromNameNull
2121
import com.lagradost.cloudstream3.HomePageList
2222
import com.lagradost.cloudstream3.R
@@ -70,7 +70,6 @@ class QuickSearchFragment : Fragment() {
7070

7171
private var providers: Set<String>? = null
7272
private lateinit var searchViewModel: SearchViewModel
73-
private var filteredSearchQuality = listOf<Int>()
7473

7574
override fun onCreateView(
7675
inflater: LayoutInflater,
@@ -81,14 +80,7 @@ class QuickSearchFragment : Fragment() {
8180
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
8281
)
8382
searchViewModel = ViewModelProvider(this)[SearchViewModel::class.java]
84-
context?.let { ctx ->
85-
filteredSearchQuality = PreferenceManager.getDefaultSharedPreferences(ctx)
86-
?.getStringSet(getString(R.string.pref_filter_search_quality_key), setOf())
87-
?.mapNotNull { entry ->
88-
entry.toIntOrNull() ?: return@mapNotNull null
89-
} ?: listOf()
90-
//Log.i("qualFilter", "QuickSearch filterList => ${filteredSearchQuality.toJson()}")
91-
}
83+
9284
return inflater.inflate(R.layout.quick_search, container, false)
9385
}
9486

@@ -225,11 +217,7 @@ class QuickSearchFragment : Fragment() {
225217
println("DATA: $data")
226218
//Log.i("ApiError", "QuickSearch filterList => ${filteredSearchQuality.toJson()}")
227219
(quick_search_autofit_results?.adapter as? SearchAdapter?)?.updateList(
228-
data.filter { item ->
229-
val searchQualVal = item.quality?.ordinal ?: -1
230-
//Log.i("ApiError", "QuickSearch item => ${item.toJson()}")
231-
!filteredSearchQuality.contains(searchQualVal)
232-
}
220+
context?.filterSearchResultByFilmQuality(data) ?: data
233221
)
234222
}
235223
searchExitIcon?.alpha = 1f

app/src/main/java/com/lagradost/cloudstream3/ui/search/SearchFragment.kt

Lines changed: 6 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import com.google.android.material.bottomsheet.BottomSheetDialog
2121
import com.google.android.material.button.MaterialButton
2222
import com.lagradost.cloudstream3.*
2323
import com.lagradost.cloudstream3.APIHolder.filterProviderByPreferredMedia
24+
import com.lagradost.cloudstream3.APIHolder.filterSearchResultByFilmQuality
2425
import com.lagradost.cloudstream3.APIHolder.getApiFromName
2526
import com.lagradost.cloudstream3.APIHolder.getApiProviderLangSettings
2627
import com.lagradost.cloudstream3.APIHolder.getApiSettings
@@ -64,7 +65,6 @@ class SearchFragment : Fragment() {
6465
}
6566

6667
private val searchViewModel: SearchViewModel by activityViewModels()
67-
private var filteredSearchQuality = listOf<Int>()
6868

6969
override fun onCreateView(
7070
inflater: LayoutInflater,
@@ -74,14 +74,7 @@ class SearchFragment : Fragment() {
7474
activity?.window?.setSoftInputMode(
7575
WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE
7676
)
77-
context?.let { ctx ->
78-
filteredSearchQuality = PreferenceManager.getDefaultSharedPreferences(ctx)
79-
?.getStringSet(getString(R.string.pref_filter_search_quality_key), setOf())
80-
?.mapNotNull { entry ->
81-
entry.toIntOrNull() ?: return@mapNotNull null
82-
} ?: listOf()
83-
//Log.i("qualFilter", "Search filterList => ${filteredSearchQuality.toJson()}")
84-
}
77+
8578
return inflater.inflate(R.layout.fragment_search, container, false)
8679
}
8780

@@ -411,12 +404,7 @@ class SearchFragment : Fragment() {
411404
is Resource.Success -> {
412405
it.value.let { data ->
413406
if (data.isNotEmpty()) {
414-
(search_autofit_results?.adapter as SearchAdapter?)?.updateList(
415-
data.filter { item ->
416-
val searchQualVal = item.quality?.ordinal ?: -1
417-
!filteredSearchQuality.contains(searchQualVal)
418-
}
419-
)
407+
(search_autofit_results?.adapter as SearchAdapter?)?.updateList(data)
420408
}
421409
}
422410
searchExitIcon.alpha = 1f
@@ -441,16 +429,11 @@ class SearchFragment : Fragment() {
441429
listLock.lock()
442430
(search_master_recycler?.adapter as ParentItemAdapter?)?.apply {
443431
val newItems = list.map { ongoing ->
432+
val dataList = if (ongoing.data is Resource.Success) ongoing.data.value else ArrayList()
433+
val dataListFiltered = context?.filterSearchResultByFilmQuality(dataList) ?: dataList
444434
val ongoingList = HomePageList(
445435
ongoing.apiName,
446-
if (ongoing.data is Resource.Success) {
447-
ongoing.data.value.filter { item ->
448-
val searchQualVal = item.quality?.ordinal ?: -1
449-
!filteredSearchQuality.contains(searchQualVal)
450-
}
451-
} else {
452-
ArrayList()
453-
}
436+
dataListFiltered
454437
)
455438
ongoingList
456439
}

app/src/main/java/com/lagradost/cloudstream3/ui/subtitles/SubtitlesFragment.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -409,10 +409,15 @@ class SubtitlesFragment : Fragment() {
409409
subtitles_remove_captions?.setOnCheckedChangeListener { _, b ->
410410
state.removeCaptions = b
411411
}
412+
//Fetch current value from preference
413+
context?.let { ctx ->
414+
subtitles_filter_sub_lang?.isChecked = PreferenceManager.getDefaultSharedPreferences(ctx)
415+
.getBoolean(getString(R.string.filter_sub_lang_key), false)
416+
}
412417
subtitles_filter_sub_lang?.setOnCheckedChangeListener { _, b ->
413418
context?.let { ctx ->
414-
val settingsManager = PreferenceManager.getDefaultSharedPreferences(ctx)
415-
settingsManager.edit()
419+
PreferenceManager.getDefaultSharedPreferences(ctx)
420+
.edit()
416421
.putBoolean(getString(R.string.filter_sub_lang_key), b)
417422
.apply()
418423
}

0 commit comments

Comments
 (0)