Skip to content

Commit 39dbe78

Browse files
removed wrappers storage in chat entity, added unread messages functionality
1 parent d2008e3 commit 39dbe78

File tree

13 files changed

+241
-255
lines changed

13 files changed

+241
-255
lines changed

c-sharp-chat/PubnubChatApi/PubNubChatApi.Tests/ChatTests.cs

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ public class ChatTests
1616
[SetUp]
1717
public async Task Setup()
1818
{
19-
chat = TestUtils.AssertOperation(await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true), new PNConfiguration(new UserId("chats_tests_user_10_no_calkiem_nowy_2"))
19+
chat = TestUtils.AssertOperation(await Chat.CreateInstance(new PubnubChatConfig(storeUserActivityTimestamp: true),
20+
new PNConfiguration(new UserId("chats_tests_user_fresh_3"))
2021
{
2122
PublishKey = PubnubTestsParameters.PublishKey,
2223
SubscribeKey = PubnubTestsParameters.SubscribeKey
@@ -169,25 +170,33 @@ public async Task TestGetUnreadMessagesCounts()
169170

170171
await Task.Delay(3000);
171172

172-
Assert.True(TestUtils.AssertOperation(await chat.GetUnreadMessagesCounts(limit: 50)).Any(x => x.Channel.Id == channel.Id && x.Count > 0));
173+
Assert.True(TestUtils.AssertOperation(await chat.GetUnreadMessagesCounts(limit: 50)).Any(x => x.ChannelId == channel.Id && x.Count > 0));
173174
}
174175

175176
[Test]
176177
public async Task TestMarkAllMessagesAsRead()
177178
{
178-
await channel.SendText("wololo");
179-
180-
await Task.Delay(10000);
179+
var markTestChannel = TestUtils.AssertOperation(await chat.CreatePublicConversation());
180+
markTestChannel.Join();
181+
182+
await Task.Delay(3000);
183+
184+
await markTestChannel.SendText("wololo", new SendTextParams(){StoreInHistory = true});
181185

182-
Assert.True(TestUtils.AssertOperation(await chat.GetUnreadMessagesCounts()).Any(x => x.Channel.Id == channel.Id && x.Count > 0));
186+
await Task.Delay(3000);
183187

184-
var res = chat.MarkAllMessagesAsRead();
188+
Assert.True(TestUtils.AssertOperation(await chat.GetUnreadMessagesCounts()).Any(x => x.ChannelId == markTestChannel.Id && x.Count > 0));
185189

186-
await Task.Delay(2000);
190+
TestUtils.AssertOperation(await chat.MarkAllMessagesAsRead());
187191

192+
await Task.Delay(5000);
193+
188194
var counts = TestUtils.AssertOperation(await chat.GetUnreadMessagesCounts());
189195

190-
Assert.False(counts.Any(x => x.Channel.Id == channel.Id && x.Count > 0));
196+
markTestChannel.Leave();
197+
await markTestChannel.Delete();
198+
199+
Assert.False(counts.Any(x => x.ChannelId == markTestChannel.Id && x.Count > 0));
191200
}
192201

193202
[Test]

c-sharp-chat/PubnubChatApi/PubNubChatApi.Tests/MembershipTests.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,14 +41,14 @@ await chat.PubnubInstance.RemoveMemberships().Channels(new List<string>() { "mem
4141
[Test]
4242
public async Task TestGetMemberships()
4343
{
44-
var memberships = await user.GetMemberships();
44+
var memberships = TestUtils.AssertOperation(await user.GetMemberships());
4545
Assert.True(memberships.Memberships.Any(x => x.ChannelId == channel.Id && x.UserId == user.Id));
4646
}
4747

4848
[Test]
4949
public async Task TestUpdateMemberships()
5050
{
51-
var memberships = await user.GetMemberships();
51+
var memberships = TestUtils.AssertOperation(await user.GetMemberships());
5252
var testMembership = memberships.Memberships.Last();
5353
if (testMembership == null)
5454
{
@@ -117,7 +117,7 @@ public async Task TestLastRead()
117117

118118
await Task.Delay(4000);
119119

120-
var membership = (await user.GetMemberships(limit: 20)).Memberships
120+
var membership = TestUtils.AssertOperation(await user.GetMemberships(limit: 20)).Memberships
121121
.FirstOrDefault(x => x.ChannelId == testChannel.Id);
122122
if (membership == null)
123123
{
@@ -174,7 +174,7 @@ public async Task TestUnreadMessagesCount()
174174
public async Task TestUnreadCountAfterFetchHistory()
175175
{
176176
await channel.SendText("some_text");
177-
var membership = (await user.GetMemberships())
177+
var membership = TestUtils.AssertOperation(await user.GetMemberships())
178178
.Memberships.FirstOrDefault(x => x.ChannelId == channel.Id);
179179
if (membership == null)
180180
{

c-sharp-chat/PubnubChatApi/PubnubChatApi/Entities/Base/ChatEntity.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System.Threading.Tasks;
22
using PubnubApi;
3+
using PubnubChatApi.Entities.Data;
34

45
namespace PubNubChatAPI.Entities
56
{
@@ -39,6 +40,6 @@ public virtual void SetListeningForUpdates(bool listen)
3940

4041
protected abstract SubscribeCallback CreateUpdateListener();
4142

42-
public abstract Task Refresh();
43+
public abstract Task<ChatOperationResult> Refresh();
4344
}
4445
}

c-sharp-chat/PubnubChatApi/PubnubChatApi/Entities/Channel.cs

Lines changed: 19 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -205,13 +205,16 @@ internal static async Task<PNResult<PNGetChannelMetadataResult>> GetChannelData(
205205
.ExecuteAsync();
206206
}
207207

208-
public override async Task Refresh()
208+
public override async Task<ChatOperationResult> Refresh()
209209
{
210-
var getResult = await GetChannelData(chat, Id);
211-
if (!getResult.Status.Error)
210+
var result = new ChatOperationResult();
211+
var getData = await GetChannelData(chat, Id);
212+
if (result.RegisterOperation(getData))
212213
{
213-
UpdateLocalData(getResult.Result);
214+
return result;
214215
}
216+
UpdateLocalData(getData.Result);
217+
return result;
215218
}
216219

217220
public void SetListeningForCustomEvents(bool listen)
@@ -458,16 +461,22 @@ public async void Leave()
458461
{
459462
Disconnect();
460463
var currentUserId = chat.PubnubInstance.GetCurrentUserId();
461-
var remove = await chat.PubnubInstance.RemoveMemberships().Uuid(currentUserId).Channels(new List<string>() { Id })
464+
var remove = await chat.PubnubInstance.RemoveMemberships().Uuid(currentUserId).Include(new []
465+
{
466+
PNMembershipField.TYPE,
467+
PNMembershipField.CUSTOM,
468+
PNMembershipField.STATUS,
469+
PNMembershipField.CHANNEL,
470+
PNMembershipField.CHANNEL_CUSTOM,
471+
PNMembershipField.CHANNEL_TYPE,
472+
PNMembershipField.CHANNEL_STATUS
473+
}).Channels(new List<string>() { Id })
462474
.ExecuteAsync();
463475
if (remove.Status.Error)
464476
{
465477
chat.Logger.Error($"Error when trying to leave channel \"{Id}\": {remove.Status.ErrorData.Information}");
466478
return;
467479
}
468-
469-
//TODO: wrappers rethink
470-
chat.membershipWrappers.Remove(currentUserId + Id);
471480
}
472481

473482
/// <summary>
@@ -496,27 +505,9 @@ public void Connect()
496505
{
497506
if (ChatParsers.TryParseMessageResult(chat, m, out var message))
498507
{
499-
//TODO: wrappers rethink
500-
//chat.RegisterMessage(message);
501508
OnMessageReceived?.Invoke(message);
502509
}
503510
}));
504-
/*if (subscription != null)
505-
{
506-
return;
507-
}
508-
subscription = chat.PubnubInstance.Channel(Id).Subscription(SubscriptionOptions.None);
509-
subscription.AddListener(chat.ListenerFactory.ProduceListener(messageCallback:
510-
delegate(Pubnub pn, PNMessageResult<object> m)
511-
{
512-
if (ChatParsers.TryParseMessageResult(chat, m, out var message))
513-
{
514-
//TODO: wrappers rethink
515-
//chat.RegisterMessage(message);
516-
OnMessageReceived?.Invoke(message);
517-
}
518-
}));
519-
subscription.Subscribe<object>();*/
520511
}
521512

522513
/// <summary>
@@ -568,17 +559,8 @@ public async void Join(ChatMembershipData? membershipData = null)
568559
chat.Logger.Error($"Error when trying to Join() to channel \"{Id}\": {response.Status.ErrorData.Information}");
569560
return;
570561
}
571-
//TODO: wrappers rethink
572-
if (chat.membershipWrappers.TryGetValue(currentUserId + Id, out var existingHostMembership))
573-
{
574-
existingHostMembership.UpdateLocalData(membershipData);
575-
}
576-
else
577-
{
578-
var joinMembership = new Membership(chat, currentUserId, Id, membershipData);
579-
await joinMembership.SetLastReadMessageTimeToken(ChatUtils.TimeTokenNow());
580-
chat.membershipWrappers.Add(joinMembership.Id, joinMembership);
581-
}
562+
var joinMembership = new Membership(chat, currentUserId, Id, membershipData);
563+
await joinMembership.SetLastReadMessageTimeToken(ChatUtils.TimeTokenNow());
582564

583565
Connect();
584566
}

0 commit comments

Comments
 (0)