mirror of
https://github.com/Novaloop-AG/element-x-android.git
synced 2026-11-03 06:01:40 +00:00
Composer: avoid passing interface Callback as it will force recomposition
This commit is contained in:
+1
-26
@@ -3,7 +3,6 @@
|
|||||||
package io.element.android.x.features.messages
|
package io.element.android.x.features.messages
|
||||||
|
|
||||||
import Avatar
|
import Avatar
|
||||||
import android.net.Uri
|
|
||||||
import androidx.compose.foundation.BorderStroke
|
import androidx.compose.foundation.BorderStroke
|
||||||
import androidx.compose.foundation.clickable
|
import androidx.compose.foundation.clickable
|
||||||
import androidx.compose.foundation.interaction.MutableInteractionSource
|
import androidx.compose.foundation.interaction.MutableInteractionSource
|
||||||
@@ -39,7 +38,6 @@ import io.element.android.x.designsystem.components.avatar.AvatarData
|
|||||||
import io.element.android.x.features.messages.model.MessagesItemGroupPosition
|
import io.element.android.x.features.messages.model.MessagesItemGroupPosition
|
||||||
import io.element.android.x.features.messages.model.MessagesTimelineItemState
|
import io.element.android.x.features.messages.model.MessagesTimelineItemState
|
||||||
import io.element.android.x.features.messages.model.MessagesViewState
|
import io.element.android.x.features.messages.model.MessagesViewState
|
||||||
import io.element.android.x.textcomposer.Callback
|
|
||||||
import io.element.android.x.textcomposer.TextComposer
|
import io.element.android.x.textcomposer.TextComposer
|
||||||
|
|
||||||
private val BUBBLE_RADIUS = 16.dp
|
private val BUBBLE_RADIUS = 16.dp
|
||||||
@@ -122,30 +120,7 @@ fun MessagesContent(
|
|||||||
modifier = Modifier.weight(1f)
|
modifier = Modifier.weight(1f)
|
||||||
)
|
)
|
||||||
TextComposer(
|
TextComposer(
|
||||||
callback = object : Callback {
|
onSendMessage = onSendMessage,
|
||||||
override fun onRichContentSelected(contentUri: Uri): Boolean {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onTextChanged(text: CharSequence) {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onCloseRelatedMessage() {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onSendMessage(text: CharSequence) {
|
|
||||||
onSendMessage.invoke(text)
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onAddAttachment() {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onExpandOrCompactChange() {
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onFullScreenModeChanged() {
|
|
||||||
}
|
|
||||||
},
|
|
||||||
modifier = Modifier
|
modifier = Modifier
|
||||||
.fillMaxWidth()
|
.fillMaxWidth()
|
||||||
.height(COMPOSER_HEIGHT)
|
.height(COMPOSER_HEIGHT)
|
||||||
|
|||||||
+1
@@ -24,6 +24,7 @@ sealed interface MessagesTimelineItemState {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
+28
-3
@@ -1,5 +1,6 @@
|
|||||||
package io.element.android.x.textcomposer
|
package io.element.android.x.textcomposer
|
||||||
|
|
||||||
|
import android.net.Uri
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
@@ -8,15 +9,39 @@ import io.element.android.x.element.resources.R as ElementR
|
|||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun TextComposer(
|
fun TextComposer(
|
||||||
callback: Callback,
|
onSendMessage: (CharSequence) -> Unit,
|
||||||
modifier: Modifier = Modifier,
|
modifier: Modifier = Modifier,
|
||||||
){
|
) {
|
||||||
AndroidView(
|
AndroidView(
|
||||||
modifier = modifier,
|
modifier = modifier,
|
||||||
factory = { context ->
|
factory = { context ->
|
||||||
RichTextComposerLayout(context).apply {
|
RichTextComposerLayout(context).apply {
|
||||||
// Sets up listeners for View -> Compose communication
|
// Sets up listeners for View -> Compose communication
|
||||||
this.callback = callback
|
this.callback = object : Callback {
|
||||||
|
override fun onRichContentSelected(contentUri: Uri): Boolean {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onTextChanged(text: CharSequence) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onCloseRelatedMessage() {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onSendMessage(text: CharSequence) {
|
||||||
|
onSendMessage(text)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onAddAttachment() {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onExpandOrCompactChange() {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFullScreenModeChanged() {
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
val messageComposerView = (this as MessageComposerView)
|
val messageComposerView = (this as MessageComposerView)
|
||||||
setupComposer(messageComposerView)
|
setupComposer(messageComposerView)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user