1
0
Fork 0
mirror of https://github.com/MatomoCamp/matomocamp-companion-android.git synced 2024-09-19 16:13:46 +02:00

Remove SavedStateHandle implementation

Restore ViewModel state manually from View state instead
+ upgrade various libraries.
This commit is contained in:
Christophe Beyls 2022-01-21 10:32:47 +01:00 committed by GitHub
parent ace3e53bf4
commit a6e65aee19
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 17 additions and 18 deletions

View file

@ -100,7 +100,7 @@ afterEvaluate {
dependencies {
def lifecycle_version = "2.4.0"
def room_version = "2.4.0"
def room_version = "2.4.1"
def okhttp_version = "3.12.13"
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.5'
@ -110,10 +110,11 @@ dependencies {
kapt "com.google.dagger:hilt-compiler:$hilt_version"
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.6.0'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.activity:activity-ktx:1.4.0'
implementation 'androidx.fragment:fragment-ktx:1.4.0'
implementation 'androidx.appcompat:appcompat:1.4.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.4.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.2.0'
implementation 'androidx.recyclerview:recyclerview:1.2.1'
implementation 'androidx.viewpager2:viewpager2:1.1.0-beta01'
implementation 'androidx.drawerlayout:drawerlayout:1.1.1'

View file

@ -51,7 +51,7 @@ class SearchResultActivity : AppCompatActivity(R.layout.search_result) {
.sample(SEARCH_INPUT_SAMPLE_MILLIS)
.onEach {
// only update the results every SEARCH_INPUT_SAMPLE_MILLIS
viewModel.query = it?.toString().orEmpty()
viewModel.setQuery(it?.toString().orEmpty())
}
.launchIn(lifecycleScope)
@ -63,11 +63,14 @@ class SearchResultActivity : AppCompatActivity(R.layout.search_result) {
supportFragmentManager.commit { add<SearchResultListFragment>(R.id.content) }
handleIntent(intent)
searchEditText.requestFocus()
} else {
searchEditText.setText(viewModel.query)
}
}
override fun onRestoreInstanceState(savedInstanceState: Bundle) {
super.onRestoreInstanceState(savedInstanceState)
viewModel.setQuery(searchEditText.text?.toString().orEmpty())
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntent(intent)
@ -79,7 +82,7 @@ class SearchResultActivity : AppCompatActivity(R.layout.search_result) {
?.trimNonAlpha().orEmpty()
else -> ""
}
viewModel.query = query
viewModel.setQuery(query)
searchEditText.setText(query)
}

View file

@ -2,7 +2,6 @@ package be.digitalia.fosdem.viewmodels
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.map
import androidx.lifecycle.switchMap
@ -14,9 +13,9 @@ import dagger.hilt.android.lifecycle.HiltViewModel
import javax.inject.Inject
@HiltViewModel
class SearchViewModel @Inject constructor(scheduleDao: ScheduleDao, private val state: SavedStateHandle) : ViewModel() {
class SearchViewModel @Inject constructor(scheduleDao: ScheduleDao) : ViewModel() {
private val queryLiveData: LiveData<String> = state.getLiveData(STATE_QUERY)
private val queryLiveData = MutableLiveData<String>()
sealed class Result {
object QueryTooShort : Result()
@ -33,16 +32,13 @@ class SearchViewModel @Inject constructor(scheduleDao: ScheduleDao, private val
}
}
var query: String
get() = queryLiveData.value.orEmpty()
set(value) {
if (value != queryLiveData.value) {
state[STATE_QUERY] = value
}
fun setQuery(query: String) {
if (query != queryLiveData.value) {
queryLiveData.value = query
}
}
companion object {
private const val SEARCH_QUERY_MIN_LENGTH = 3
private const val STATE_QUERY = "query"
}
}

View file

@ -28,7 +28,6 @@
android:hint="@string/search_hint"
android:imeOptions="actionSearch"
android:inputType="text"
android:saveEnabled="false"
android:singleLine="true" />
<ImageView