Composer: avoid passing interface Callback as it will force recomposition
This commit is contained in:
parent
1548dd4e6a
commit
dca9563762
3 changed files with 30 additions and 29 deletions
|
|
@ -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)
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@ sealed interface MessagesTimelineItemState {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue