Merge branch 'develop' of https://github.com/vector-im/element-x-android-poc into develop
This commit is contained in:
@@ -54,6 +54,7 @@ fun MessagesScreen(
|
||||
val roomAvatar by viewModel.collectAsState(MessagesViewState::roomAvatar)
|
||||
val timelineItems by viewModel.collectAsState(MessagesViewState::timelineItems)
|
||||
val hasMoreToLoad by viewModel.collectAsState(MessagesViewState::hasMoreToLoad)
|
||||
val composerFullScreen by viewModel.collectAsState(MessagesViewState::composerFullScreen)
|
||||
MessagesContent(
|
||||
roomTitle = roomTitle,
|
||||
roomAvatar = roomAvatar,
|
||||
@@ -61,7 +62,9 @@ fun MessagesScreen(
|
||||
hasMoreToLoad = hasMoreToLoad,
|
||||
onReachedLoadMore = viewModel::loadMore,
|
||||
onBackPressed = onBackPressed,
|
||||
onSendMessage = viewModel::sendMessage
|
||||
onSendMessage = viewModel::sendMessage,
|
||||
composerFullScreen = composerFullScreen,
|
||||
onComposerFullScreenChange = viewModel::onComposerFullScreenChange,
|
||||
)
|
||||
}
|
||||
|
||||
@@ -74,6 +77,8 @@ fun MessagesContent(
|
||||
onReachedLoadMore: () -> Unit,
|
||||
onBackPressed: () -> Unit,
|
||||
onSendMessage: (CharSequence) -> Unit,
|
||||
composerFullScreen: Boolean,
|
||||
onComposerFullScreenChange: () -> Unit,
|
||||
) {
|
||||
LogCompositions(tag = "MessagesScreen", msg = "Content")
|
||||
val lazyListState = rememberLazyListState()
|
||||
@@ -112,18 +117,28 @@ fun MessagesContent(
|
||||
.padding(padding)
|
||||
.fillMaxSize()
|
||||
) {
|
||||
TimelineItems(
|
||||
lazyListState = lazyListState,
|
||||
timelineItems = timelineItems,
|
||||
hasMoreToLoad = hasMoreToLoad,
|
||||
onReachedLoadMore = onReachedLoadMore,
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
if (!composerFullScreen) {
|
||||
TimelineItems(
|
||||
lazyListState = lazyListState,
|
||||
timelineItems = timelineItems,
|
||||
hasMoreToLoad = hasMoreToLoad,
|
||||
onReachedLoadMore = onReachedLoadMore,
|
||||
modifier = Modifier.weight(1f)
|
||||
)
|
||||
}
|
||||
TextComposer(
|
||||
onSendMessage = onSendMessage,
|
||||
fullscreen = composerFullScreen,
|
||||
onFullscreenToggle = onComposerFullScreenChange,
|
||||
modifier = Modifier
|
||||
.fillMaxWidth()
|
||||
.height(COMPOSER_HEIGHT)
|
||||
.let {
|
||||
if (composerFullScreen) {
|
||||
it.weight(1f)
|
||||
} else {
|
||||
it.height(COMPOSER_HEIGHT)
|
||||
}
|
||||
},
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,6 +64,19 @@ class MessagesViewModel(
|
||||
viewModelScope.launch {
|
||||
timeline.sendMessage(text.toString())
|
||||
}
|
||||
setState {
|
||||
copy(
|
||||
composerFullScreen = false
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
fun onComposerFullScreenChange() {
|
||||
setState {
|
||||
copy(
|
||||
composerFullScreen = !composerFullScreen
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private fun handleInit() {
|
||||
|
||||
@@ -4,7 +4,6 @@ import com.airbnb.mvrx.Async
|
||||
import com.airbnb.mvrx.MavericksState
|
||||
import com.airbnb.mvrx.Uninitialized
|
||||
import io.element.android.x.designsystem.components.avatar.AvatarData
|
||||
import io.element.android.x.matrix.timeline.MatrixTimelineItem
|
||||
|
||||
data class MessagesViewState(
|
||||
val roomId: String,
|
||||
@@ -12,6 +11,7 @@ data class MessagesViewState(
|
||||
val roomAvatar: AvatarData? = null,
|
||||
val timelineItems: Async<List<MessagesTimelineItemState>> = Uninitialized,
|
||||
val hasMoreToLoad: Boolean = true,
|
||||
val composerFullScreen: Boolean = false,
|
||||
) : MavericksState {
|
||||
|
||||
@Suppress("unused")
|
||||
@@ -20,9 +20,4 @@ data class MessagesViewState(
|
||||
roomName = null,
|
||||
roomAvatar = null
|
||||
)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import io.element.android.x.element.resources.R as ElementR
|
||||
fun TextComposer(
|
||||
onSendMessage: (CharSequence) -> Unit,
|
||||
modifier: Modifier = Modifier,
|
||||
fullscreen: Boolean,
|
||||
onFullscreenToggle: () -> Unit,
|
||||
) {
|
||||
AndroidView(
|
||||
modifier = modifier,
|
||||
@@ -39,10 +41,12 @@ fun TextComposer(
|
||||
}
|
||||
|
||||
override fun onFullScreenModeChanged() {
|
||||
onFullscreenToggle()
|
||||
}
|
||||
|
||||
}
|
||||
val messageComposerView = (this as MessageComposerView)
|
||||
messageComposerView.toggleFullScreen(fullscreen)
|
||||
setupComposer(messageComposerView)
|
||||
}
|
||||
},
|
||||
@@ -54,6 +58,8 @@ fun TextComposer(
|
||||
// whenever the state changes
|
||||
// Example of Compose -> View communication
|
||||
val messageComposerView = (view as MessageComposerView)
|
||||
messageComposerView.toggleFullScreen(fullscreen)
|
||||
messageComposerView.sendButton.isVisible = true
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user