Revert "Use local timestamps for in-chat unread counter."

This reverts commit c501a417bb.
This commit is contained in:
Alex Hart
2023-08-08 16:35:12 -03:00
parent 351e37bcee
commit cf7f614296
2 changed files with 7 additions and 8 deletions

View File

@@ -830,7 +830,7 @@ class ConversationFragment :
.doOnSuccess { state -> .doOnSuccess { state ->
adapter.setMessageRequestIsAccepted(state.meta.messageRequestData.isMessageRequestAccepted) adapter.setMessageRequestIsAccepted(state.meta.messageRequestData.isMessageRequestAccepted)
SignalLocalMetrics.ConversationOpen.onDataLoaded() SignalLocalMetrics.ConversationOpen.onDataLoaded()
conversationItemDecorations.setFirstUnreadState(state.meta.unreadCount, state.meta.lastSeen) conversationItemDecorations.setFirstUnreadState(state.meta.lastSeen)
colorizer.onGroupMembershipChanged(state.meta.groupMemberAcis) colorizer.onGroupMembershipChanged(state.meta.groupMemberAcis)
} }
.observeOn(AndroidSchedulers.mainThread()) .observeOn(AndroidSchedulers.mainThread())

View File

@@ -94,9 +94,9 @@ class ConversationItemDecorations(hasWallpaper: Boolean = false, private val sch
} }
/** Must be called before first setting of [currentItems] */ /** Must be called before first setting of [currentItems] */
fun setFirstUnreadState(unreadCount: Int, lastSeenTimestamp: Long) { fun setFirstUnreadState(lastSeenTimestamp: Long) {
if (unreadState == UnreadState.None && lastSeenTimestamp > 0) { if (unreadState == UnreadState.None && lastSeenTimestamp > 0) {
unreadState = UnreadState.InitialUnreadState(unreadCount = unreadCount, lastSeenTimestamp = lastSeenTimestamp) unreadState = UnreadState.InitialUnreadState(lastSeenTimestamp = lastSeenTimestamp)
} }
} }
@@ -114,12 +114,11 @@ class ConversationItemDecorations(hasWallpaper: Boolean = false, private val sch
if (state is UnreadState.InitialUnreadState) { if (state is UnreadState.InitialUnreadState) {
val firstUnread = items val firstUnread = items
.filterIsInstance<ConversationMessageElement>() .filterIsInstance<ConversationMessageElement>()
.takeWhile { it.timestamp() > state.lastSeenTimestamp } .lastOrNull { it.timestamp() > state.lastSeenTimestamp }
.lastOrNull()
if (firstUnread != null) { if (firstUnread != null) {
unreadState = UnreadState.CompleteUnreadState( unreadState = UnreadState.CompleteUnreadState(
unreadCount = state.unreadCount, unreadCount = items.indexOf(firstUnread as ConversationElement?) + 1,
firstUnreadTimestamp = firstUnread.timestamp() firstUnreadTimestamp = firstUnread.timestamp()
) )
} }
@@ -205,7 +204,7 @@ class ConversationItemDecorations(hasWallpaper: Boolean = false, private val sch
return if (scheduleMessageMode) { return if (scheduleMessageMode) {
(conversationMessage.messageRecord as MediaMmsMessageRecord).scheduledDate (conversationMessage.messageRecord as MediaMmsMessageRecord).scheduledDate
} else { } else {
conversationMessage.messageRecord.dateReceived conversationMessage.conversationTimestamp
} }
} }
@@ -276,7 +275,7 @@ class ConversationItemDecorations(hasWallpaper: Boolean = false, private val sch
object None : UnreadState() object None : UnreadState()
/** On first load of data, there is at least 1 unread message but we don't know the 'position' in the list yet */ /** On first load of data, there is at least 1 unread message but we don't know the 'position' in the list yet */
data class InitialUnreadState(val unreadCount: Int, val lastSeenTimestamp: Long) : UnreadState() data class InitialUnreadState(val lastSeenTimestamp: Long) : UnreadState()
/** We have at least one unread and know the timestamp of the first unread message and thus 'position' for the header */ /** We have at least one unread and know the timestamp of the first unread message and thus 'position' for the header */
data class CompleteUnreadState(val unreadCount: Int, val firstUnreadTimestamp: Long? = null) : UnreadState() data class CompleteUnreadState(val unreadCount: Int, val firstUnreadTimestamp: Long? = null) : UnreadState()