Add support for sending images from the keyboard #1977

This commit is contained in:
Benoit Marty 2023-12-29 15:14:40 +01:00
parent 9ac488b684
commit 47f0a2e73c
5 changed files with 28 additions and 1 deletions

View file

@ -16,6 +16,7 @@
package io.element.android.features.messages.impl.messagecomposer
import android.net.Uri
import androidx.compose.runtime.Immutable
import io.element.android.features.messages.impl.mentions.MentionSuggestion
import io.element.android.libraries.textcomposer.model.Message
@ -26,6 +27,7 @@ import io.element.android.libraries.textcomposer.model.Suggestion
sealed interface MessageComposerEvents {
data object ToggleFullScreenState : MessageComposerEvents
data class SendMessage(val message: Message) : MessageComposerEvents
data class SendUri(val uri: Uri) : MessageComposerEvents
data object CloseSpecialMode : MessageComposerEvents
data class SetMode(val composerMode: MessageComposerMode) : MessageComposerEvents
data object AddAttachment : MessageComposerEvents

View file

@ -225,6 +225,18 @@ class MessageComposerPresenter @Inject constructor(
updateComposerMode = { messageComposerContext.composerMode = it },
richTextEditorState = richTextEditorState,
)
is MessageComposerEvents.SendUri -> appCoroutineScope.sendAttachment(
attachment = Attachment.Media(
localMedia = localMediaFactory.createFromUri(
uri = event.uri,
mimeType = null,
name = null,
formattedFileSize = null
),
compressIfPossible = true
),
attachmentState = attachmentsState,
)
is MessageComposerEvents.SetMode -> {
messageComposerContext.composerMode = event.composerMode
when (event.composerMode) {

View file

@ -16,6 +16,7 @@
package io.element.android.features.messages.impl.messagecomposer
import android.net.Uri
import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.IntrinsicSize
import androidx.compose.foundation.layout.height
@ -52,6 +53,10 @@ internal fun MessageComposerView(
state.eventSink(MessageComposerEvents.SendMessage(message))
}
fun sendUri(uri: Uri) {
state.eventSink(MessageComposerEvents.SendUri(uri))
}
fun onAddAttachment() {
state.eventSink(MessageComposerEvents.AddAttachment)
}
@ -117,6 +122,7 @@ internal fun MessageComposerView(
onSuggestionReceived = ::onSuggestionReceived,
onError = ::onError,
currentUserId = state.currentUserId,
onRichContentSelected = ::sendUri,
)
}