mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-28 18:07:07 +02:00
Moves account saving from StateViewModel to Account
This commit is contained in:
@@ -24,6 +24,7 @@ import android.util.Log
|
|||||||
import androidx.compose.runtime.Stable
|
import androidx.compose.runtime.Stable
|
||||||
import com.vitorpamplona.amethyst.Amethyst
|
import com.vitorpamplona.amethyst.Amethyst
|
||||||
import com.vitorpamplona.amethyst.BuildConfig
|
import com.vitorpamplona.amethyst.BuildConfig
|
||||||
|
import com.vitorpamplona.amethyst.LocalPreferences
|
||||||
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
import com.vitorpamplona.amethyst.commons.richtext.RichTextParser
|
||||||
import com.vitorpamplona.amethyst.logTime
|
import com.vitorpamplona.amethyst.logTime
|
||||||
import com.vitorpamplona.amethyst.model.edits.PrivateStorageRelayListDecryptionCache
|
import com.vitorpamplona.amethyst.model.edits.PrivateStorageRelayListDecryptionCache
|
||||||
@@ -209,6 +210,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.SharingStarted
|
import kotlinx.coroutines.flow.SharingStarted
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
import kotlinx.coroutines.flow.debounce
|
||||||
import kotlinx.coroutines.flow.flowOn
|
import kotlinx.coroutines.flow.flowOn
|
||||||
import kotlinx.coroutines.flow.stateIn
|
import kotlinx.coroutines.flow.stateIn
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
@@ -1797,5 +1799,13 @@ class Account(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
scope.launch(Dispatchers.IO) {
|
||||||
|
settings.saveable.debounce(1000).collect {
|
||||||
|
if (it.accountSettings != null) {
|
||||||
|
LocalPreferences.saveToEncryptedStorage(it.accountSettings)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -67,11 +67,9 @@ import kotlinx.coroutines.DelicateCoroutinesApi
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.FlowPreview
|
import kotlinx.coroutines.FlowPreview
|
||||||
import kotlinx.coroutines.GlobalScope
|
import kotlinx.coroutines.GlobalScope
|
||||||
import kotlinx.coroutines.Job
|
|
||||||
import kotlinx.coroutines.delay
|
import kotlinx.coroutines.delay
|
||||||
import kotlinx.coroutines.flow.MutableStateFlow
|
import kotlinx.coroutines.flow.MutableStateFlow
|
||||||
import kotlinx.coroutines.flow.asStateFlow
|
import kotlinx.coroutines.flow.asStateFlow
|
||||||
import kotlinx.coroutines.flow.debounce
|
|
||||||
import kotlinx.coroutines.flow.update
|
import kotlinx.coroutines.flow.update
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
@@ -84,8 +82,6 @@ class AccountStateViewModel : ViewModel() {
|
|||||||
private val _accountContent = MutableStateFlow<AccountState>(AccountState.Loading)
|
private val _accountContent = MutableStateFlow<AccountState>(AccountState.Loading)
|
||||||
val accountContent = _accountContent.asStateFlow()
|
val accountContent = _accountContent.asStateFlow()
|
||||||
|
|
||||||
private var collectorJob: Job? = null
|
|
||||||
|
|
||||||
fun loginWithDefaultAccountIfLoggedOff() {
|
fun loginWithDefaultAccountIfLoggedOff() {
|
||||||
// pulls account from storage.
|
// pulls account from storage.
|
||||||
if (_accountContent.value !is AccountState.LoggedIn) {
|
if (_accountContent.value !is AccountState.LoggedIn) {
|
||||||
@@ -187,22 +183,11 @@ class AccountStateViewModel : ViewModel() {
|
|||||||
_accountContent.update {
|
_accountContent.update {
|
||||||
AccountState.LoggedIn(Amethyst.instance.accountsCache.loadAccount(accountSettings), route)
|
AccountState.LoggedIn(Amethyst.instance.accountsCache.loadAccount(accountSettings), route)
|
||||||
}
|
}
|
||||||
|
|
||||||
collectorJob?.cancel()
|
|
||||||
collectorJob =
|
|
||||||
viewModelScope.launch(Dispatchers.IO) {
|
|
||||||
accountSettings.saveable.debounce(1000).collect {
|
|
||||||
if (it.accountSettings != null) {
|
|
||||||
LocalPreferences.saveToEncryptedStorage(it.accountSettings)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun prepareLogoutOrSwitch() =
|
private fun prepareLogoutOrSwitch() =
|
||||||
when (val state = _accountContent.value) {
|
when (val state = _accountContent.value) {
|
||||||
is AccountState.LoggedIn -> {
|
is AccountState.LoggedIn -> {
|
||||||
collectorJob?.cancel()
|
|
||||||
state.currentViewModelStore.viewModelStore.clear()
|
state.currentViewModelStore.viewModelStore.clear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user