Composer: avoid recomposition

This commit is contained in:
ganfra 2022-11-22 19:28:22 +01:00
parent c03abc4421
commit 9a5b4ca702
2 changed files with 9 additions and 8 deletions

View file

@ -60,6 +60,12 @@ fun MessagesScreen(
) { ) {
val viewModel: MessagesViewModel = mavericksViewModel(argsFactory = { roomId }) val viewModel: MessagesViewModel = mavericksViewModel(argsFactory = { roomId })
val composerViewModel: MessageComposerViewModel = mavericksViewModel(argsFactory = { roomId }) val composerViewModel: MessageComposerViewModel = mavericksViewModel(argsFactory = { roomId })
fun onSendMessage(textMessage: String) {
viewModel.sendMessage(textMessage)
composerViewModel.updateText("")
}
LogCompositions(tag = "MessagesScreen", msg = "Root") LogCompositions(tag = "MessagesScreen", msg = "Root")
val actionsSheetState = rememberModalBottomSheetState( val actionsSheetState = rememberModalBottomSheetState(
initialValue = ModalBottomSheetValue.Hidden, initialValue = ModalBottomSheetValue.Hidden,
@ -81,10 +87,7 @@ fun MessagesScreen(
hasMoreToLoad = hasMoreToLoad, hasMoreToLoad = hasMoreToLoad,
onReachedLoadMore = viewModel::loadMore, onReachedLoadMore = viewModel::loadMore,
onBackPressed = onBackPressed, onBackPressed = onBackPressed,
onSendMessage = { onSendMessage = ::onSendMessage,
viewModel.sendMessage(it)
composerViewModel.updateText("")
},
composerFullScreen = composerFullScreen, composerFullScreen = composerFullScreen,
onComposerFullScreenChange = composerViewModel::onComposerFullScreenChange, onComposerFullScreenChange = composerViewModel::onComposerFullScreenChange,
onComposerTextChange = composerViewModel::updateText, onComposerTextChange = composerViewModel::updateText,
@ -193,7 +196,7 @@ fun MessagesContent(
onFullscreenToggle = onComposerFullScreenChange, onFullscreenToggle = onComposerFullScreenChange,
onComposerTextChange = onComposerTextChange, onComposerTextChange = onComposerTextChange,
composerCanSendMessage = composerCanSendMessage, composerCanSendMessage = composerCanSendMessage,
composerText = composerText?.charSequence, composerText = composerText?.charSequence?.toString(),
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()
.let { .let {

View file

@ -1,9 +1,7 @@
package io.element.android.x.textcomposer package io.element.android.x.textcomposer
import android.content.res.ColorStateList
import android.graphics.Color import android.graphics.Color
import android.net.Uri import android.net.Uri
import androidx.appcompat.widget.AppCompatEditText
import androidx.compose.foundation.isSystemInDarkTheme import androidx.compose.foundation.isSystemInDarkTheme
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.ui.Modifier import androidx.compose.ui.Modifier
@ -20,7 +18,7 @@ fun TextComposer(
onFullscreenToggle: () -> Unit, onFullscreenToggle: () -> Unit,
onComposerTextChange: (CharSequence) -> Unit, onComposerTextChange: (CharSequence) -> Unit,
composerCanSendMessage: Boolean, composerCanSendMessage: Boolean,
composerText: CharSequence?, composerText: String?,
) { ) {
val isInDarkMode = isSystemInDarkTheme() val isInDarkMode = isSystemInDarkTheme()
AndroidView( AndroidView(