Skip to content

Commit

Permalink
[PBE-3749] Update NotificationMarkUnreadEvent with threadId for threa…
Browse files Browse the repository at this point in the history
…d events.
  • Loading branch information
PetarVelikov committed Nov 20, 2024
1 parent 086d9cb commit 29e66d2
Show file tree
Hide file tree
Showing 7 changed files with 17 additions and 14 deletions.
12 changes: 7 additions & 5 deletions stream-chat-android-client/api/stream-chat-android-client.api
Original file line number Diff line number Diff line change
Expand Up @@ -1766,14 +1766,15 @@ public final class io/getstream/chat/android/client/events/NotificationMarkReadE
}

public final class io/getstream/chat/android/client/events/NotificationMarkUnreadEvent : io/getstream/chat/android/client/events/CidEvent, io/getstream/chat/android/client/events/HasUnreadCounts, io/getstream/chat/android/client/events/UserEvent {
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;I)V
public synthetic fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
public fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;I)V
public synthetic fun <init> (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;IILkotlin/jvm/internal/DefaultConstructorMarker;)V
public final fun component1 ()Ljava/lang/String;
public final fun component10 ()I
public final fun component11 ()Ljava/lang/String;
public final fun component12 ()Ljava/util/Date;
public final fun component13 ()Ljava/lang/String;
public final fun component14 ()I
public final fun component14 ()Ljava/lang/String;
public final fun component15 ()I
public final fun component2 ()Ljava/util/Date;
public final fun component3 ()Ljava/lang/String;
public final fun component4 ()Lio/getstream/chat/android/models/User;
Expand All @@ -1782,8 +1783,8 @@ public final class io/getstream/chat/android/client/events/NotificationMarkUnrea
public final fun component7 ()Ljava/lang/String;
public final fun component8 ()I
public final fun component9 ()I
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;I)Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;IILjava/lang/Object;)Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;
public final fun copy (Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;I)Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;
public static synthetic fun copy$default (Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;Ljava/lang/String;Ljava/util/Date;Ljava/lang/String;Lio/getstream/chat/android/models/User;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;IILjava/lang/Object;)Lio/getstream/chat/android/client/events/NotificationMarkUnreadEvent;
public fun equals (Ljava/lang/Object;)Z
public fun getChannelId ()Ljava/lang/String;
public fun getChannelType ()Ljava/lang/String;
Expand All @@ -1793,6 +1794,7 @@ public final class io/getstream/chat/android/client/events/NotificationMarkUnrea
public final fun getLastReadMessageAt ()Ljava/util/Date;
public final fun getLastReadMessageId ()Ljava/lang/String;
public fun getRawCreatedAt ()Ljava/lang/String;
public final fun getThreadId ()Ljava/lang/String;
public fun getTotalUnreadCount ()I
public fun getType ()Ljava/lang/String;
public fun getUnreadChannels ()I
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -516,6 +516,7 @@ private fun NotificationMarkUnreadEventDto.toDomain(currentUserId: UserId?): Not
lastReadMessageId = last_read_message_id,
lastReadMessageAt = last_read_at.date,
unreadMessages = unread_messages,
threadId = thread_id,
unreadThreads = unread_threads,
)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@ internal data class NotificationMarkUnreadEventDto(
val unread_messages: Int,
val total_unread_count: Int,
val unread_channels: Int,
val thread_id: String? = null,
val unread_threads: Int = 0,
) : ChatEventDto()

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,7 @@ public data class NotificationMarkUnreadEvent(
val firstUnreadMessageId: String,
val lastReadMessageAt: Date,
val lastReadMessageId: String?,
val threadId: String? = null,
val unreadThreads: Int = 0,
) : CidEvent(), UserEvent, HasUnreadCounts

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -714,8 +714,8 @@ internal class EventHandlerSequential(
?.updateReads(event.toChannelUserRead())
?.let(batch::addChannel)
// Update corresponding thread if event was received for marking a thread as unread
if (event.lastReadMessageId == null) {
threadFromPendingUpdateOrRepo(batch, event.firstUnreadMessageId)
event.threadId?.let { threadId ->
threadFromPendingUpdateOrRepo(batch, threadId)
?.markAsUnreadByUser(event.user, event.createdAt)
?.let(batch::addThread)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -219,12 +219,8 @@ internal class QueryThreadsLogic(
* @param event The [NotificationMarkUnreadEvent] informing about the read state change.
*/
private fun markThreadAsUnread(event: NotificationMarkUnreadEvent) {
// At the moment, this event does not return the thread id,
// so this is the only way to identify that this event is related to a thread
val isUnreadThread = event.lastReadMessageId == null
if (isUnreadThread) {
stateLogic.markThreadAsUnreadByUser(event.firstUnreadMessageId, event.user, event.createdAt)
}
val threadId = event.threadId ?: return
stateLogic.markThreadAsUnreadByUser(threadId, event.user, event.createdAt)
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -348,6 +348,7 @@ internal class QueryThreadsLogicTest {
lastReadMessageId = "mId1",
lastReadMessageAt = Date(),
firstUnreadMessageId = "mId2",
threadId = null,
unreadMessages = 1,
)
val stateLogic = mock<QueryThreadsStateLogic>()
Expand All @@ -374,6 +375,7 @@ internal class QueryThreadsLogicTest {
lastReadMessageId = null,
lastReadMessageAt = Date(),
firstUnreadMessageId = "mId1",
threadId = "mId1",
unreadMessages = 1,
)
val stateLogic = mock<QueryThreadsStateLogic>()
Expand All @@ -383,7 +385,7 @@ internal class QueryThreadsLogicTest {
// when
logic.handleEvents(listOf(event))
// then
verify(stateLogic, times(1)).markThreadAsUnreadByUser(event.firstUnreadMessageId, event.user, event.createdAt)
verify(stateLogic, times(1)).markThreadAsUnreadByUser(event.threadId!!, event.user, event.createdAt)
}

@Test
Expand Down

0 comments on commit 29e66d2

Please sign in to comment.