Messages: update how textcomposer is composed

This commit is contained in:
ganfra
2022-11-08 17:05:32 +01:00
parent 17e90560e2
commit 1548dd4e6a
2 changed files with 38 additions and 48 deletions

View File

@@ -109,7 +109,7 @@ fun MessagesContent(
)
},
content = { padding ->
Box(
Column(
modifier = Modifier
.padding(padding)
.fillMaxSize()
@@ -119,38 +119,37 @@ fun MessagesContent(
timelineItems = timelineItems,
hasMoreToLoad = hasMoreToLoad,
onReachedLoadMore = onReachedLoadMore,
modifier = Modifier.weight(1f)
)
Box(
modifier = Modifier.align(Alignment.BottomCenter)
) {
TextComposer(
callback = object : Callback {
override fun onRichContentSelected(contentUri: Uri): Boolean {
return false
}
TextComposer(
callback = object : Callback {
override fun onRichContentSelected(contentUri: Uri): Boolean {
return false
}
override fun onTextChanged(text: CharSequence) {
}
override fun onTextChanged(text: CharSequence) {
}
override fun onCloseRelatedMessage() {
}
override fun onCloseRelatedMessage() {
}
override fun onSendMessage(text: CharSequence) {
onSendMessage.invoke(text)
}
override fun onSendMessage(text: CharSequence) {
onSendMessage.invoke(text)
}
override fun onAddAttachment() {
}
override fun onAddAttachment() {
}
override fun onExpandOrCompactChange() {
}
override fun onExpandOrCompactChange() {
}
override fun onFullScreenModeChanged() {
}
},
height = COMPOSER_HEIGHT
)
}
override fun onFullScreenModeChanged() {
}
},
modifier = Modifier
.fillMaxWidth()
.height(COMPOSER_HEIGHT)
)
}
}
)
@@ -162,19 +161,15 @@ fun TimelineItems(
timelineItems: List<MessagesTimelineItemState>,
hasMoreToLoad: Boolean,
onReachedLoadMore: () -> Unit,
modifier: Modifier = Modifier,
) {
LazyColumn(
modifier = Modifier
.padding(bottom = COMPOSER_HEIGHT)
.fillMaxSize(),
modifier = modifier.fillMaxWidth(),
state = lazyListState,
horizontalAlignment = Alignment.Start,
verticalArrangement = Arrangement.Bottom,
reverseLayout = true
) {
item {
Spacer(modifier = Modifier.height(8.dp))
}
itemsIndexed(timelineItems) { index, timelineItem ->
TimelineItemRow(timelineItem = timelineItem)
}
@@ -267,7 +262,6 @@ fun MessageEventBubble(
messageEvent: MessagesTimelineItemState.MessageEvent,
modifier: Modifier = Modifier,
) {
fun MessagesTimelineItemState.MessageEvent.bubbleShape(): Shape {
return when (groupPosition) {
MessagesItemGroupPosition.First -> if (isMine) {
@@ -295,6 +289,14 @@ fun MessageEventBubble(
}
}
fun Modifier.offsetForItem(messageEvent: MessagesTimelineItemState.MessageEvent): Modifier {
return if (messageEvent.isMine) {
offset(y = -(12.dp))
} else {
offset(x = 20.dp, y = -(12.dp))
}
}
val (backgroundBubbleColor, border) = if (messageEvent.isMine) {
Pair(MaterialTheme.colorScheme.surfaceVariant, null)
} else {
@@ -304,15 +306,7 @@ fun MessageEventBubble(
)
}
fun Modifier.offsetForItem(messageEvent: MessagesTimelineItemState.MessageEvent): Modifier {
return if (messageEvent.isMine) {
offset(y = -(12.dp))
} else {
offset(x = 20.dp, y = -(12.dp))
}
}
val bubbleShape = remember { messageEvent.bubbleShape() }
val bubbleShape = messageEvent.bubbleShape()
Surface(
modifier = modifier
.widthIn(min = 80.dp)