From 92fa35e0c7c9bb5fddc153b6511014577eb57820 Mon Sep 17 00:00:00 2001 From: Jorge Martin Espinosa Date: Tue, 7 Nov 2023 16:59:58 +0100 Subject: [PATCH] Message composer isn't resized when changing the replied to message (#1750) --- changelog.d/1560.bugfix | 1 + .../android/features/messages/impl/MessagesView.kt | 14 +++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 changelog.d/1560.bugfix diff --git a/changelog.d/1560.bugfix b/changelog.d/1560.bugfix new file mode 100644 index 0000000000..5ea883bc76 --- /dev/null +++ b/changelog.d/1560.bugfix @@ -0,0 +1 @@ +Message composer wasn't resized when selecting a several lines message to reply to, then a single line one. diff --git a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt index cc89ba3658..4d7ef3ef3e 100644 --- a/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt +++ b/features/messages/impl/src/main/kotlin/io/element/android/features/messages/impl/MessagesView.kt @@ -41,6 +41,7 @@ import androidx.compose.material3.MaterialTheme import androidx.compose.runtime.Composable import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.LaunchedEffect +import androidx.compose.runtime.remember import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.geometry.Offset @@ -104,6 +105,7 @@ import io.element.android.libraries.theme.ElementTheme import io.element.android.libraries.ui.strings.CommonStrings import kotlinx.collections.immutable.ImmutableList import timber.log.Timber +import kotlin.random.Random import androidx.compose.material3.Button as Material3Button @Composable @@ -339,6 +341,16 @@ private fun MessagesViewContent( ) } + // This key is used to force the sheet to be remeasured when the content changes. + // Any state change that should trigger a height size should be added to the list of remembered values here. + val sheetResizeContentKey = remember( + state.composerState.mode.relatedEventId, + state.composerState.richTextEditorState.lineCount, + state.composerState.memberSuggestions.size + ) { + Random.nextInt() + } + ExpandableBottomSheetScaffold( sheetDragHandle = if (state.composerState.showTextFormatting) { @Composable { BottomSheetDragHandle() } @@ -371,7 +383,7 @@ private fun MessagesViewContent( state = state, ) }, - sheetContentKey = state.composerState.richTextEditorState.lineCount + state.composerState.memberSuggestions.size, + sheetContentKey = sheetResizeContentKey, sheetTonalElevation = 0.dp, sheetShadowElevation = if (state.composerState.memberSuggestions.isNotEmpty()) 16.dp else 0.dp, )