Browse Source

Composer: avoid recomposition

feature/bma/flipper
ganfra 2 years ago
parent
commit
6c6fecf6e8
  1. 13
      features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt
  2. 4
      libraries/textcomposer/src/main/java/io/element/android/x/textcomposer/TextComposer.kt

13
features/messages/src/main/java/io/element/android/x/features/messages/MessagesScreen.kt

@ -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 {

4
libraries/textcomposer/src/main/java/io/element/android/x/textcomposer/TextComposer.kt

@ -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(

Loading…
Cancel
Save