Skip to content

Commit 5a924c0

Browse files
committed
Hide the message status indicator when a message is deleted
1 parent eeccfda commit 5a924c0

File tree

3 files changed

+13
-7
lines changed
  • stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messages
  • stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/extensions
  • stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/viewholder/decorator/internal

3 files changed

+13
-7
lines changed

stream-chat-android-compose/src/main/java/io/getstream/chat/android/compose/ui/components/messages/MessageFooter.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import io.getstream.chat.android.compose.ui.util.clickable
4444
import io.getstream.chat.android.core.utils.date.truncateFuture
4545
import io.getstream.chat.android.models.Message
4646
import io.getstream.chat.android.ui.common.state.messages.list.MessageItemState
47+
import io.getstream.chat.android.ui.common.utils.extensions.shouldShowMessageStatusIndicator
4748

4849
/**
4950
* Default message footer, which contains either [MessageThreadFooter] or the default footer, which
@@ -102,7 +103,7 @@ public fun MessageFooter(
102103
maxLines = 1,
103104
color = ChatTheme.colors.textLowEmphasis,
104105
)
105-
} else {
106+
} else if (message.shouldShowMessageStatusIndicator()) {
106107
ChatTheme.componentFactory.MessageFooterStatusIndicator(
107108
params = MessageFooterStatusIndicatorParams(
108109
modifier = Modifier.padding(end = 4.dp),

stream-chat-android-ui-common/src/main/kotlin/io/getstream/chat/android/ui/common/utils/extensions/Message.kt

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,13 @@
1717
package io.getstream.chat.android.ui.common.utils.extensions
1818

1919
import io.getstream.chat.android.client.ChatClient
20+
import io.getstream.chat.android.client.utils.message.isDeleted
21+
import io.getstream.chat.android.client.utils.message.isEphemeral
2022
import io.getstream.chat.android.core.internal.InternalStreamChatApi
2123
import io.getstream.chat.android.models.Message
2224
import io.getstream.chat.android.models.MessageModerationAction
2325
import io.getstream.chat.android.models.ModerationAction
26+
import io.getstream.chat.android.models.SyncStatus
2427
import io.getstream.chat.android.models.User
2528

2629
/**
@@ -32,6 +35,10 @@ public fun Message.isMine(chatClient: ChatClient): Boolean = chatClient.clientSt
3235
@InternalStreamChatApi
3336
public fun Message.isMine(currentUser: User?): Boolean = currentUser?.id == user.id
3437

38+
@InternalStreamChatApi
39+
public fun Message.shouldShowMessageStatusIndicator(): Boolean =
40+
!isEphemeral() && !isDeleted() && syncStatus != SyncStatus.FAILED_PERMANENTLY
41+
3542
/**
3643
* @return if the message failed at moderation or not.
3744
*/

stream-chat-android-ui-components/src/main/kotlin/io/getstream/chat/android/ui/feature/messages/list/adapter/viewholder/decorator/internal/FootnoteDecorator.kt

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import io.getstream.chat.android.ui.ChatUI
3131
import io.getstream.chat.android.ui.R
3232
import io.getstream.chat.android.ui.common.helper.DateFormatter
3333
import io.getstream.chat.android.ui.common.state.messages.list.DeletedMessageVisibility
34+
import io.getstream.chat.android.ui.common.utils.extensions.shouldShowMessageStatusIndicator
3435
import io.getstream.chat.android.ui.feature.messages.list.MessageListItemStyle
3536
import io.getstream.chat.android.ui.feature.messages.list.MessageListViewStyle
3637
import io.getstream.chat.android.ui.feature.messages.list.adapter.MessageListItem
@@ -389,11 +390,13 @@ internal class FootnoteDecorator(
389390
SyncStatus.SYNC_NEEDED,
390391
SyncStatus.AWAITING_ATTACHMENTS,
391392
-> itemStyle.iconIndicatorPendingSync
393+
392394
SyncStatus.COMPLETED -> when {
393395
data.isMessageRead -> itemStyle.iconIndicatorRead
394396
data.isMessageDelivered -> itemStyle.iconIndicatorDelivered
395397
else -> itemStyle.iconIndicatorSent
396398
}
399+
397400
else -> null
398401
}
399402
if (statusIndicator != null) {
@@ -422,13 +425,8 @@ internal class FootnoteDecorator(
422425
}
423426

424427
private fun shouldHideReadRelatedInfo(data: MessageListItem.MessageItem): Boolean {
425-
val status = data.message.syncStatus
426428
val isNotBottomPosition = data.isNotBottomPosition()
427429
val isTheirs = data.isTheirs
428-
val isEphemeral = data.message.isEphemeral()
429-
val isDeleted = data.message.isDeleted()
430-
val isFailedPermanently = status == SyncStatus.FAILED_PERMANENTLY
431-
432-
return isNotBottomPosition || isTheirs || isEphemeral || isDeleted || isFailedPermanently
430+
return isNotBottomPosition || isTheirs || !data.message.shouldShowMessageStatusIndicator()
433431
}
434432
}

0 commit comments

Comments
 (0)