Remember search mode

This commit is contained in:
Koitharu
2022-03-17 15:32:32 +02:00
parent 996f8f0f2e
commit 4913332444
3 changed files with 12 additions and 2 deletions

View File

@@ -150,6 +150,10 @@ class AppSettings(context: Context) {
val isSuggestionsExcludeNsfw: Boolean val isSuggestionsExcludeNsfw: Boolean
get() = prefs.getBoolean(KEY_SUGGESTIONS_EXCLUDE_NSFW, false) get() = prefs.getBoolean(KEY_SUGGESTIONS_EXCLUDE_NSFW, false)
var isSearchSingleSource: Boolean
get() = prefs.getBoolean(KEY_SEARCH_SINGLE_SOURCE, false)
set(value) = prefs.edit { putBoolean(KEY_SEARCH_SINGLE_SOURCE, value) }
fun isPagesPreloadAllowed(cm: ConnectivityManager): Boolean { fun isPagesPreloadAllowed(cm: ConnectivityManager): Boolean {
return when (prefs.getString(KEY_PAGES_PRELOAD, null)?.toIntOrNull()) { return when (prefs.getString(KEY_PAGES_PRELOAD, null)?.toIntOrNull()) {
NETWORK_ALWAYS -> true NETWORK_ALWAYS -> true
@@ -247,6 +251,7 @@ class AppSettings(context: Context) {
const val KEY_PAGES_PRELOAD = "pages_preload" const val KEY_PAGES_PRELOAD = "pages_preload"
const val KEY_SUGGESTIONS = "suggestions" const val KEY_SUGGESTIONS = "suggestions"
const val KEY_SUGGESTIONS_EXCLUDE_NSFW = "suggestions_exclude_nsfw" const val KEY_SUGGESTIONS_EXCLUDE_NSFW = "suggestions_exclude_nsfw"
const val KEY_SEARCH_SINGLE_SOURCE = "search_single_source"
// About // About
const val KEY_APP_UPDATE = "app_update" const val KEY_APP_UPDATE = "app_update"

View File

@@ -23,5 +23,5 @@ val searchModule
viewModel { query -> viewModel { query ->
GlobalSearchViewModel(query.get(), get(), get()) GlobalSearchViewModel(query.get(), get(), get())
} }
viewModel { SearchSuggestionViewModel(get()) } viewModel { SearchSuggestionViewModel(get(), get()) }
} }

View File

@@ -6,6 +6,7 @@ import kotlinx.coroutines.*
import kotlinx.coroutines.flow.* import kotlinx.coroutines.flow.*
import org.koitharu.kotatsu.base.ui.BaseViewModel import org.koitharu.kotatsu.base.ui.BaseViewModel
import org.koitharu.kotatsu.base.ui.widgets.ChipsView import org.koitharu.kotatsu.base.ui.widgets.ChipsView
import org.koitharu.kotatsu.core.prefs.AppSettings
import org.koitharu.kotatsu.parsers.model.MangaSource import org.koitharu.kotatsu.parsers.model.MangaSource
import org.koitharu.kotatsu.parsers.model.MangaTag import org.koitharu.kotatsu.parsers.model.MangaTag
import org.koitharu.kotatsu.search.domain.MangaSearchRepository import org.koitharu.kotatsu.search.domain.MangaSearchRepository
@@ -18,17 +19,21 @@ private const val MAX_TAGS_ITEMS = 8
class SearchSuggestionViewModel( class SearchSuggestionViewModel(
private val repository: MangaSearchRepository, private val repository: MangaSearchRepository,
private val settings: AppSettings,
) : BaseViewModel() { ) : BaseViewModel() {
private val query = MutableStateFlow("") private val query = MutableStateFlow("")
private val source = MutableStateFlow<MangaSource?>(null) private val source = MutableStateFlow<MangaSource?>(null)
private val isLocalSearch = MutableStateFlow(false) private val isLocalSearch = MutableStateFlow(settings.isSearchSingleSource)
private var suggestionJob: Job? = null private var suggestionJob: Job? = null
val suggestion = MutableLiveData<List<SearchSuggestionItem>>() val suggestion = MutableLiveData<List<SearchSuggestionItem>>()
init { init {
setupSuggestion() setupSuggestion()
isLocalSearch.onEach {
settings.isSearchSingleSource = it
}.launchIn(viewModelScope)
} }
fun onQueryChanged(newQuery: String) { fun onQueryChanged(newQuery: String) {