Add support for slash commands (under Feature Flag) (#6482)
* Add support for slash commands * Update screenshots * Rename module `slash` to `slashcommands` * Rename `SlashCommand` to `SlashCommandService` * Introduce MsgType in order to send text message with a different msgtype value. * Format file and add parameter names, add default values and cleanup * Add isSupported parameter to filter out unsupported yet commands. * Slash commands: disable suggestions if the feature is disabled. * Fix sending shrug command. * Add missing test on SuggestionsProcessor * Add tests on MessageComposerPresenter about slash command. * Fix import ordering * Add missing tests on CommandExecutor * Add missing tests in MarkdownTextEditorStateTest * Slash commands: Improve code when sending message with prefix. * Slash commands: Add support for /unflip --------- Co-authored-by: ElementBot <android@element.io>
This commit is contained in:
parent
3634b5593c
commit
4ad495d36c
65 changed files with 3038 additions and 86 deletions
|
|
@ -27,6 +27,16 @@ sealed interface RoomIdOrAlias : Parcelable {
|
|||
is Id -> roomId.value
|
||||
is Alias -> roomAlias.value
|
||||
}
|
||||
|
||||
companion object {
|
||||
fun from(id: String): RoomIdOrAlias? {
|
||||
return when {
|
||||
MatrixPatterns.isRoomId(id) -> Id(RoomId(id))
|
||||
MatrixPatterns.isRoomAlias(id) -> Alias(RoomAlias(id))
|
||||
else -> null
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun RoomId.toRoomIdOrAlias() = RoomIdOrAlias.Id(this)
|
||||
|
|
|
|||
|
|
@ -17,3 +17,18 @@ interface MxcTools {
|
|||
*/
|
||||
fun mxcUri2FilePath(mxcUri: String): String?
|
||||
}
|
||||
|
||||
/**
|
||||
* "mxc" scheme, including "://". So "mxc://".
|
||||
*/
|
||||
const val MATRIX_CONTENT_URI_SCHEME = "mxc://"
|
||||
|
||||
/**
|
||||
* Return true if the String starts with "mxc://".
|
||||
*/
|
||||
fun String.isMxcUrl() = startsWith(MATRIX_CONTENT_URI_SCHEME)
|
||||
|
||||
/**
|
||||
* Remove the "mxc://" prefix. No op if the String is not a Mxc URL.
|
||||
*/
|
||||
fun String.removeMxcPrefix() = removePrefix(MATRIX_CONTENT_URI_SCHEME)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,19 @@
|
|||
/*
|
||||
* Copyright (c) 2026 Element Creations Ltd.
|
||||
*
|
||||
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial.
|
||||
* Please see LICENSE files in the repository root for full details.
|
||||
*/
|
||||
|
||||
package io.element.android.libraries.matrix.api.timeline
|
||||
|
||||
enum class MsgType {
|
||||
MSG_TYPE_TEXT,
|
||||
MSG_TYPE_EMOTE,
|
||||
|
||||
// For future support
|
||||
MSG_TYPE_SNOW,
|
||||
|
||||
// For future support
|
||||
MSG_TYPE_CONFETTI,
|
||||
}
|
||||
|
|
@ -69,6 +69,8 @@ interface Timeline : AutoCloseable {
|
|||
body: String,
|
||||
htmlBody: String?,
|
||||
intentionalMentions: List<IntentionalMention>,
|
||||
msgType: MsgType = MsgType.MSG_TYPE_TEXT,
|
||||
asPlainText: Boolean = false,
|
||||
): Result<Unit>
|
||||
|
||||
suspend fun editMessage(
|
||||
|
|
@ -90,6 +92,7 @@ interface Timeline : AutoCloseable {
|
|||
htmlBody: String?,
|
||||
intentionalMentions: List<IntentionalMention>,
|
||||
fromNotification: Boolean = false,
|
||||
msgType: MsgType = MsgType.MSG_TYPE_TEXT,
|
||||
): Result<Unit>
|
||||
|
||||
suspend fun sendImage(
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue