diff --git a/vector/src/main/java/im/vector/app/features/command/Command.kt b/vector/src/main/java/im/vector/app/features/command/Command.kt index 9702f917c1..66d88f149a 100644 --- a/vector/src/main/java/im/vector/app/features/command/Command.kt +++ b/vector/src/main/java/im/vector/app/features/command/Command.kt @@ -45,7 +45,8 @@ enum class Command(val command: String, val parameters: String, @StringRes val d SHRUG("/shrug", "", R.string.command_description_shrug), PLAIN("/plain", "", R.string.command_description_plain), DISCARD_SESSION("/discardsession", "", R.string.command_description_discard_session), - CONFETTI("/confetti", "", R.string.command_confetti); + CONFETTI("/confetti", "", R.string.command_confetti), + SNOW("/snow", "", R.string.command_snow); val length get() = command.length + 1 diff --git a/vector/src/main/java/im/vector/app/features/command/CommandParser.kt b/vector/src/main/java/im/vector/app/features/command/CommandParser.kt index 0710faa47d..d458751364 100644 --- a/vector/src/main/java/im/vector/app/features/command/CommandParser.kt +++ b/vector/src/main/java/im/vector/app/features/command/CommandParser.kt @@ -18,6 +18,7 @@ package im.vector.app.features.command import im.vector.app.core.extensions.isEmail import im.vector.app.core.extensions.isMsisdn +import im.vector.app.features.home.room.detail.ChatEffect import org.matrix.android.sdk.api.MatrixPatterns import org.matrix.android.sdk.api.session.identity.ThreePid import timber.log.Timber @@ -293,7 +294,11 @@ object CommandParser { } Command.CONFETTI.command -> { val message = textMessage.substring(Command.CONFETTI.command.length).trim() - ParsedCommand.Confetti(message) + ParsedCommand.SendChatEffect(ChatEffect.CONFETTI, message) + } + Command.SNOW.command -> { + val message = textMessage.substring(Command.SNOW.command.length).trim() + ParsedCommand.SendChatEffect(ChatEffect.SNOW, message) } else -> { // Unknown command diff --git a/vector/src/main/java/im/vector/app/features/command/ParsedCommand.kt b/vector/src/main/java/im/vector/app/features/command/ParsedCommand.kt index 72c0ac496e..d17faeafb8 100644 --- a/vector/src/main/java/im/vector/app/features/command/ParsedCommand.kt +++ b/vector/src/main/java/im/vector/app/features/command/ParsedCommand.kt @@ -16,6 +16,7 @@ package im.vector.app.features.command +import im.vector.app.features.home.room.detail.ChatEffect import org.matrix.android.sdk.api.session.identity.ThreePid /** @@ -55,5 +56,5 @@ sealed class ParsedCommand { class SendShrug(val message: CharSequence) : ParsedCommand() class SendPoll(val question: String, val options: List) : ParsedCommand() object DiscardSession : ParsedCommand() - class Confetti(val message: String) : ParsedCommand() + class SendChatEffect(val chatEffect: ChatEffect, val message: String) : ParsedCommand() } diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/ChatEffectManager.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/ChatEffectManager.kt index 6871b3a5f0..ee663b9bbd 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/ChatEffectManager.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/ChatEffectManager.kt @@ -29,6 +29,13 @@ enum class ChatEffect { SNOW } +fun ChatEffect.toMessageType(): String { + return when (this) { + ChatEffect.CONFETTI -> MessageType.MSGTYPE_CONFETTI + ChatEffect.SNOW -> MessageType.MSGTYPE_SNOW + } +} + /** * A simple chat effect manager helper class * Used by the view model to know if an event that become visible should trigger a chat effect. diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt index 4dd9c62a41..45efe1e15a 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailFragment.kt @@ -56,7 +56,6 @@ import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import androidx.transition.TransitionManager -import butterknife.BindView import com.airbnb.epoxy.EpoxyModel import com.airbnb.epoxy.OnModelBuildFinishedListener import com.airbnb.epoxy.addGlidePreloader diff --git a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt index 0b580cc6d9..d34d01080e 100644 --- a/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/home/room/detail/RoomDetailViewModel.kt @@ -715,8 +715,8 @@ class RoomDetailViewModel @AssistedInject constructor( _viewEvents.post(RoomDetailViewEvents.SlashCommandHandled()) popDraft() } - is ParsedCommand.Confetti -> { - room.sendTextMessage(slashCommandResult.message, MessageType.MSGTYPE_CONFETTI) + is ParsedCommand.SendChatEffect -> { + room.sendTextMessage(slashCommandResult.message, slashCommandResult.chatEffect.toMessageType()) _viewEvents.post(RoomDetailViewEvents.SlashCommandHandled()) popDraft() } diff --git a/vector/src/main/res/values/strings.xml b/vector/src/main/res/values/strings.xml index f474af84c8..8376e9e9dd 100644 --- a/vector/src/main/res/values/strings.xml +++ b/vector/src/main/res/values/strings.xml @@ -2571,6 +2571,7 @@ Sends the given message with confetti + Sends the given message with snow Unencrypted Encrypted by an unverified device