Replace LiveData with StateFlow

This commit is contained in:
Koitharu
2023-05-27 12:25:49 +03:00
parent 47f346b42c
commit 5a0c54e00f
147 changed files with 1047 additions and 1039 deletions

View File

@@ -22,6 +22,8 @@ import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.BaseActivity
import org.koitharu.kotatsu.core.util.ext.getDisplayMessage
import org.koitharu.kotatsu.core.util.ext.getParcelableExtraCompat
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.databinding.ActivitySyncAuthBinding
import org.koitharu.kotatsu.sync.data.SyncSettings
import org.koitharu.kotatsu.sync.domain.SyncAuthResult
@@ -52,8 +54,8 @@ class SyncAuthActivity : BaseActivity<ActivitySyncAuthBinding>(), View.OnClickLi
onBackPressedDispatcher.addCallback(pageBackCallback)
viewModel.onTokenObtained.observe(this, ::onTokenReceived)
viewModel.onError.observe(this, ::onError)
viewModel.onTokenObtained.observeEvent(this, ::onTokenReceived)
viewModel.onError.observeEvent(this, ::onError)
viewModel.isLoading.observe(this, ::onLoadingStateChanged)
viewModel.onAccountAlreadyExists.observe(this) {
onAccountAlreadyExists()

View File

@@ -2,13 +2,14 @@ package org.koitharu.kotatsu.sync.ui
import android.accounts.AccountManager
import android.content.Context
import androidx.lifecycle.MutableLiveData
import dagger.hilt.android.lifecycle.HiltViewModel
import dagger.hilt.android.qualifiers.ApplicationContext
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.MutableStateFlow
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.BaseViewModel
import org.koitharu.kotatsu.core.util.SingleLiveEvent
import org.koitharu.kotatsu.core.util.ext.MutableEventFlow
import org.koitharu.kotatsu.core.util.ext.call
import org.koitharu.kotatsu.core.util.ext.ifNullOrEmpty
import org.koitharu.kotatsu.sync.data.SyncAuthApi
import org.koitharu.kotatsu.sync.domain.SyncAuthResult
@@ -20,9 +21,9 @@ class SyncAuthViewModel @Inject constructor(
private val api: SyncAuthApi,
) : BaseViewModel() {
val onAccountAlreadyExists = SingleLiveEvent<Unit>()
val onTokenObtained = SingleLiveEvent<SyncAuthResult>()
val host = MutableLiveData("")
val onAccountAlreadyExists = MutableEventFlow<Unit>()
val onTokenObtained = MutableEventFlow<SyncAuthResult>()
val host = MutableStateFlow("")
private val defaultHost = context.getString(R.string.sync_host_default)
@@ -31,7 +32,7 @@ class SyncAuthViewModel @Inject constructor(
val am = AccountManager.get(context)
val accounts = am.getAccountsByType(context.getString(R.string.account_type_sync))
if (accounts.isNotEmpty()) {
onAccountAlreadyExists.emitCall(Unit)
onAccountAlreadyExists.call(Unit)
}
}
}
@@ -40,8 +41,8 @@ class SyncAuthViewModel @Inject constructor(
val hostValue = host.value.ifNullOrEmpty { defaultHost }
launchLoadingJob(Dispatchers.Default) {
val token = api.authenticate(hostValue, email, password)
val result = SyncAuthResult(host.value.orEmpty(), email, password, token)
onTokenObtained.emitCall(result)
val result = SyncAuthResult(host.value, email, password, token)
onTokenObtained.call(result)
}
}
}