feat: mask session loading, fix profile loading centering
Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
parent
4524b23b3d
commit
9c189c49b4
|
|
@ -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(
|
||||
|
|
|
|||
|
|
@ -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(
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue