Composer: avoid passing interface Callback as it will force recomposition
This commit is contained in:
parent
f85e522842
commit
7ca1f90512
3 changed files with 30 additions and 29 deletions
|
|
@ -3,7 +3,6 @@
|
|||
package io.element.android.x.features.messages
|
||||
|
||||
import Avatar
|
||||
import android.net.Uri
|
||||
import androidx.compose.foundation.BorderStroke
|
||||
import androidx.compose.foundation.clickable
|
||||
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.MessagesTimelineItemState
|
||||
import io.element.android.x.features.messages.model.MessagesViewState
|
||||
import io.element.android.x.textcomposer.Callback
|
||||
import io.element.android.x.textcomposer.TextComposer
|
||||
|
||||
private val BUBBLE_RADIUS = 16.dp
|
||||
|
|
@ -122,30 +120,7 @@ fun MessagesContent(
|
|||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
TextComposer(
|
||||
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.invoke(text)
|
||||
}
|
||||
|
||||
override fun onAddAttachment() {
|
||||
}
|
||||
|
||||
override fun onExpandOrCompactChange() {
|
||||
}
|
||||
|
||||
override fun onFullScreenModeChanged() {
|
||||
}
|
||||
},
|
||||
onSendMessage = onSendMessage,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(COMPOSER_HEIGHT)
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@ sealed interface MessagesTimelineItemState {
|
|||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
package io.element.android.x.textcomposer
|
||||
|
||||
import android.net.Uri
|
||||
import androidx.compose.runtime.Composable
|
||||
import androidx.compose.ui.Modifier
|
||||
import androidx.compose.ui.viewinterop.AndroidView
|
||||
|
|
@ -8,15 +9,39 @@ import io.element.android.x.element.resources.R as ElementR
|
|||
|
||||
@Composable
|
||||
fun TextComposer(
|
||||
callback: Callback,
|
||||
onSendMessage: (CharSequence) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
){
|
||||
) {
|
||||
AndroidView(
|
||||
modifier = modifier,
|
||||
factory = { context ->
|
||||
RichTextComposerLayout(context).apply {
|
||||
// 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)
|
||||
setupComposer(messageComposerView)
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue