diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt b/features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt index 883f9981b0..f87bd01986 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt @@ -198,9 +198,11 @@ fun MessagesScreenContent( composerCanSendMessage: Boolean, composerText: StableCharSequence?, snackbarHostState: SnackbarHostState, + modifier: Modifier = Modifier, ) { LogCompositions(tag = "MessagesScreen", msg = "Content") Scaffold( + modifier = modifier, contentWindowInsets = WindowInsets.statusBars, topBar = { MessagesTopAppBar( @@ -255,7 +257,6 @@ fun MessagesContent( composerText: StableCharSequence?, modifier: Modifier = Modifier ) { - val lazyListState = rememberLazyListState() Column( modifier = modifier @@ -301,9 +302,11 @@ fun MessagesContent( fun MessagesTopAppBar( roomTitle: String?, roomAvatar: AvatarData?, - onBackPressed: () -> Unit, + modifier: Modifier = Modifier, + onBackPressed: () -> Unit = {}, ) { TopAppBar( + modifier = modifier, navigationIcon = { IconButton(onClick = onBackPressed) { Icon( @@ -521,7 +524,7 @@ private fun MessageSenderInformation( internal fun BoxScope.MessagesScrollHelper( lazyListState: LazyListState, timelineItems: List, - onLoadMore: () -> Unit, + onLoadMore: () -> Unit = {}, ) { val coroutineScope = rememberCoroutineScope() val firstVisibleItemIndex by remember { derivedStateOf { lazyListState.firstVisibleItemIndex } } diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessageEventBubble.kt b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessageEventBubble.kt index 2791cde42b..51d0faf677 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessageEventBubble.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessageEventBubble.kt @@ -32,9 +32,9 @@ fun MessageEventBubble( interactionSource: MutableInteractionSource, isHighlighted: Boolean, modifier: Modifier = Modifier, - onClick: () -> Unit, - onLongClick: () -> Unit, - content: @Composable () -> Unit, + onClick: () -> Unit = {}, + onLongClick: () -> Unit = {}, + content: @Composable () -> Unit = {}, ) { fun bubbleShape(): Shape { return when (groupPosition) { diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemActionsSheet.kt b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemActionsSheet.kt index bf45101d19..ab7dac565d 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemActionsSheet.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemActionsSheet.kt @@ -95,36 +95,36 @@ fun TimelineItemActionsScreen( @Composable private fun SheetContent( actionsSheetState: MessagesItemActionsSheetState?, - onActionClicked: (MessagesItemAction, MessagesTimelineItemState.MessageEvent) -> Unit, - modifier: Modifier = Modifier + modifier: Modifier = Modifier, + onActionClicked: (MessagesItemAction, MessagesTimelineItemState.MessageEvent) -> Unit = { _, _ -> }, ) { if (actionsSheetState == null || actionsSheetState.actions.isEmpty()) { // Crashes if sheetContent size is zero Box(modifier = modifier.size(1.dp)) - return - } - LazyColumn( - modifier = modifier - .fillMaxWidth() - ) { - items(actionsSheetState.actions) { - ListItem( - modifier = Modifier.clickable { - onActionClicked(it, actionsSheetState.targetItem) - }, - text = { - Text( - text = it.title, - color = if (it.destructive) MaterialTheme.colors.error else Color.Unspecified, - ) - }, - icon = { - VectorIcon( - resourceId = it.icon, - tint = if (it.destructive) MaterialTheme.colors.error else LocalContentColor.current, - ) - } - ) + } else { + LazyColumn( + modifier = modifier + .fillMaxWidth() + ) { + items(actionsSheetState.actions) { + ListItem( + modifier = Modifier.clickable { + onActionClicked(it, actionsSheetState.targetItem) + }, + text = { + Text( + text = it.title, + color = if (it.destructive) MaterialTheme.colors.error else Color.Unspecified, + ) + }, + icon = { + VectorIcon( + resourceId = it.icon, + tint = if (it.destructive) MaterialTheme.colors.error else LocalContentColor.current, + ) + } + ) + } } } } diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemTextView.kt b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemTextView.kt index a5753ff628..3bbc334533 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemTextView.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/components/MessagesTimelineItemTextView.kt @@ -22,8 +22,8 @@ fun MessagesTimelineItemTextView( content: MessagesTimelineItemTextBasedContent, interactionSource: MutableInteractionSource, modifier: Modifier = Modifier, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val htmlDocument = content.htmlDocument if (htmlDocument != null) { diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/components/html/HtmlDocument.kt b/features/messages/src/main/java/io/element/android/x/features/messages/components/html/HtmlDocument.kt index d65de84e5d..01f66cc9ba 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/components/html/HtmlDocument.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/components/html/HtmlDocument.kt @@ -46,34 +46,33 @@ private const val chipId = "chip" fun HtmlDocument( document: Document, interactionSource: MutableInteractionSource, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { HtmlBody( body = document.body(), + interactionSource = interactionSource, modifier = modifier, onTextClicked = onTextClicked, onTextLongClicked = onTextLongClicked, - interactionSource = interactionSource ) } @Composable private fun HtmlBody( body: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { - @Composable fun NodesFlowRode( nodes: Iterator, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) = FlowRow( mainAxisSpacing = 2.dp, crossAxisSpacing = 8.dp, @@ -114,9 +113,9 @@ private fun HtmlBody( while (nodesIterator.hasNext()) { NodesFlowRode( nodes = nodesIterator, + interactionSource = interactionSource, onTextClicked = onTextClicked, onTextLongClicked = onTextLongClicked, - interactionSource = interactionSource ) } } @@ -133,10 +132,10 @@ private fun Element.isInline(): Boolean { @Composable private fun HtmlBlock( element: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val blockModifier = modifier .padding(top = 4.dp) @@ -191,10 +190,10 @@ private fun HtmlBlock( @Composable private fun HtmlInline( element: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, - onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { Box(modifier) { val styledText = buildAnnotatedString { @@ -210,7 +209,10 @@ private fun HtmlInline( } @Composable -private fun HtmlPreformatted(pre: Element, modifier: Modifier = Modifier) { +private fun HtmlPreformatted( + pre: Element, + modifier: Modifier = Modifier +) { val isCode = pre.firstElementChild()?.normalName() == "code" val backgroundColor = if (isCode) MaterialTheme.colorScheme.codeBackground() else Color.Unspecified @@ -229,9 +231,10 @@ private fun HtmlPreformatted(pre: Element, modifier: Modifier = Modifier) { @Composable private fun HtmlParagraph( paragraph: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { Box(modifier) { val styledText = buildAnnotatedString { @@ -247,9 +250,10 @@ private fun HtmlParagraph( @Composable private fun HtmlBlockquote( blockquote: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val color = MaterialTheme.colorScheme.onBackground Box( @@ -279,9 +283,10 @@ private fun HtmlBlockquote( @Composable private fun HtmlHeading( heading: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val style = when (heading.normalName()) { "h1" -> MaterialTheme.typography.headlineLarge.copy(fontSize = 30.sp) @@ -311,9 +316,10 @@ private fun HtmlHeading( @Composable private fun HtmlMxReply( mxReply: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val blockquote = mxReply.childNodes().firstOrNull() ?: return val shape = RoundedCornerShape(12.dp) @@ -363,9 +369,10 @@ private fun HtmlMxReply( @Composable private fun HtmlOrderedList( orderedList: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { var number = 1 val delimiter = "." @@ -388,9 +395,10 @@ private fun HtmlOrderedList( @Composable private fun HtmlUnorderedList( unorderedList: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, ) { val marker = "・" HtmlListItems( @@ -412,10 +420,11 @@ private fun HtmlUnorderedList( @Composable private fun HtmlListItems( list: Element, - modifier: Modifier = Modifier, - onTextClicked: () -> Unit, onTextLongClicked: () -> Unit, interactionSource: MutableInteractionSource, - content: @Composable (node: TextNode) -> Unit + modifier: Modifier = Modifier, + onTextClicked: () -> Unit = {}, + onTextLongClicked: () -> Unit = {}, + content: @Composable (node: TextNode) -> Unit = {} ) { Column(modifier = modifier) { for (node in list.children()) { @@ -426,7 +435,7 @@ private fun HtmlListItems( } is Element -> HtmlBlock( element = innerNode, - modifier = modifier.padding(start = 4.dp), + modifier = Modifier.padding(start = 4.dp), onTextClicked = onTextClicked, onTextLongClicked = onTextLongClicked, interactionSource = interactionSource ) @@ -524,11 +533,11 @@ private fun AnnotatedString.Builder.appendLink(link: Element) { @Composable private fun HtmlText( text: AnnotatedString, + interactionSource: MutableInteractionSource, modifier: Modifier = Modifier, style: TextStyle = LocalTextStyle.current, - onClick: () -> Unit, - onLongClick: () -> Unit, - interactionSource: MutableInteractionSource, + onClick: () -> Unit = {}, + onLongClick: () -> Unit = {}, ) { val inlineContentMap = emptyMap() ClickableLinkText( diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemRedactedContent.kt b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemRedactedContent.kt index 5eb7cad4f9..6524737475 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemRedactedContent.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemRedactedContent.kt @@ -1,3 +1,3 @@ package io.element.android.x.features.messages.model.content -object MessagesTimelineItemRedactedContent : MessagesTimelineItemContent \ No newline at end of file +object MessagesTimelineItemRedactedContent : MessagesTimelineItemContent diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemTextBasedContent.kt b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemTextBasedContent.kt index 4f8c1d67fe..d091aaa807 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemTextBasedContent.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemTextBasedContent.kt @@ -5,4 +5,4 @@ import org.jsoup.nodes.Document sealed interface MessagesTimelineItemTextBasedContent : MessagesTimelineItemContent { val body: String val htmlDocument: Document? -} \ No newline at end of file +} diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemUnknownContent.kt b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemUnknownContent.kt index 36dd7484ca..afc494e847 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemUnknownContent.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/model/content/MessagesTimelineItemUnknownContent.kt @@ -1,3 +1,3 @@ package io.element.android.x.features.messages.model.content -object MessagesTimelineItemUnknownContent : MessagesTimelineItemContent \ No newline at end of file +object MessagesTimelineItemUnknownContent : MessagesTimelineItemContent diff --git a/features/messages/src/main/java/io/element/android/x/features/messages/util/MutableListExt.kt b/features/messages/src/main/java/io/element/android/x/features/messages/util/MutableListExt.kt index f9ffbe0715..ecdd1c189e 100644 --- a/features/messages/src/main/java/io/element/android/x/features/messages/util/MutableListExt.kt +++ b/features/messages/src/main/java/io/element/android/x/features/messages/util/MutableListExt.kt @@ -5,4 +5,4 @@ internal inline fun MutableList.invalidateLast() { if (indexOfLast > 0) { set(indexOfLast - 1, null) } -} \ No newline at end of file +}