Login and Logout already in IO threads
This commit is contained in:
@@ -33,7 +33,7 @@ class AccountStateViewModel() : ViewModel() {
|
|||||||
|
|
||||||
fun tryLoginExistingAccountAsync() {
|
fun tryLoginExistingAccountAsync() {
|
||||||
// pulls account from storage.
|
// pulls account from storage.
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
tryLoginExistingAccount()
|
tryLoginExistingAccount()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -124,7 +124,7 @@ class AccountStateViewModel() : ViewModel() {
|
|||||||
loginWithExternalSigner: Boolean = false,
|
loginWithExternalSigner: Boolean = false,
|
||||||
onError: () -> Unit
|
onError: () -> Unit
|
||||||
) {
|
) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
try {
|
try {
|
||||||
loginAndStartUI(key, useProxy, proxyPort, loginWithExternalSigner)
|
loginAndStartUI(key, useProxy, proxyPort, loginWithExternalSigner)
|
||||||
} catch (e: Exception) {
|
} catch (e: Exception) {
|
||||||
@@ -135,7 +135,7 @@ class AccountStateViewModel() : ViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun newKey(useProxy: Boolean, proxyPort: Int) {
|
fun newKey(useProxy: Boolean, proxyPort: Int) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
val proxy = HttpClient.initProxy(useProxy, "127.0.0.1", proxyPort)
|
val proxy = HttpClient.initProxy(useProxy, "127.0.0.1", proxyPort)
|
||||||
val account = Account(KeyPair(), proxy = proxy, proxyPort = proxyPort)
|
val account = Account(KeyPair(), proxy = proxy, proxyPort = proxyPort)
|
||||||
// saves to local preferences
|
// saves to local preferences
|
||||||
@@ -145,7 +145,7 @@ class AccountStateViewModel() : ViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun switchUser(accountInfo: AccountInfo) {
|
fun switchUser(accountInfo: AccountInfo) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
prepareLogoutOrSwitch()
|
prepareLogoutOrSwitch()
|
||||||
LocalPreferences.switchToAccount(accountInfo)
|
LocalPreferences.switchToAccount(accountInfo)
|
||||||
tryLoginExistingAccount()
|
tryLoginExistingAccount()
|
||||||
@@ -153,7 +153,7 @@ class AccountStateViewModel() : ViewModel() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun logOff(accountInfo: AccountInfo) {
|
fun logOff(accountInfo: AccountInfo) {
|
||||||
viewModelScope.launch {
|
viewModelScope.launch(Dispatchers.IO) {
|
||||||
prepareLogoutOrSwitch()
|
prepareLogoutOrSwitch()
|
||||||
LocalPreferences.updatePrefsForLogout(accountInfo)
|
LocalPreferences.updatePrefsForLogout(accountInfo)
|
||||||
tryLoginExistingAccount()
|
tryLoginExistingAccount()
|
||||||
|
|||||||
@@ -5,7 +5,6 @@ import androidx.compose.animation.core.tween
|
|||||||
import androidx.compose.foundation.ExperimentalFoundationApi
|
import androidx.compose.foundation.ExperimentalFoundationApi
|
||||||
import androidx.compose.foundation.layout.Box
|
import androidx.compose.foundation.layout.Box
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.PaddingValues
|
|
||||||
import androidx.compose.foundation.layout.Row
|
import androidx.compose.foundation.layout.Row
|
||||||
import androidx.compose.foundation.layout.fillMaxSize
|
import androidx.compose.foundation.layout.fillMaxSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
@@ -26,7 +25,6 @@ import androidx.compose.runtime.setValue
|
|||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.graphics.Color
|
import androidx.compose.ui.graphics.Color
|
||||||
import androidx.compose.ui.unit.dp
|
|
||||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||||
import com.vitorpamplona.amethyst.ui.note.BadgeCompose
|
import com.vitorpamplona.amethyst.ui.note.BadgeCompose
|
||||||
import com.vitorpamplona.amethyst.ui.note.MessageSetCompose
|
import com.vitorpamplona.amethyst.ui.note.MessageSetCompose
|
||||||
@@ -34,6 +32,7 @@ import com.vitorpamplona.amethyst.ui.note.MultiSetCompose
|
|||||||
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
import com.vitorpamplona.amethyst.ui.note.NoteCompose
|
||||||
import com.vitorpamplona.amethyst.ui.note.ZapUserSetCompose
|
import com.vitorpamplona.amethyst.ui.note.ZapUserSetCompose
|
||||||
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
|
import com.vitorpamplona.amethyst.ui.theme.FeedPadding
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun RefresheableCardView(
|
fun RefresheableCardView(
|
||||||
@@ -117,7 +116,7 @@ fun RenderCardFeed(
|
|||||||
val feedState by viewModel.feedContent.collectAsStateWithLifecycle()
|
val feedState by viewModel.feedContent.collectAsStateWithLifecycle()
|
||||||
|
|
||||||
Crossfade(
|
Crossfade(
|
||||||
modifier = remember { Modifier.fillMaxSize() },
|
modifier = Modifier.fillMaxSize(),
|
||||||
targetState = feedState,
|
targetState = feedState,
|
||||||
animationSpec = tween(durationMillis = 100)
|
animationSpec = tween(durationMillis = 100)
|
||||||
) { state ->
|
) { state ->
|
||||||
@@ -158,13 +157,8 @@ private fun FeedLoaded(
|
|||||||
nav: (String) -> Unit
|
nav: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
LazyColumn(
|
LazyColumn(
|
||||||
modifier = remember { Modifier.fillMaxSize() },
|
modifier = Modifier.fillMaxSize(),
|
||||||
contentPadding = remember {
|
contentPadding = FeedPadding,
|
||||||
PaddingValues(
|
|
||||||
top = 10.dp,
|
|
||||||
bottom = 10.dp
|
|
||||||
)
|
|
||||||
},
|
|
||||||
state = listState
|
state = listState
|
||||||
) {
|
) {
|
||||||
itemsIndexed(state.feed.value, key = { _, item -> item.id() }) { _, item ->
|
itemsIndexed(state.feed.value, key = { _, item -> item.id() }) { _, item ->
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.vitorpamplona.amethyst.ui.theme
|
package com.vitorpamplona.amethyst.ui.theme
|
||||||
|
|
||||||
|
import androidx.compose.foundation.layout.PaddingValues
|
||||||
import androidx.compose.foundation.layout.defaultMinSize
|
import androidx.compose.foundation.layout.defaultMinSize
|
||||||
import androidx.compose.foundation.layout.fillMaxWidth
|
import androidx.compose.foundation.layout.fillMaxWidth
|
||||||
import androidx.compose.foundation.layout.height
|
import androidx.compose.foundation.layout.height
|
||||||
@@ -142,3 +143,8 @@ val EditFieldTrailingIconModifier = Modifier
|
|||||||
val EditFieldLeadingIconModifier = Modifier
|
val EditFieldLeadingIconModifier = Modifier
|
||||||
.height(32.dp)
|
.height(32.dp)
|
||||||
.padding(start = 2.dp)
|
.padding(start = 2.dp)
|
||||||
|
|
||||||
|
val FeedPadding = PaddingValues(
|
||||||
|
top = 10.dp,
|
||||||
|
bottom = 10.dp
|
||||||
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user