diff --git a/app/src/main/java/chat/revolt/components/screens/chat/AttachmentManager.kt b/app/src/main/java/chat/revolt/components/screens/chat/AttachmentManager.kt index 3b4d8491..26afaa47 100644 --- a/app/src/main/java/chat/revolt/components/screens/chat/AttachmentManager.kt +++ b/app/src/main/java/chat/revolt/components/screens/chat/AttachmentManager.kt @@ -49,15 +49,14 @@ import androidx.compose.ui.unit.dp import chat.revolt.R import chat.revolt.api.routes.microservices.autumn.FileArgs import chat.revolt.components.generic.RemoteImage +import chat.revolt.components.generic.SheetEnd +import chat.revolt.internals.extensions.BottomSheetInsets import kotlinx.coroutines.launch import java.io.File @Composable fun FilePreviewSheet( - args: FileArgs, - canRemove: Boolean, - onRemove: () -> Unit, - onDismiss: () -> Unit + args: FileArgs, canRemove: Boolean, onRemove: () -> Unit, onDismiss: () -> Unit ) { val context = LocalContext.current @@ -77,9 +76,7 @@ fun FilePreviewSheet( ) } Text( - args.filename, - fontWeight = FontWeight.Medium, - textAlign = TextAlign.Center + args.filename, fontWeight = FontWeight.Medium, textAlign = TextAlign.Center ) Text( Formatter.formatFileSize(context, args.file.length()), @@ -108,6 +105,7 @@ fun FilePreviewSheet( } } } + SheetEnd() } @OptIn(ExperimentalMaterial3Api::class) @@ -126,27 +124,24 @@ fun AttachmentManager( if (showPreviewSheet) { val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true) - ModalBottomSheet(onDismissRequest = { - showPreviewSheet = false - }, sheetState = sheetState) { + ModalBottomSheet( + onDismissRequest = { + showPreviewSheet = false + }, sheetState = sheetState, windowInsets = BottomSheetInsets + ) { previewingAttachment?.let { - FilePreviewSheet( - args = it, - canRemove = canRemove, - onRemove = { - onRemove(it) - scope.launch { - sheetState.hide() - showPreviewSheet = false - } - }, - onDismiss = { - scope.launch { - sheetState.hide() - showPreviewSheet = false - } + FilePreviewSheet(args = it, canRemove = canRemove, onRemove = { + onRemove(it) + scope.launch { + sheetState.hide() + showPreviewSheet = false } - ) + }, onDismiss = { + scope.launch { + sheetState.hide() + showPreviewSheet = false + } + }) } } } @@ -168,22 +163,20 @@ fun AttachmentManager( .padding(horizontal = 8.dp, vertical = 4.dp) ) { attachments.forEach { attachment -> - Row( - modifier = Modifier - .padding(4.dp) - .clip(MaterialTheme.shapes.small) - .clickable { - if (canPreview) { - previewingAttachment = attachment - showPreviewSheet = true - } + Row(modifier = Modifier + .padding(4.dp) + .clip(MaterialTheme.shapes.small) + .clickable { + if (canPreview) { + previewingAttachment = attachment + showPreviewSheet = true } - .background( - color = MaterialTheme.colorScheme.background, - shape = MaterialTheme.shapes.small - ) - .padding(8.dp) - ) { + } + .background( + color = MaterialTheme.colorScheme.background, + shape = MaterialTheme.shapes.small + ) + .padding(8.dp)) { Text(attachment.filename, maxLines = 1) } Spacer(modifier = Modifier.width(8.dp)) @@ -192,9 +185,7 @@ fun AttachmentManager( AnimatedVisibility(visible = uploading) { LinearProgressIndicator( - progress = { animatedProgress }, - modifier = Modifier - .fillMaxWidth() + progress = { animatedProgress }, modifier = Modifier.fillMaxWidth() ) } } @@ -203,25 +194,13 @@ fun AttachmentManager( @Preview @Composable fun AttachmentManagerPreview() { - AttachmentManager( - attachments = listOf( - FileArgs( - filename = "file1.png", - contentType = "image/png", - file = File("file1.png") - ), - FileArgs( - filename = "file2.png", - contentType = "image/png", - file = File("file2.png") - ), - FileArgs( - filename = "file3.png", - contentType = "image/png", - file = File("file3.png") - ) - ), - uploading = false, - onRemove = {} - ) + AttachmentManager(attachments = listOf( + FileArgs( + filename = "file1.png", contentType = "image/png", file = File("file1.png") + ), FileArgs( + filename = "file2.png", contentType = "image/png", file = File("file2.png") + ), FileArgs( + filename = "file3.png", contentType = "image/png", file = File("file3.png") + ) + ), uploading = false, onRemove = {}) } diff --git a/app/src/main/java/chat/revolt/screens/about/AttributionScreen.kt b/app/src/main/java/chat/revolt/screens/about/AttributionScreen.kt index b4844022..aa86e38e 100644 --- a/app/src/main/java/chat/revolt/screens/about/AttributionScreen.kt +++ b/app/src/main/java/chat/revolt/screens/about/AttributionScreen.kt @@ -42,7 +42,9 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.unit.dp import androidx.navigation.NavController import chat.revolt.R +import chat.revolt.components.generic.SheetEnd import chat.revolt.components.screens.settings.AttributionItem +import chat.revolt.internals.extensions.BottomSheetInsets import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonArray @@ -126,7 +128,8 @@ fun AttributionScreen(navController: NavController) { sheetState = licenceSheetState, onDismissRequest = { licenceSheetOpen = false - } + }, + windowInsets = BottomSheetInsets ) { Column( modifier = Modifier @@ -149,6 +152,7 @@ fun AttributionScreen(navController: NavController) { } } } + SheetEnd() } } diff --git a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt index bb4ddfbb..35052e62 100644 --- a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt @@ -482,7 +482,8 @@ fun ChatRouterScreen( sheetState = statusSheetState, onDismissRequest = { showStatusSheet = false - } + }, + windowInsets = BottomSheetInsets ) { StatusSheet( onBeforeNavigation = { @@ -505,7 +506,8 @@ fun ChatRouterScreen( sheetState = addServerSheetState, onDismissRequest = { showAddServerSheet = false - } + }, + windowInsets = BottomSheetInsets ) { AddServerSheet() } @@ -542,7 +544,8 @@ fun ChatRouterScreen( sheetState = userContextSheetState, onDismissRequest = { showUserContextSheet = false - } + }, + windowInsets = BottomSheetInsets ) { UserInfoSheet( userId = userContextSheetTarget, @@ -619,7 +622,8 @@ fun ChatRouterScreen( sheetState = linkInfoSheetState, onDismissRequest = { showLinkInfoSheet = false - } + }, + windowInsets = BottomSheetInsets ) { LinkInfoSheet( url = linkInfoSheetUrl, @@ -637,7 +641,8 @@ fun ChatRouterScreen( sheetState = emoteInfoSheetState, onDismissRequest = { showEmoteInfoSheet = false - } + }, + windowInsets = BottomSheetInsets ) { EmoteInfoSheet( id = emoteInfoSheetTarget, @@ -655,7 +660,8 @@ fun ChatRouterScreen( sheetState = reactionInfoSheetState, onDismissRequest = { showReactionInfoSheet = false - } + }, + windowInsets = BottomSheetInsets ) { ReactionInfoSheet( messageId = reactionInfoSheetMessageId, diff --git a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt index ace03801..38bda98c 100644 --- a/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/views/channel/ChannelScreen.kt @@ -120,6 +120,7 @@ import chat.revolt.components.screens.chat.AttachmentManager import chat.revolt.components.screens.chat.ChannelIcon import chat.revolt.components.screens.chat.ReplyManager import chat.revolt.components.screens.chat.TypingIndicator +import chat.revolt.internals.extensions.BottomSheetInsets import chat.revolt.internals.extensions.rememberChannelPermissions import chat.revolt.internals.extensions.zero import chat.revolt.sheets.ChannelInfoSheet @@ -335,7 +336,8 @@ fun ChannelScreen( sheetState = channelInfoSheetState, onDismissRequest = { channelInfoSheetShown = false - } + }, + windowInsets = BottomSheetInsets ) { ChannelInfoSheet( channelId = channelId, @@ -356,7 +358,8 @@ fun ChannelScreen( sheetState = messageContextSheetState, onDismissRequest = { messageContextSheetShown = false - } + }, + windowInsets = BottomSheetInsets ) { MessageContextSheet( messageId = messageContextSheetTarget, @@ -382,7 +385,8 @@ fun ChannelScreen( sheetState = reactSheetState, onDismissRequest = { reactSheetShown = false - } + }, + windowInsets = BottomSheetInsets ) { ReactSheet(reactSheetTarget) { if (it == null) return@ReactSheet diff --git a/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt b/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt index 2b1a7696..3f9f3272 100644 --- a/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt +++ b/app/src/main/java/chat/revolt/screens/settings/AppearanceSettingsScreen.kt @@ -74,8 +74,10 @@ import chat.revolt.api.RevoltJson import chat.revolt.api.settings.GlobalState import chat.revolt.api.settings.SyncedSettings import chat.revolt.components.generic.ListHeader +import chat.revolt.components.generic.SheetEnd import chat.revolt.components.screens.settings.appearance.ColourChip import chat.revolt.components.screens.settings.appearance.CornerRadiusPicker +import chat.revolt.internals.extensions.BottomSheetInsets import chat.revolt.ui.theme.ClearRippleTheme import chat.revolt.ui.theme.OverridableColourScheme import chat.revolt.ui.theme.Theme @@ -252,7 +254,8 @@ fun AppearanceSettingsScreen( sheetState = sheetState, onDismissRequest = { viewModel.overridePickerSheetVisible = false - } + }, + windowInsets = BottomSheetInsets ) { ColourSelectorSheet( initialValue = Color(viewModel.selectedOverrideInitialValue ?: 0), @@ -635,4 +638,5 @@ fun ColourSelectorSheet( } } } + SheetEnd() } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt b/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt index c20e12b8..7f86f5b0 100644 --- a/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/AddServerSheet.kt @@ -96,9 +96,9 @@ fun AddServerSheet() { ).show() } ) - - SheetEnd() } + + SheetEnd() } @Composable diff --git a/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt b/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt index 3dda9a20..46ea1adf 100644 --- a/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/ChannelInfoSheet.kt @@ -41,6 +41,7 @@ import chat.revolt.callbacks.ActionChannel import chat.revolt.components.generic.SheetButton import chat.revolt.components.generic.SheetEnd import chat.revolt.components.screens.chat.ChannelSheetHeader +import chat.revolt.internals.extensions.BottomSheetInsets import chat.revolt.internals.extensions.rememberChannelPermissions import chat.revolt.screens.chat.dialogs.InviteDialog import kotlinx.coroutines.delay @@ -62,7 +63,8 @@ fun ChannelInfoSheet(channelId: String, onHideSheet: suspend () -> Unit) { sheetState = memberListSheetState, onDismissRequest = { memberListSheetShown = false - } + }, + windowInsets = BottomSheetInsets ) { MemberListSheet( channelId = channelId, diff --git a/app/src/main/java/chat/revolt/sheets/MemberListSheet.kt b/app/src/main/java/chat/revolt/sheets/MemberListSheet.kt index 1864d201..7012e726 100644 --- a/app/src/main/java/chat/revolt/sheets/MemberListSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/MemberListSheet.kt @@ -44,8 +44,10 @@ import chat.revolt.api.schemas.User import chat.revolt.components.chat.MemberListItem import chat.revolt.components.generic.CountableListHeader import chat.revolt.components.generic.Presence +import chat.revolt.components.generic.SheetEnd import chat.revolt.components.generic.SheetHeaderPadding import chat.revolt.components.generic.presenceFromStatus +import chat.revolt.internals.extensions.BottomSheetInsets import dagger.hilt.android.lifecycle.HiltViewModel import dagger.hilt.android.qualifiers.ApplicationContext import kotlinx.coroutines.flow.distinctUntilChanged @@ -232,7 +234,8 @@ fun MemberListSheet( sheetState = userContextSheetState, onDismissRequest = { showUserInfoSheet = false - } + }, + windowInsets = BottomSheetInsets ) { UserInfoSheet( userId = userInfoSheetTarget, @@ -252,7 +255,8 @@ fun MemberListSheet( sheetState = memberContextSheetState, onDismissRequest = { showMemberContextSheet = false - } + }, + windowInsets = BottomSheetInsets ) { if (serverId != null) { ServerMemberContextSheet( @@ -280,6 +284,7 @@ fun MemberListSheet( } ) } + SheetEnd() } } @@ -291,6 +296,7 @@ fun MemberListSheet( ) { CircularProgressIndicator(modifier = Modifier.align(Alignment.Center)) } + SheetEnd() return } @@ -361,4 +367,5 @@ fun MemberListSheet( } } } + SheetEnd() } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/sheets/MessageContextSheet.kt b/app/src/main/java/chat/revolt/sheets/MessageContextSheet.kt index 6ae7e91c..5f5f4320 100644 --- a/app/src/main/java/chat/revolt/sheets/MessageContextSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/MessageContextSheet.kt @@ -51,6 +51,7 @@ import chat.revolt.components.chat.Message import chat.revolt.components.generic.SheetButton import chat.revolt.components.generic.SheetEnd import chat.revolt.internals.Platform +import chat.revolt.internals.extensions.BottomSheetInsets import chat.revolt.ui.theme.ClearRippleTheme import kotlinx.coroutines.launch @@ -88,7 +89,8 @@ fun MessageContextSheet( sheetState = shareSheetState, onDismissRequest = { showShareSheet = false - } + }, + windowInsets = BottomSheetInsets ) { Column( modifier = Modifier @@ -250,7 +252,8 @@ fun MessageContextSheet( sheetState = reactSheetState, onDismissRequest = { showReactSheet = false - } + }, + windowInsets = BottomSheetInsets ) { ReactSheet(messageId) { if (it == null) return@ReactSheet diff --git a/app/src/main/java/chat/revolt/sheets/ReactSheet.kt b/app/src/main/java/chat/revolt/sheets/ReactSheet.kt index 2f605cd5..a77b88e7 100644 --- a/app/src/main/java/chat/revolt/sheets/ReactSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/ReactSheet.kt @@ -3,6 +3,7 @@ package chat.revolt.sheets import androidx.compose.runtime.Composable import chat.revolt.api.RevoltAPI import chat.revolt.components.emoji.EmojiPicker +import chat.revolt.components.generic.SheetEnd @Composable fun ReactSheet(messageId: String, onSelect: (String?) -> Unit) { @@ -16,4 +17,5 @@ fun ReactSheet(messageId: String, onSelect: (String?) -> Unit) { EmojiPicker { onSelect(it.removeSurrounding(":")) } + SheetEnd() } \ No newline at end of file diff --git a/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt b/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt index dd521361..9178169a 100644 --- a/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt +++ b/app/src/main/java/chat/revolt/sheets/UserInfoSheet.kt @@ -44,6 +44,7 @@ import chat.revolt.components.chat.RoleListEntry import chat.revolt.components.chat.UserBadgeList import chat.revolt.components.chat.UserBadgeRow import chat.revolt.components.generic.NonIdealState +import chat.revolt.components.generic.SheetEnd import chat.revolt.components.generic.UserAvatar import chat.revolt.components.markdown.RichMarkdown import chat.revolt.components.screens.settings.RawUserOverview @@ -332,4 +333,5 @@ fun UserInfoSheet( UserButtons(user, dismissSheet) } } + SheetEnd() } \ No newline at end of file