Package 

Class MessageComposerViewModel


  • 
    public final class MessageComposerViewModel
    extends ViewModel
                        

    ViewModel responsible for handling the composing and sending of messages.

    It relays all its core actions to a shared data source, as a central place for all the Composer logic. Additionally, all the core data that can be reused across our SDKs is available through shared data sources, while implementation-specific data is stored in respective in the ViewModel.

    • Constructor Detail

      • MessageComposerViewModel

        MessageComposerViewModel(MessageComposerController messageComposerController)
        Parameters:
        messageComposerController - The controller used to relay all the actions and fetch all the state.
    • Method Detail

      • getMessageComposerState

         final StateFlow<MessageComposerState> getMessageComposerState()

        The full UI state that has all the required data.

      • getMessageInput

         final StateFlow<MessageInput> getMessageInput()

        UI state of the current composer input.

      • setMessageInput

         final Unit setMessageInput(String value)

        Called when the input changes and the internal state needs to be updated.

        Parameters:
        value - Current state value.
      • setAlsoSendToChannel

         final Unit setAlsoSendToChannel(Boolean alsoSendToChannel)

        Called when the "Also send as a direct message" checkbox is checked or unchecked.

        Parameters:
        alsoSendToChannel - If the message will be shown in the channel after it is sent.
      • setMessageMode

         final Unit setMessageMode(MessageMode messageMode)

        Called when the message mode changes and the internal state needs to be updated.

        This affects the business logic.

        Parameters:
        messageMode - The current message mode.
      • dismissMessageActions

         final Unit dismissMessageActions()

        Dismisses all message actions from the UI and clears the input based on the internal state.

      • addAttachments

         final Unit addAttachments(List<Attachment> attachments)

        Stores the selected attachments from the attachment picker. These will be shown in the UI, within the composer component. We upload and send these attachments once the user taps on the send button.

        Parameters:
        attachments - The attachments to store and show in the composer.
      • removeAttachment

         final Unit removeAttachment(Attachment attachment)

        Removes a selected attachment from the list, when the user taps on the cancel/delete button.

        This will update the UI to remove it from the composer component.

        Parameters:
        attachment - The attachment to remove.
      • clearAttachments

         final Unit clearAttachments()

        Removes all staged attachments.

        Call this when the attachments are consumed — for example, after a message is sent.

      • createPoll

         final Unit createPoll(CreatePollParams createPollParams)
      • sendMessage

        @JvmOverloads() final Unit sendMessage(Message message, Call.Callback<Message> callback)

        Sends a given message using our Stream API. Based on the internal state, we either edit an existing message, or we send a new message, using our API.

        It also dismisses any current message actions.

        Parameters:
        message - The message to send.
      • sendMessage

        @JvmOverloads() final Unit sendMessage(Message message)

        Sends a given message using our Stream API. Based on the internal state, we either edit an existing message, or we send a new message, using our API.

        It also dismisses any current message actions.

        Parameters:
        message - The message to send.
      • sendMessage

        @JvmOverloads() final Unit sendMessage()

        Sends a given message using our Stream API. Based on the internal state, we either edit an existing message, or we send a new message, using our API.

        It also dismisses any current message actions.

      • buildNewMessage

        @JvmOverloads() final Message buildNewMessage(String message, List<Attachment> attachments)

        Builds a new Message to send to our API. Based on the internal state, we use the current action's message and apply the given changes.

        If we're not editing a message, we'll fill in the required data for the message.

        Parameters:
        message - Message text.
        attachments - Message attachments.
      • buildNewMessage

        @JvmOverloads() final Message buildNewMessage(String message)

        Builds a new Message to send to our API. Based on the internal state, we use the current action's message and apply the given changes.

        If we're not editing a message, we'll fill in the required data for the message.

        Parameters:
        message - Message text.
      • buildNewMessage

        @JvmOverloads() final Message buildNewMessage()

        Builds a new Message to send to our API. Based on the internal state, we use the current action's message and apply the given changes.

        If we're not editing a message, we'll fill in the required data for the message.

      • leaveThread

         final Unit leaveThread()

        Updates the UI state when leaving the thread, to switch back to the MessageMode.Normal message mode, by calling setMessageMode.

        It also dismisses any currently active message actions, such as Edit and Reply, as the user left the relevant thread.

      • selectMention

         final Unit selectMention(User user)

        Autocompletes the current text input with the mention from the selected user.

        Parameters:
        user - The user that is used to autocomplete the mention.
      • selectMention

         final Unit selectMention(Mention mention)

        Autocompletes the current text input with the selected mention.

      • selectCommand

         final Unit selectCommand(Command command)

        Switches the message composer to the command input mode.

        Parameters:
        command - The command that was selected in the command suggestion list popup.
      • clearData

         final Unit clearData()

        Clears the input and the current state of the composer.