Replace LiveData with StateFlow
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user