ref: v3.3.0
app/src/main/java/xyz/apiote/bimba/czwek/dashboard/ui/home/HomeViewModel.kt
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
// SPDX-FileCopyrightText: Adam Evyčędo // // SPDX-License-Identifier: GPL-3.0-or-later package xyz.apiote.bimba.czwek.dashboard.ui.home import android.content.Context import android.os.Handler import android.os.Looper import android.text.Editable import android.text.TextWatcher import android.util.Log import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import kotlinx.coroutines.launch import xyz.apiote.bimba.czwek.repo.FeedInfo import xyz.apiote.bimba.czwek.repo.OfflineRepository import xyz.apiote.bimba.czwek.repo.OnlineRepository import xyz.apiote.bimba.czwek.repo.Queryable import xyz.apiote.bimba.czwek.repo.TrafficResponseException import xyz.apiote.bimba.czwek.settings.feeds.FeedsSettings class HomeViewModel : ViewModel() { private val mutableQueryables = MutableLiveData<List<Queryable>>() val queryables: LiveData<List<Queryable>> = mutableQueryables var feeds: Map<String, FeedInfo>? = null var feedsSettings: FeedsSettings? = null fun getQueryables(query: String, context: Context) { viewModelScope.launch { try { getFeeds(context) mutableQueryables.value = OnlineRepository().queryQueryables(query, context) ?: emptyList() } catch (e: TrafficResponseException) { // xxx intentionally no error showing in suggestions Log.e("Suggestion", "$e") } } } private suspend fun getFeeds(context: Context) { feeds = OfflineRepository().getFeeds(context) feedsSettings = FeedsSettings.load(context) } inner class SearchBarWatcher(private val context: Context) : TextWatcher { private val handler = Handler(Looper.getMainLooper()) private var workRunnable = Runnable {} override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { } override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { } override fun afterTextChanged(s: Editable?) { handler.removeCallbacks(workRunnable) workRunnable = Runnable { val text = s.toString() getQueryables(text, context) } handler.postDelayed(workRunnable, 750) } } } |