Skip to content

Commit 5c48f84

Browse files
authored
Pbe 5423 implement unread endpoint (#175)
* Implement IStreamChatClient.GetLatestUnreadCounts() * Fix breaking on timeout * Fix name + add integration test * Improve naming * Improve names + add code example
1 parent 1726358 commit 5c48f84

36 files changed

+443
-51
lines changed

Assets/Plugins/StreamChat/Core/IStreamChatClient.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,5 +252,11 @@ Task<StreamDeleteChannelsResponse> DeleteMultipleChannelsAsync(IEnumerable<IStre
252252
Task DisconnectUserAsync();
253253

254254
bool IsLocalUser(IStreamUser messageUser);
255+
256+
/// <summary>
257+
/// Get current state of unread counts for the user. Unread counts mean how many messages and threads are unread in the channels and threads the user is participating in
258+
/// </summary>
259+
/// <returns><see cref="CurrentUnreadCounts"/></returns>
260+
Task<CurrentUnreadCounts> GetLatestUnreadCountsAsync();
255261
}
256262
}

Assets/Plugins/StreamChat/Core/InternalDTO/Client.meta

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Assets/Plugins/StreamChat/Core/InternalDTO/Extra.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace StreamChat.Core.InternalDTO.Extra
2+
{
3+
internal class UnreadCountsChannelInternalDTO
4+
{
5+
[Newtonsoft.Json.JsonProperty("channel_id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
6+
public string ChannelId { get; set; }
7+
8+
[Newtonsoft.Json.JsonProperty("last_read", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
9+
public System.DateTimeOffset LastRead { get; set; }
10+
11+
[Newtonsoft.Json.JsonProperty("unread_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
12+
public int UnreadCount { get; set; }
13+
}
14+
}

Assets/Plugins/StreamChat/Core/InternalDTO/Extra/UnreadCountsChannelInternalDTO.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace StreamChat.Core.InternalDTO.Extra
2+
{
3+
internal class UnreadCountsChannelTypeInternalDTO
4+
{
5+
[Newtonsoft.Json.JsonProperty("channel_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
6+
public int ChannelCount { get; set; }
7+
8+
[Newtonsoft.Json.JsonProperty("channel_type", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
9+
public string ChannelType { get; set; }
10+
11+
[Newtonsoft.Json.JsonProperty("unread_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
12+
public int UnreadCount { get; set; }
13+
}
14+
}

Assets/Plugins/StreamChat/Core/InternalDTO/Extra/UnreadCountsChannelTypeInternalDTO.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace StreamChat.Core.InternalDTO.Extra
2+
{
3+
internal class UnreadCountsThreadInternalDTO
4+
{
5+
[Newtonsoft.Json.JsonProperty("last_read", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
6+
public System.DateTimeOffset LastRead { get; set; }
7+
8+
[Newtonsoft.Json.JsonProperty("last_read_message_id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
9+
public string LastReadMessageId { get; set; }
10+
11+
[Newtonsoft.Json.JsonProperty("parent_message_id", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
12+
public string ParentMessageId { get; set; }
13+
14+
[Newtonsoft.Json.JsonProperty("unread_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
15+
public int UnreadCount { get; set; }
16+
}
17+
}

Assets/Plugins/StreamChat/Core/InternalDTO/Extra/UnreadCountsThreadInternalDTO.cs.meta

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
namespace StreamChat.Core.InternalDTO.Extra
2+
{
3+
internal class WrappedUnreadCountsResponseInternalDTO
4+
{
5+
[Newtonsoft.Json.JsonProperty("channel_type", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
6+
public System.Collections.Generic.List<UnreadCountsChannelTypeInternalDTO> ChannelType { get; set; } = new System.Collections.Generic.List<UnreadCountsChannelTypeInternalDTO>();
7+
8+
[Newtonsoft.Json.JsonProperty("channels", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
9+
public System.Collections.Generic.List<UnreadCountsChannelInternalDTO> Channels { get; set; } = new System.Collections.Generic.List<UnreadCountsChannelInternalDTO>();
10+
11+
/// <summary>
12+
/// Duration of the request in milliseconds
13+
/// </summary>
14+
[Newtonsoft.Json.JsonProperty("duration", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
15+
public string Duration { get; set; }
16+
17+
[Newtonsoft.Json.JsonProperty("threads", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
18+
public System.Collections.Generic.List<UnreadCountsThreadInternalDTO> Threads { get; set; } = new System.Collections.Generic.List<UnreadCountsThreadInternalDTO>();
19+
20+
[Newtonsoft.Json.JsonProperty("total_unread_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
21+
public int TotalUnreadCount { get; set; }
22+
23+
[Newtonsoft.Json.JsonProperty("total_unread_threads_count", Required = Newtonsoft.Json.Required.DisallowNull, NullValueHandling = Newtonsoft.Json.NullValueHandling.Ignore)]
24+
public int TotalUnreadThreadsCount { get; set; }
25+
}
26+
}

0 commit comments

Comments
 (0)