feat: mask session loading, fix profile loading centering

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2023-12-09 22:22:52 +01:00
parent 4524b23b3d
commit 9c189c49b4
2 changed files with 126 additions and 97 deletions

View File

@ -245,23 +245,33 @@ fun ProfileSettingsScreen(
}
)
val scrollState = rememberScrollState()
Column(
modifier = Modifier
.fillMaxSize()
.verticalScroll(rememberScrollState())
.then(
if (viewModel.isLoading) {
Modifier
} else {
Modifier.verticalScroll(scrollState)
}
),
verticalArrangement = if (viewModel.isLoading) {
Arrangement.Center
} else {
Arrangement.Top
},
horizontalAlignment = if (viewModel.isLoading) {
Alignment.CenterHorizontally
} else {
Alignment.Start
}
) {
if (viewModel.isLoading) {
Column(
modifier = Modifier
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
CircularProgressIndicator(
modifier = Modifier
.size(48.dp)
)
}
} else {
RevoltAPI.userCache[RevoltAPI.selfId]?.let {
RawUserOverview(

View File

@ -12,10 +12,11 @@ import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.layout.safeDrawingPadding
import androidx.compose.foundation.layout.size
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.material3.AlertDialog
import androidx.compose.material3.Button
import androidx.compose.material3.ExperimentalMaterial3Api
import androidx.compose.material3.CircularProgressIndicator
import androidx.compose.material3.FilledTonalButton
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Text
@ -49,6 +50,7 @@ import chat.revolt.components.settings.sessions.SessionItem
import kotlinx.coroutines.launch
class SessionSettingsScreenViewModel : ViewModel() {
var isLoading by mutableStateOf(true)
val sessions = mutableStateListOf<Session>()
var currentSession by mutableStateOf<Session?>(null)
var showLogoutOtherConfirmation by mutableStateOf(false)
@ -61,6 +63,7 @@ class SessionSettingsScreenViewModel : ViewModel() {
"SessionSettingsScreen",
"Current session: $currentSession. Current session ID: ${RevoltAPI.sessionId}"
)
isLoading = false
}
}
@ -80,7 +83,7 @@ class SessionSettingsScreenViewModel : ViewModel() {
}
}
@OptIn(ExperimentalFoundationApi::class, ExperimentalMaterial3Api::class)
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun SessionSettingsScreen(
navController: NavController,
@ -135,6 +138,19 @@ fun SessionSettingsScreen(
}
)
if (viewModel.isLoading) {
Column(
modifier = Modifier
.fillMaxSize(),
horizontalAlignment = Alignment.CenterHorizontally,
verticalArrangement = Arrangement.Center
) {
CircularProgressIndicator(
modifier = Modifier
.size(48.dp)
)
}
} else {
LazyColumn {
stickyHeader(key = "thisDevice") {
Text(
@ -213,7 +229,9 @@ fun SessionSettingsScreen(
)
}
FilledTonalButton(onClick = { viewModel.showLogoutOtherConfirmation = true }) {
FilledTonalButton(onClick = {
viewModel.showLogoutOtherConfirmation = true
}) {
Text(stringResource(R.string.logout))
}
}
@ -238,4 +256,5 @@ fun SessionSettingsScreen(
}
}
}
}
}