Composer: Edit and reply.
TODO: call renderComposerMode and highlight selected item.
This commit is contained in:
parent
45cf334d6e
commit
715a4de4c4
13 changed files with 152 additions and 14 deletions
|
|
@ -19,8 +19,18 @@ package io.element.android.x.textcomposer
|
|||
sealed interface MessageComposerMode {
|
||||
data class Normal(val content: CharSequence?) : MessageComposerMode
|
||||
|
||||
sealed class Special(open val event: Any /* TODO set correct type here */, open val defaultContent: CharSequence) : MessageComposerMode
|
||||
data class Edit(override val event: Any, override val defaultContent: CharSequence) : Special(event, defaultContent)
|
||||
class Quote(override val event: Any, override val defaultContent: CharSequence) : Special(event, defaultContent)
|
||||
class Reply(override val event: Any, override val defaultContent: CharSequence) : Special(event, defaultContent)
|
||||
sealed class Special(open val eventId: String, open val defaultContent: CharSequence) :
|
||||
MessageComposerMode
|
||||
|
||||
data class Edit(override val eventId: String, override val defaultContent: CharSequence) :
|
||||
Special(eventId, defaultContent)
|
||||
|
||||
class Quote(override val eventId: String, override val defaultContent: CharSequence) :
|
||||
Special(eventId, defaultContent)
|
||||
|
||||
class Reply(
|
||||
val senderName: String,
|
||||
override val eventId: String,
|
||||
override val defaultContent: CharSequence
|
||||
) : Special(eventId, defaultContent)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -506,10 +506,7 @@ class RichTextComposerLayout @JvmOverloads constructor(
|
|||
views.composerModeIconView.setImageResource(R.drawable.ic_quote)
|
||||
}
|
||||
is MessageComposerMode.Reply -> {
|
||||
// TODO We need sender info
|
||||
// val senderInfo = mode.event.senderInfo
|
||||
val userName =
|
||||
"TODO Sender name" // senderInfo.displayName ?: senderInfo.disambiguatedDisplayName
|
||||
val userName = mode.senderName
|
||||
views.composerModeTitleView.text =
|
||||
resources.getString(R.string.replying_to, userName)
|
||||
views.composerModeIconView.setImageResource(R.drawable.ic_reply)
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ fun TextComposer(
|
|||
modifier: Modifier = Modifier,
|
||||
fullscreen: Boolean,
|
||||
onFullscreenToggle: () -> Unit,
|
||||
composerMode: MessageComposerMode,
|
||||
onCloseSpecialMode: () -> Unit,
|
||||
onComposerTextChange: (CharSequence) -> Unit,
|
||||
composerCanSendMessage: Boolean,
|
||||
composerText: String?,
|
||||
|
|
@ -50,6 +52,7 @@ fun TextComposer(
|
|||
}
|
||||
|
||||
override fun onCloseRelatedMessage() {
|
||||
onCloseSpecialMode()
|
||||
}
|
||||
|
||||
override fun onSendMessage(text: CharSequence) {
|
||||
|
|
@ -70,7 +73,7 @@ fun TextComposer(
|
|||
}
|
||||
setFullScreen(fullscreen, true)
|
||||
(this as MessageComposerView).apply {
|
||||
setup(isInDarkMode)
|
||||
setup(isInDarkMode, composerMode)
|
||||
}
|
||||
}
|
||||
},
|
||||
|
|
@ -83,6 +86,7 @@ fun TextComposer(
|
|||
// Example of Compose -> View communication
|
||||
val messageComposerView = (view as MessageComposerView)
|
||||
view.setFullScreen(fullscreen, false)
|
||||
// TODO messageComposerView.renderComposerMode(composerMode)
|
||||
messageComposerView.sendButton.isInvisible = !composerCanSendMessage
|
||||
messageComposerView.setTextIfDifferent(composerText ?: "")
|
||||
}
|
||||
|
|
@ -107,7 +111,7 @@ private fun FakeComposer(modifier: Modifier) {
|
|||
}
|
||||
}
|
||||
|
||||
private fun MessageComposerView.setup(isDarkMode: Boolean) {
|
||||
private fun MessageComposerView.setup(isDarkMode: Boolean, composerMode: MessageComposerMode) {
|
||||
val editTextColor = if (isDarkMode) {
|
||||
Color.WHITE
|
||||
} else {
|
||||
|
|
@ -118,6 +122,7 @@ private fun MessageComposerView.setup(isDarkMode: Boolean) {
|
|||
editText.setHint(ElementR.string.room_message_placeholder)
|
||||
emojiButton?.isVisible = true
|
||||
sendButton.isVisible = true
|
||||
// TODO renderComposerMode(composerMode)
|
||||
}
|
||||
|
||||
@Preview
|
||||
|
|
@ -128,6 +133,8 @@ fun TextComposerPreview() {
|
|||
fullscreen = false,
|
||||
onFullscreenToggle = { },
|
||||
onComposerTextChange = {},
|
||||
composerMode = MessageComposerMode.Normal(""),
|
||||
onCloseSpecialMode = {},
|
||||
composerCanSendMessage = true,
|
||||
composerText = "Message",
|
||||
)
|
||||
|
|
|
|||
|
|
@ -8,6 +8,16 @@
|
|||
android:orientation="vertical"
|
||||
android:background="@drawable/bg_composer_rich_bottom_sheet">
|
||||
|
||||
<!--
|
||||
There are issues here:
|
||||
|
||||
View class androidx.appcompat.widget.AppCompatImageView is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
|
||||
View class io.element.android.wysiwyg.EditorEditText is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
|
||||
layout_constraintHeight_default="wrap" is deprecated. Use layout_height="WRAP_CONTENT" and layout_constrainedHeight="true" instead.
|
||||
View class com.google.android.material.textfield.TextInputEditText is an AppCompat widget that can only be used with a Theme.AppCompat theme (or descendant).
|
||||
layout_constraintHeight_default="wrap" is deprecated. Use layout_height="WRAP_CONTENT" and layout_constrainedHeight="true" instead.
|
||||
-->
|
||||
|
||||
<FrameLayout
|
||||
android:id="@+id/bottomSheetHandle"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue