Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -732,6 +732,7 @@ public final class io/getstream/chat/android/ui/common/feature/messages/list/Mes
public fun <init> (Ljava/lang/String;Lio/getstream/chat/android/ui/common/helper/ClipboardHandler;ZLjava/lang/String;Ljava/lang/String;ILio/getstream/chat/android/client/ChatClient;Lio/getstream/chat/android/client/setup/state/ClientState;Lkotlinx/coroutines/flow/StateFlow;Lio/getstream/chat/android/ui/common/state/messages/list/DeletedMessageVisibility;ZLio/getstream/chat/android/ui/common/state/messages/list/MessageFooterVisibility;ZLio/getstream/chat/android/ui/common/feature/messages/list/DateSeparatorHandler;Lio/getstream/chat/android/ui/common/feature/messages/list/DateSeparatorHandler;Lio/getstream/chat/android/ui/common/feature/messages/list/MessagePositionHandler;ZZ)V
public synthetic fun <init> (Ljava/lang/String;Lio/getstream/chat/android/ui/common/helper/ClipboardHandler;ZLjava/lang/String;Ljava/lang/String;ILio/getstream/chat/android/client/ChatClient;Lio/getstream/chat/android/client/setup/state/ClientState;Lkotlinx/coroutines/flow/StateFlow;Lio/getstream/chat/android/ui/common/state/messages/list/DeletedMessageVisibility;ZLio/getstream/chat/android/ui/common/state/messages/list/MessageFooterVisibility;ZLio/getstream/chat/android/ui/common/feature/messages/list/DateSeparatorHandler;Lio/getstream/chat/android/ui/common/feature/messages/list/DateSeparatorHandler;Lio/getstream/chat/android/ui/common/feature/messages/list/MessagePositionHandler;ZZILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun addPollOption (Lio/getstream/chat/android/models/Poll;Ljava/lang/String;)V
public final fun addPollOption (Ljava/lang/String;Ljava/lang/String;)V
public final fun banUser (Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;)V
public static synthetic fun banUser$default (Lio/getstream/chat/android/ui/common/feature/messages/list/MessageListController;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;ILjava/lang/Object;)V
public final fun blockUser (Ljava/lang/String;)V
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2447,8 +2447,18 @@ public class MessageListController(
* @param option The text of the new option to be added.
*/
public fun addPollOption(poll: Poll, option: String) {
addPollOption(pollId = poll.id, option = option)
}

/**
* Creates a new poll option for the poll identified by [pollId].
*
* @param pollId The id of the poll to which the option will be added.
* @param option The text of the new option to be added.
*/
public fun addPollOption(pollId: String, option: String) {
scope.launch {
chatClient.createPollOption(poll.id, PollOption(text = option)).await()
chatClient.createPollOption(pollId, PollOption(text = option)).await()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import io.getstream.chat.android.models.Member
import io.getstream.chat.android.models.Message
import io.getstream.chat.android.models.MessageType
import io.getstream.chat.android.models.MessagesState
import io.getstream.chat.android.models.PollOption
import io.getstream.chat.android.models.Reaction
import io.getstream.chat.android.models.SyncStatus
import io.getstream.chat.android.models.TypingEvent
Expand All @@ -49,6 +50,7 @@ import io.getstream.chat.android.randomMembers
import io.getstream.chat.android.randomMessage
import io.getstream.chat.android.randomMessageList
import io.getstream.chat.android.randomOption
import io.getstream.chat.android.randomPoll
import io.getstream.chat.android.randomPollVote
import io.getstream.chat.android.randomReaction
import io.getstream.chat.android.randomString
Expand Down Expand Up @@ -994,6 +996,21 @@ internal class MessageListControllerTests {
controller.errorEvents.value `should be equal to` expectedEvent
}

@Test
fun `When calling addPollOption, ChatClient createPollOption is invoked`() = runTest {
val poll = randomPoll()
val optionText = randomString()
val chatClient = mock<ChatClient>()
val controller = Fixture(chatClient = chatClient)
.givenCurrentUser()
.givenChannelState(messagesState = MutableStateFlow(emptyList()))
.givenCreatePollOption(callFrom { PollOption(text = optionText) })
.get()
controller.addPollOption(poll = poll, option = optionText)

verify(chatClient).createPollOption(poll.id, PollOption(text = optionText))
}

@Test
fun `When toggleOriginalText, the message translation is toggled`() = runTest {
val messageId = randomString()
Expand Down Expand Up @@ -1291,6 +1308,10 @@ internal class MessageListControllerTests {
whenever(chatClient.removePollVote(any(), any(), voteId = any())) doReturn vote
}

fun givenCreatePollOption(option: Call<PollOption>) = apply {
whenever(chatClient.createPollOption(any(), any())) doReturn option
}

fun givenSendReaction(reaction: Call<Reaction>) = apply {
whenever(chatClient.sendReaction(any(), any(), any(), any())) doReturn reaction
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2353,6 +2353,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/MessageLis
public final fun setOnReactionViewClickListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnReactionViewClickListener;)V
public final fun setOnReplyMessageClickListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnReplyMessageClickListener;)V
public final fun setOnScrollToBottomHandler (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnScrollToBottomHandler;)V
public final fun setOnSuggestPollOptionClickListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnSuggestPollOptionClickListener;)V
public final fun setOnThreadClickListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnThreadClickListener;)V
public final fun setOnUnreadLabelClickListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnUnreadLabelClickListener;)V
public final fun setOnUnreadLabelReachedListener (Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnUnreadLabelReachedListener;)V
Expand Down Expand Up @@ -2600,6 +2601,10 @@ public abstract interface class io/getstream/chat/android/ui/feature/messages/li
public abstract fun onShowAllPollOptionClick (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/Poll;)Z
}

public abstract interface class io/getstream/chat/android/ui/feature/messages/list/MessageListView$OnSuggestPollOptionClickListener {
public abstract fun onSuggestPollOptionClick (Lio/getstream/chat/android/models/Poll;)Z
}

public abstract interface class io/getstream/chat/android/ui/feature/messages/list/MessageListView$OnThreadClickListener {
public abstract fun onThreadClick (Lio/getstream/chat/android/models/Message;)Z
}
Expand Down Expand Up @@ -3153,6 +3158,7 @@ public abstract interface class io/getstream/chat/android/ui/feature/messages/li
public abstract fun getOnPollCloseClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnPollCloseClickListener;
public abstract fun getOnPollOptionClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnPollOptionClickListener;
public abstract fun getOnShowAllPollOptionClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnShowAllPollOptionClickListener;
public abstract fun getOnSuggestPollOptionClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnSuggestPollOptionClickListener;
public abstract fun getOnViewPollResultClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnViewPollResultClickListener;
public abstract fun getReactionViewClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnReactionViewClickListener;
public abstract fun getThreadClickListener ()Lio/getstream/chat/android/ui/feature/messages/list/MessageListView$OnThreadClickListener;
Expand Down Expand Up @@ -3233,7 +3239,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/adapter/vi
}

public final class io/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle : io/getstream/chat/android/ui/helper/ViewStyle {
public fun <init> (Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)V
public fun <init> (Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)V
public final fun component1 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component2 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component3 ()Landroid/graphics/drawable/Drawable;
Expand All @@ -3242,8 +3248,9 @@ public final class io/getstream/chat/android/ui/feature/messages/list/adapter/vi
public final fun component6 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component7 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun component8 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun copy (Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;
public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;ILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;
public final fun component9 ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun copy (Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;)Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;
public static synthetic fun copy$default (Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Landroid/graphics/drawable/Drawable;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;Lio/getstream/chat/android/ui/font/TextStyle;ILjava/lang/Object;)Lio/getstream/chat/android/ui/feature/messages/list/adapter/view/PollViewStyle;
public fun equals (Ljava/lang/Object;)Z
public final fun getPollCloseTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getPollOptionCheckDrawable ()Landroid/graphics/drawable/Drawable;
Expand All @@ -3252,6 +3259,7 @@ public final class io/getstream/chat/android/ui/feature/messages/list/adapter/vi
public final fun getPollResultsTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getPollShowAllOptionsTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getPollSubtitleTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getPollSuggestOptionTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public final fun getPollTitleTextStyle ()Lio/getstream/chat/android/ui/font/TextStyle;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
Expand Down Expand Up @@ -3534,6 +3542,16 @@ public final class io/getstream/chat/android/ui/feature/messages/list/internal/p
public final fun newInstance (Lio/getstream/chat/android/models/Poll;)Lio/getstream/chat/android/ui/feature/messages/list/internal/poll/PollResultsDialogFragment;
}

public final class io/getstream/chat/android/ui/feature/messages/list/internal/poll/SuggestPollOptionDialogFragment : androidx/appcompat/app/AppCompatDialogFragment {
public static final field Companion Lio/getstream/chat/android/ui/feature/messages/list/internal/poll/SuggestPollOptionDialogFragment$Companion;
public fun <init> ()V
public fun onCreateDialog (Landroid/os/Bundle;)Landroid/app/Dialog;
}

public final class io/getstream/chat/android/ui/feature/messages/list/internal/poll/SuggestPollOptionDialogFragment$Companion {
public final fun newInstance (Ljava/lang/String;)Lio/getstream/chat/android/ui/feature/messages/list/internal/poll/SuggestPollOptionDialogFragment;
}

public class io/getstream/chat/android/ui/feature/messages/list/options/message/DefaultMessageOptionItemsFactory : io/getstream/chat/android/ui/feature/messages/list/options/message/MessageOptionItemsFactory {
public fun <init> (Landroid/content/Context;)V
public fun createMessageOptionItems (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/User;ZLjava/util/Set;Lio/getstream/chat/android/ui/feature/messages/list/MessageListViewStyle;)Ljava/util/List;
Expand Down Expand Up @@ -4983,6 +5001,19 @@ public final class io/getstream/chat/android/ui/viewmodel/messages/MessageListVi
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event$PollOptionSuggested : io/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event {
public fun <init> (Ljava/lang/String;Ljava/lang/String;)V
public final fun component1 ()Ljava/lang/String;
public final fun component2 ()Ljava/lang/String;
public final fun copy (Ljava/lang/String;Ljava/lang/String;)Lio/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event$PollOptionSuggested;
public static synthetic fun copy$default (Lio/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event$PollOptionSuggested;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Object;)Lio/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event$PollOptionSuggested;
public fun equals (Ljava/lang/Object;)Z
public final fun getOption ()Ljava/lang/String;
public final fun getPollId ()Ljava/lang/String;
public fun hashCode ()I
public fun toString ()Ljava/lang/String;
}

public final class io/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event$PollOptionUpdated : io/getstream/chat/android/ui/viewmodel/messages/MessageListViewModel$Event {
public fun <init> (Lio/getstream/chat/android/models/Message;Lio/getstream/chat/android/models/Poll;Lio/getstream/chat/android/models/Option;)V
public final fun component1 ()Lio/getstream/chat/android/models/Message;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ import io.getstream.chat.android.ui.feature.messages.list.internal.SwipeReplyCal
import io.getstream.chat.android.ui.feature.messages.list.internal.canReplyToMessage
import io.getstream.chat.android.ui.feature.messages.list.internal.poll.AllPollOptionsDialogFragment
import io.getstream.chat.android.ui.feature.messages.list.internal.poll.PollResultsDialogFragment
import io.getstream.chat.android.ui.feature.messages.list.internal.poll.SuggestPollOptionDialogFragment
import io.getstream.chat.android.ui.feature.messages.list.options.message.MessageOptionItem
import io.getstream.chat.android.ui.feature.messages.list.options.message.MessageOptionItemsFactory
import io.getstream.chat.android.ui.feature.messages.list.options.message.MessageOptionsDialogFragment
Expand Down Expand Up @@ -615,6 +616,13 @@ public class MessageListView : ConstraintLayout {
true
} ?: false
}
private val defaultOnSuggestPollOptionClickListener = OnSuggestPollOptionClickListener { poll ->
context.getFragmentManager()?.let { fragmentManager ->
SuggestPollOptionDialogFragment.newInstance(poll.id)
.show(fragmentManager, SuggestPollOptionDialogFragment.TAG)
true
} ?: false
}

private val listenerContainer = MessageListListenerContainerImpl(
messageClickListener = defaultMessageClickListener,
Expand All @@ -632,6 +640,7 @@ public class MessageListView : ConstraintLayout {
onShowAllPollOptionClickListener = defaultOnShowAllPollOptionClickListener,
onPollCloseClickListener = defaultOnPollCloseClickListener,
onViewPollResultClickListener = defaultOnViewPollResultClickListener,
onSuggestPollOptionClickListener = defaultOnSuggestPollOptionClickListener,
)
private var enterThreadListener = defaultEnterThreadListener
private var userReactionClickListener = defaultUserReactionClickListener
Expand Down Expand Up @@ -1433,6 +1442,20 @@ public class MessageListView : ConstraintLayout {
}
}

/**
* Set the Suggest Poll Option click listener to be used by MessageListView.
*
* @param listener The listener to use. If null, the default will be used instead.
*/
public fun setOnSuggestPollOptionClickListener(listener: OnSuggestPollOptionClickListener?) {
listenerContainer.onSuggestPollOptionClickListener =
if (listener == null) {
defaultOnSuggestPollOptionClickListener
} else {
OnSuggestPollOptionClickListener(listener::onSuggestPollOptionClick)
}
}

/**
* Sets the message long click listener to be used by MessageListView.
*
Expand Down Expand Up @@ -2311,6 +2334,10 @@ public class MessageListView : ConstraintLayout {
public fun onViewPollResultClick(poll: Poll): Boolean
}

public fun interface OnSuggestPollOptionClickListener {
public fun onSuggestPollOptionClick(poll: Poll): Boolean
}

@Deprecated(
message = "Use ReplyMessageClickListener instead",
replaceWith = ReplaceWith("ReplyMessageClickListener"),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnPoll
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnPollOptionClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnReactionViewClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnShowAllPollOptionClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnSuggestPollOptionClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnThreadClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnTranslatedLabelClickListener
import io.getstream.chat.android.ui.feature.messages.list.MessageListView.OnUnreadLabelReachedListener
Expand Down Expand Up @@ -80,6 +81,7 @@ public sealed interface MessageListListeners {
public val onShowAllPollOptionClickListener: OnShowAllPollOptionClickListener
public val onPollCloseClickListener: OnPollCloseClickListener
public val onViewPollResultClickListener: OnViewPollResultClickListener
public val onSuggestPollOptionClickListener: OnSuggestPollOptionClickListener
}

@Deprecated(
Expand Down
Loading
Loading