Fixes edge to edge issues when the keyboard is shown.

This commit is contained in:
Vitor Pamplona 2024-12-27 16:49:43 -05:00
parent f38383d4e4
commit d0961d08da

View File

@ -24,8 +24,10 @@ import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.Spacer
import androidx.compose.foundation.layout.consumeWindowInsets
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.imePadding
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.LazyListScope import androidx.compose.foundation.lazy.LazyListScope
@ -56,6 +58,7 @@ import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.R import com.vitorpamplona.amethyst.R
import com.vitorpamplona.amethyst.ui.actions.relays.SettingsCategory import com.vitorpamplona.amethyst.ui.actions.relays.SettingsCategory
import com.vitorpamplona.amethyst.ui.actions.relays.SettingsCategoryWithButton import com.vitorpamplona.amethyst.ui.actions.relays.SettingsCategoryWithButton
import com.vitorpamplona.amethyst.ui.components.SetDialogToEdgeToEdge
import com.vitorpamplona.amethyst.ui.navigation.INav import com.vitorpamplona.amethyst.ui.navigation.INav
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import com.vitorpamplona.amethyst.ui.screen.loggedIn.CloseButton import com.vitorpamplona.amethyst.ui.screen.loggedIn.CloseButton
@ -67,7 +70,6 @@ import com.vitorpamplona.amethyst.ui.theme.FeedPadding
import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer import com.vitorpamplona.amethyst.ui.theme.StdVertSpacer
import com.vitorpamplona.amethyst.ui.theme.grayText import com.vitorpamplona.amethyst.ui.theme.grayText
@OptIn(ExperimentalMaterial3Api::class)
@Composable @Composable
fun MediaServersListView( fun MediaServersListView(
onClose: () -> Unit, onClose: () -> Unit,
@ -75,10 +77,7 @@ fun MediaServersListView(
nav: INav, nav: INav,
) { ) {
val nip96ServersViewModel: NIP96ServersViewModel = viewModel() val nip96ServersViewModel: NIP96ServersViewModel = viewModel()
val nip96ServersState by nip96ServersViewModel.fileServers.collectAsStateWithLifecycle()
val blossomServersViewModel: BlossomServersViewModel = viewModel() val blossomServersViewModel: BlossomServersViewModel = viewModel()
val blossomServersState by blossomServersViewModel.fileServers.collectAsStateWithLifecycle()
LaunchedEffect(key1 = Unit) { LaunchedEffect(key1 = Unit) {
nip96ServersViewModel.load(accountViewModel.account) nip96ServersViewModel.load(accountViewModel.account)
@ -87,8 +86,20 @@ fun MediaServersListView(
Dialog( Dialog(
onDismissRequest = onClose, onDismissRequest = onClose,
properties = DialogProperties(usePlatformDefaultWidth = false), properties = DialogProperties(usePlatformDefaultWidth = false, decorFitsSystemWindows = false),
) { ) {
SetDialogToEdgeToEdge()
DialogContent(nip96ServersViewModel, blossomServersViewModel, onClose)
}
}
@OptIn(ExperimentalMaterial3Api::class)
@Composable
fun DialogContent(
nip96ServersViewModel: NIP96ServersViewModel,
blossomServersViewModel: BlossomServersViewModel,
onClose: () -> Unit,
) {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( TopAppBar(
@ -139,8 +150,9 @@ fun MediaServersListView(
top = padding.calculateTopPadding(), top = padding.calculateTopPadding(),
end = 16.dp, end = 16.dp,
bottom = padding.calculateBottomPadding(), bottom = padding.calculateBottomPadding(),
), ).consumeWindowInsets(padding)
verticalArrangement = Arrangement.spacedBy(5.dp, alignment = Alignment.Top), .imePadding(),
verticalArrangement = Arrangement.spacedBy(10.dp, alignment = Alignment.Top),
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
) { ) {
Text( Text(
@ -150,6 +162,19 @@ fun MediaServersListView(
color = MaterialTheme.colorScheme.grayText, color = MaterialTheme.colorScheme.grayText,
) )
AllMediaBody(nip96ServersViewModel, blossomServersViewModel)
}
}
}
@Composable
fun AllMediaBody(
nip96ServersViewModel: NIP96ServersViewModel,
blossomServersViewModel: BlossomServersViewModel,
) {
val nip96ServersState by nip96ServersViewModel.fileServers.collectAsStateWithLifecycle()
val blossomServersState by blossomServersViewModel.fileServers.collectAsStateWithLifecycle()
LazyColumn( LazyColumn(
verticalArrangement = Arrangement.SpaceAround, verticalArrangement = Arrangement.SpaceAround,
horizontalAlignment = Alignment.CenterHorizontally, horizontalAlignment = Alignment.CenterHorizontally,
@ -242,9 +267,6 @@ fun MediaServersListView(
Spacer(DoubleHorzSpacer) Spacer(DoubleHorzSpacer)
} }
} }
}
}
}
} }
fun LazyListScope.renderMediaServerList( fun LazyListScope.renderMediaServerList(