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
770 changes: 375 additions & 395 deletions stream-chat-android-compose/api/stream-chat-android-compose.api

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.getstream.chat.android.compose.ui.components.selectedmessage
package io.getstream.chat.android.compose.ui.components.messageactions

import android.os.Build
import android.view.WindowManager
Expand Down Expand Up @@ -64,9 +64,9 @@
import io.getstream.chat.android.compose.ui.components.messageoptions.defaultMessageOptionsState
import io.getstream.chat.android.compose.ui.messages.list.LocalSelectedMessageSnapshot
import io.getstream.chat.android.compose.ui.theme.ChatTheme
import io.getstream.chat.android.compose.ui.theme.MessageActionsHeaderParams
import io.getstream.chat.android.compose.ui.theme.MessageActionsOptionsParams
import io.getstream.chat.android.compose.ui.theme.MessageContainerParams
import io.getstream.chat.android.compose.ui.theme.MessageMenuHeaderContentParams
import io.getstream.chat.android.compose.ui.theme.MessageMenuOptionsParams
import io.getstream.chat.android.compose.ui.theme.StreamTokens
import io.getstream.chat.android.compose.util.extensions.toSet
import io.getstream.chat.android.models.Channel
Expand Down Expand Up @@ -104,7 +104,7 @@
*/
@Suppress("LongMethod")
@Composable
public fun SelectedMessageMenu(
public fun MessageActions(

Check warning on line 107 in stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageactions/MessageActions.kt

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

This function has 8 parameters, which is greater than the 7 authorized.

See more on https://sonarcloud.io/project/issues?id=GetStream_stream-chat-android&issues=AZ12416i6AnbEIDJcx_7&open=AZ12416i6AnbEIDJcx_7&pullRequest=6356
message: Message,
messageOptions: List<MessageOptionItemState>,
ownCapabilities: Set<String>,
Expand Down Expand Up @@ -187,9 +187,9 @@
horizontalAlignment = messageAlignment.contentAlignment,
) {
val canLeaveReaction = ChannelCapabilities.SEND_REACTION in ownCapabilities
if (canLeaveReaction && ChatTheme.reactionOptionsTheme.areReactionOptionsVisible) {
ChatTheme.componentFactory.MessageMenuHeaderContent(
params = MessageMenuHeaderContentParams(
if (canLeaveReaction && ChatTheme.config.messageActions.reactionsEnabled) {
ChatTheme.componentFactory.MessageActionsHeader(
params = MessageActionsHeaderParams(
modifier = bubbleAlignmentPadding.then(animation.peripheralModifier(slideY = (-24).dp)),
message = message,
messageOptions = messageOptions,
Expand Down Expand Up @@ -221,8 +221,8 @@
)
}

ChatTheme.componentFactory.MessageMenuOptions(
params = MessageMenuOptionsParams(
ChatTheme.componentFactory.MessageActionsOptions(
params = MessageActionsOptionsParams(
modifier = bubbleAlignmentPadding.then(animation.peripheralModifier(slideY = 24.dp)),
message = message,
options = messageOptions,
Expand Down Expand Up @@ -270,7 +270,7 @@
private const val DimAmount = 0.7f

/**
* Holds the animation state for the [SelectedMessageMenu] pop-out effect.
* Holds the animation state for the [MessageActions] pop-out effect.
*
* Two parallel animations drive the menu entrance:
* - **message**: slides the message from its list position to the dialog center
Expand Down Expand Up @@ -357,45 +357,45 @@

@Preview(showBackground = true)
@Composable
private fun SelectedMessageMenuForIncomingMessagePreview() {
private fun MessageActionsForIncomingMessagePreview() {
ChatTheme {
SelectedMessageMenuForIncomingMessage()
MessageActionsForIncomingMessage()
}
}

@Preview(showBackground = true)
@Composable
private fun SelectedMessageMenuForOutgoingMessagePreview() {
private fun MessageActionsForOutgoingMessagePreview() {
ChatTheme {
SelectedMessageMenuForOutgoingMessage()
MessageActionsForOutgoingMessage()
}
}

@Composable
internal fun SelectedMessageMenuForIncomingMessage() {
SelectedMessageMenuPreview(
internal fun MessageActionsForIncomingMessage() {
MessageActionsPreview(
selectedMessage = PreviewMessageData.message1,
)
}

@Composable
internal fun SelectedMessageMenuForOutgoingMessage() {
SelectedMessageMenuPreview(
internal fun MessageActionsForOutgoingMessage() {
MessageActionsPreview(
selectedMessage = PreviewMessageData.message1.copy(user = PreviewUserData.user1),
)
}

@Preview(showBackground = true)
@Composable
private fun SelectedMessageMenuForFailedMessagePreview() {
private fun MessageActionsForFailedMessagePreview() {
ChatTheme {
SelectedMessageMenuForFailedMessage()
MessageActionsForFailedMessage()
}
}

@Composable
internal fun SelectedMessageMenuForFailedMessage() {
SelectedMessageMenuPreview(
internal fun MessageActionsForFailedMessage() {
MessageActionsPreview(
selectedMessage = PreviewMessageData.message1.copy(
user = PreviewUserData.user1,
syncStatus = SyncStatus.FAILED_PERMANENTLY,
Expand All @@ -404,15 +404,15 @@
}

@Composable
private fun SelectedMessageMenuPreview(selectedMessage: Message) {
private fun MessageActionsPreview(selectedMessage: Message) {
val messageOptions = defaultMessageOptionsState(
selectedMessage = selectedMessage,
currentUser = PreviewUserData.user1,
isInThread = false,
channel = Channel(ownCapabilities = ChannelCapabilities.toSet()),
)

SelectedMessageMenu(
MessageActions(
message = selectedMessage,
messageOptions = messageOptions,
onMessageAction = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.getstream.chat.android.compose.ui.components.selectedmessage
package io.getstream.chat.android.compose.ui.components.messageactions

import androidx.compose.foundation.background
import androidx.compose.foundation.border
Expand Down Expand Up @@ -52,7 +52,7 @@ import io.getstream.chat.android.models.Reaction
* @param modifier Modifier for styling.
*/
@Composable
public fun MessageMenuHeader(
public fun MessageActionsHeader(
ownReactions: List<Reaction>,
onReactionOptionSelected: (ReactionOptionItemState) -> Unit,
onShowMoreReactionsSelected: () -> Unit,
Expand Down Expand Up @@ -108,12 +108,12 @@ public fun MessageMenuHeader(

@Preview(showBackground = true)
@Composable
private fun MessageMenuHeaderPreview() {
private fun MessageActionsHeaderPreview() {
ChatPreviewTheme {
val reactionType = ChatTheme.reactionResolver.supportedReactions.firstOrNull()

if (reactionType != null) {
MessageMenuHeader(
MessageActionsHeader(
ownReactions = listOf(Reaction(type = reactionType)),
onReactionOptionSelected = {},
onShowMoreReactionsSelected = {},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.getstream.chat.android.compose.ui.components.selectedmessage
package io.getstream.chat.android.compose.ui.components.messageactions

import androidx.compose.foundation.background
import androidx.compose.foundation.border
Expand Down
Comment thread
andremion marked this conversation as resolved.
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.getstream.chat.android.compose.ui.components.selectedmessage
package io.getstream.chat.android.compose.ui.components.messageactions

import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Arrangement
Expand Down Expand Up @@ -83,7 +83,7 @@
*/
@OptIn(ExperimentalMaterial3Api::class)
@Composable
public fun SelectedReactionsMenu(
public fun ReactionsMenu(
message: Message,
currentUser: User?,
ownCapabilities: Set<String>,
Expand Down Expand Up @@ -186,7 +186,7 @@

@Suppress("LongParameterList")
@Composable
private fun ReactionsMenuList(

Check warning on line 189 in stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messageactions/ReactionsMenu.kt

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

This function has 10 parameters, which is greater than the 7 authorized.

See more on https://sonarcloud.io/project/issues?id=GetStream_stream-chat-android&issues=AZ12412g6AnbEIDJcx_6&open=AZ12412g6AnbEIDJcx_6&pullRequest=6356
reactionGroups: List<MessageReactionItemState>,
items: List<UserReactionItemState>,
selectedReactionType: String?,
Expand Down Expand Up @@ -371,15 +371,15 @@

@Preview
@Composable
private fun OneSelectedReactionMenuPreview() {
private fun OneReactionMenuPreview() {
ChatTheme {
ReactionsMenuContentOneReaction()
}
}

@Preview
@Composable
private fun ManySelectedReactionsMenuPreview() {
private fun ManyReactionsMenuPreview() {
ChatTheme {
ReactionsMenuContentManyReactions()
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
* limitations under the License.
*/

package io.getstream.chat.android.compose.ui.components.selectedmessage
package io.getstream.chat.android.compose.ui.components.messageactions

import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@

package io.getstream.chat.android.compose.ui.components.messageoptions

import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu
import io.getstream.chat.android.compose.ui.components.messageactions.MessageActions

/**
* Controls option visibility in the message options menu. All options are visible by default.
* Controls option visibility in the message actions overlay. All options are visible by default.
*
* @param isRetryMessageVisible Visibility of the retry failed message option.
* @param isReplyVisible Visibility of the reply to message option (quote message).
Expand All @@ -33,11 +33,11 @@ import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedM
* @param isMuteUserVisible Visibility of the mute user option.
* @param isBlockUserVisible Visibility of the block user option.
*
* @see [SelectedMessageMenu]
* @see [MessageActions]
* @see [MessageOptions]
* @see [defaultMessageOptionsState]
*/
public data class MessageOptionItemVisibility(
public data class MessageActionsOptionsVisibility(
val isRetryMessageVisible: Boolean = true,
val isReplyVisible: Boolean = true,
val isThreadReplyVisible: Boolean = true,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import io.getstream.chat.android.compose.R
import io.getstream.chat.android.compose.state.messageoptions.MessageOptionItemState
import io.getstream.chat.android.compose.ui.components.common.ContextualMenu
import io.getstream.chat.android.compose.ui.theme.ChatTheme
import io.getstream.chat.android.compose.ui.theme.MessageMenuOptionsItemParams
import io.getstream.chat.android.compose.ui.theme.MessageActionsOptionsItemParams
import io.getstream.chat.android.compose.util.extensions.canBlockUser
import io.getstream.chat.android.compose.util.extensions.canCopyMessage
import io.getstream.chat.android.compose.util.extensions.canDeleteMessage
Expand Down Expand Up @@ -73,8 +73,8 @@ public fun MessageOptions(
) {
ContextualMenu(modifier) {
options.forEach { option ->
ChatTheme.componentFactory.MessageMenuOptionsItem(
params = MessageMenuOptionsItemParams(
ChatTheme.componentFactory.MessageActionsOptionsItem(
params = MessageActionsOptionsItemParams(
option = option,
onMessageOptionSelected = onMessageOptionSelected,
),
Expand Down Expand Up @@ -105,7 +105,7 @@ public fun defaultMessageOptionsState(
}
val selectedMessageUserId = selectedMessage.user.id
val ownCapabilities = channel.ownCapabilities
val visibility = ChatTheme.messageOptionsTheme.optionVisibility
val visibility = ChatTheme.config.messageActions.optionVisibility

return listOfNotNull(
if (visibility.canRetryMessage(currentUser, selectedMessage)) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ import io.getstream.chat.android.compose.ui.messages.list.SelectedMessageSnapsho
import io.getstream.chat.android.compose.ui.theme.AttachmentPickerMenuParams
import io.getstream.chat.android.compose.ui.theme.ChannelHeaderParams
import io.getstream.chat.android.compose.ui.theme.ChatTheme
import io.getstream.chat.android.compose.ui.theme.MessageMenuParams
import io.getstream.chat.android.compose.ui.theme.MessageActionsParams
import io.getstream.chat.android.compose.ui.theme.MessageReactionPickerParams
import io.getstream.chat.android.compose.ui.theme.ReactionsMenuParams
import io.getstream.chat.android.compose.ui.util.StreamSnackbarHost
Expand Down Expand Up @@ -526,8 +526,8 @@ private fun BoxScope.ChannelScreenMenus(
}

if (selectedMessageState is SelectedMessageOptionsState && selectedMessage.id.isNotEmpty()) {
ChatTheme.componentFactory.MessageMenu(
params = MessageMenuParams(
ChatTheme.componentFactory.MessageActions(
params = MessageActionsParams(
messageOptions = messageOptions,
message = selectedMessage,
ownCapabilities = ownCapabilities,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ public fun MessageContainer(

val messageAlignment = ChatTheme.messageAlignmentProvider.provideMessageAlignment(messageItem)
val description = stringResource(id = R.string.stream_compose_cd_message_item)
val optionVisibility = ChatTheme.messageOptionsTheme.optionVisibility
val optionVisibility = ChatTheme.config.messageActions.optionVisibility
val isSwipeable = remember(message, messageItem.ownCapabilities, optionVisibility) {
optionVisibility.canReplyToMessage(message, messageItem.ownCapabilities)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,6 @@ import io.getstream.chat.android.compose.ui.components.messages.SegmentedMessage
import io.getstream.chat.android.compose.ui.components.messages.SwipeToReplyIcon
import io.getstream.chat.android.compose.ui.components.reactionpicker.ReactionsPicker
import io.getstream.chat.android.compose.ui.components.reactions.ReactionToggleSize
import io.getstream.chat.android.compose.ui.components.selectedmessage.MessageMenuHeader
import io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedMessageMenu
import io.getstream.chat.android.compose.ui.messages.composer.internal.AudioRecordingButton
import io.getstream.chat.android.compose.ui.messages.composer.internal.MessageComposerEditIndicator
import io.getstream.chat.android.compose.ui.messages.composer.internal.attachments.MessageComposerAttachmentAudioRecordItem
Expand Down Expand Up @@ -1847,14 +1845,14 @@ public interface ChatComponentFactory {
}

/**
* Factory method for creating the full content of the SelectedMessageMenu.
* Factory method for creating the full content of the [MessageActions] overlay.
* This is the menu that appears when a message is long-pressed.
*
* @param params Parameters for this component.
*/
@Composable
public fun MessageMenu(params: MessageMenuParams) {
SelectedMessageMenu(
public fun MessageActions(params: MessageActionsParams) {
io.getstream.chat.android.compose.ui.components.messageactions.MessageActions(
modifier = params.modifier,
messageOptions = params.messageOptions,
message = params.message,
Expand All @@ -1867,13 +1865,13 @@ public interface ChatComponentFactory {
}

/**
* Factory method for creating the header content of the SelectedMessageMenu.
* Factory method for creating the header content of the [MessageActions] overlay.
*
* @param params Parameters for this component.
*/
@Composable
public fun MessageMenuHeaderContent(params: MessageMenuHeaderContentParams) {
MessageMenuHeader(
public fun MessageActionsHeader(params: MessageActionsHeaderParams) {
io.getstream.chat.android.compose.ui.components.messageactions.MessageActionsHeader(
modifier = params.modifier,
onReactionOptionSelected = {
params.onMessageAction(
Expand All @@ -1894,7 +1892,7 @@ public interface ChatComponentFactory {
* @param params Parameters for this component.
*/
@Composable
public fun MessageMenuOptions(params: MessageMenuOptionsParams) {
public fun MessageActionsOptions(params: MessageActionsOptionsParams) {
MessageOptions(
modifier = params.modifier,
onMessageOptionSelected = params.onMessageOptionSelected,
Expand All @@ -1903,12 +1901,12 @@ public interface ChatComponentFactory {
}

/**
* Factory method for creating an individual option item in the SelectedMessageMenu.
* Factory method for creating an individual action item in the [MessageActions] overlay.
*
* @param params Parameters for this component.
*/
@Composable
public fun MessageMenuOptionsItem(params: MessageMenuOptionsItemParams) {
public fun MessageActionsOptionsItem(params: MessageActionsOptionsItemParams) {
ContextualMenuItem(
label = stringResource(id = params.option.title),
leadingIcon = params.option.iconPainter,
Expand Down Expand Up @@ -1956,7 +1954,7 @@ public interface ChatComponentFactory {
*/
@Composable
public fun ReactionsMenu(params: ReactionsMenuParams) {
io.getstream.chat.android.compose.ui.components.selectedmessage.SelectedReactionsMenu(
io.getstream.chat.android.compose.ui.components.messageactions.ReactionsMenu(
modifier = params.modifier,
currentUser = params.currentUser,
message = params.message,
Expand All @@ -1974,7 +1972,7 @@ public interface ChatComponentFactory {
*/
@Composable
public fun ReactionsMenuContent(params: ReactionsMenuContentParams) {
io.getstream.chat.android.compose.ui.components.selectedmessage.ReactionsMenuContent(
io.getstream.chat.android.compose.ui.components.messageactions.ReactionsMenuContent(
modifier = params.modifier,
currentUser = params.currentUser,
message = params.message,
Expand Down
Loading
Loading