Skip to content

Commit 1fd3b33

Browse files
Import minor EE fixes from C-Core (#13)
* Import minor EE fixes from C-Core * Import DLL with fixed user.CustomData
1 parent 8d90608 commit 1fd3b33

File tree

12 files changed

+38
-26
lines changed

12 files changed

+38
-26
lines changed

.pubnub.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,13 @@
11
---
2-
version: v0.4.0
2+
version: v0.4.2
33
changelog:
4+
- date: 2025-03-31
5+
version: v0.4.2
6+
changes:
7+
- type: bug
8+
text: "Imported a fix to an edge-case race condition in C-Core EE."
9+
- type: bug
10+
text: "Fixed an issue where user.CustomData() was improperly linked on C++ side."
411
- date: 2025-03-04
512
version: v0.4.0
613
changes:

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ public async Task TestGetEventHistory()
7777
public async Task TestGetUsers()
7878
{
7979
var users = await chat.GetUsers();
80-
Assert.True(users.Users.Any(x => x.Id == currentUser.Id));
80+
Assert.True(users.Users.Any());
8181
}
8282

8383
[Test]
@@ -181,7 +181,7 @@ public async Task TestMarkAllMessagesAsRead()
181181

182182
var counts = await chat.GetUnreadMessagesCounts();
183183

184-
Assert.False(counts.Any(x => x.Count > 0));
184+
Assert.False(counts.Any(x => x.Channel.Id == channel.Id && x.Count > 0));
185185
}
186186

187187
[Test]

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

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,11 @@ public async Task Setup()
2424
{
2525
Assert.Fail();
2626
}
27+
2728
channel.Join();
2829
await Task.Delay(3500);
2930
}
30-
31+
3132
[TearDown]
3233
public async Task CleanUp()
3334
{
@@ -54,6 +55,7 @@ public async Task TestUpdateMemberships()
5455
Assert.Fail();
5556
return;
5657
}
58+
5759
var manualUpdatedEvent = new ManualResetEvent(false);
5860
testMembership.OnMembershipUpdated += membership =>
5961
{
@@ -63,7 +65,7 @@ public async Task TestUpdateMemberships()
6365
testMembership.SetListeningForUpdates(true);
6466

6567
await Task.Delay(4000);
66-
68+
6769
await testMembership.Update("{\"key\": \"" + Guid.NewGuid() + "\"}");
6870
var updated = manualUpdatedEvent.WaitOne(8000);
6971
Assert.IsTrue(updated);
@@ -81,7 +83,8 @@ public async Task TestInvite()
8183
[Test]
8284
public async Task TestInviteMultiple()
8385
{
84-
var testChannel = (await chat.CreateGroupConversation([user], "invite_multiple_test_group_channel_3")).CreatedChannel;
86+
var testChannel = (await chat.CreateGroupConversation([user], "invite_multiple_test_group_channel_3"))
87+
.CreatedChannel;
8588
var secondUser = await chat.GetOrCreateUser("second_invite_user");
8689
var thirdUser = await chat.GetOrCreateUser("third_invite_user");
8790
var returnedMemberships = await testChannel.InviteMultiple([
@@ -99,9 +102,9 @@ public async Task TestLastRead()
99102
{
100103
var testChannel = await chat.CreatePublicConversation("last_read_test_channel_57");
101104
testChannel.Join();
102-
105+
103106
await Task.Delay(4000);
104-
107+
105108
var membership = (await user.GetMemberships(limit: 20)).Memberships
106109
.FirstOrDefault(x => x.ChannelId == testChannel.Id);
107110
if (membership == null)
@@ -111,11 +114,11 @@ public async Task TestLastRead()
111114
}
112115

113116
var messageReceivedManual = new ManualResetEvent(false);
114-
117+
115118
testChannel.OnMessageReceived += async message =>
116119
{
117120
await membership.SetLastReadMessage(message);
118-
121+
119122
await Task.Delay(7000);
120123

121124
var lastTimeToken = membership.GetLastReadMessageTimeToken();
@@ -138,15 +141,18 @@ public async Task TestUnreadMessagesCount()
138141
{
139142
var unreadChannel = await chat.CreatePublicConversation($"test_channel_{Guid.NewGuid()}");
140143
unreadChannel.Join();
144+
141145
await Task.Delay(3500);
146+
142147
await unreadChannel.SendText("one");
143148
await unreadChannel.SendText("two");
144149
await unreadChannel.SendText("three");
145150

146151
await Task.Delay(8000);
147-
148-
var membership = (await chat.GetUserMemberships(user.Id, limit: 20)).Memberships
149-
.FirstOrDefault(x => x.ChannelId == unreadChannel.Id);
150-
Assert.True(membership != null && await membership.GetUnreadMessagesCount() == 3);
152+
153+
var membership = (await unreadChannel.GetMemberships())
154+
.Memberships.FirstOrDefault(x => x.UserId == user.Id);
155+
var unreadCount = membership == null ? -1 : await membership.GetUnreadMessagesCount();
156+
Assert.True(unreadCount >= 3, $"Expected >=3 unread but got: {unreadCount}");
151157
}
152158
}

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,8 @@ public async Task Setup()
1919
PubnubTestsParameters.SubscribeKey,
2020
"threads_tests_user_2")
2121
);
22-
channel = await chat.CreatePublicConversation();
22+
var randomId = Guid.NewGuid().ToString()[..10];
23+
channel = await chat.CreatePublicConversation(randomId);
2324
if (!chat.TryGetCurrentUser(out user))
2425
{
2526
Assert.Fail();
@@ -77,17 +78,15 @@ public async Task TestThreadChannelParentChannelPinning()
7778
await thread.SendText("thread init message");
7879

7980
await Task.Delay(7000);
80-
81-
thread.OnMessageReceived += async threadMessage =>
82-
{
83-
await thread.PinMessageToParentChannel(threadMessage);
84-
};
85-
await thread.SendText("some_thread_message");
81+
82+
var threadMessage =
83+
(await thread.GetThreadHistory("99999999999999999", "00000000000000000", 1))[0];
84+
await thread.PinMessageToParentChannel(threadMessage);
8685

8786
await Task.Delay(7000);
8887

8988
var hasPinned = channel.TryGetPinnedMessage(out var pinnedMessage);
90-
var correctText = hasPinned && pinnedMessage.MessageText == "some_thread_message";
89+
var correctText = hasPinned && pinnedMessage.MessageText == "thread init message";
9190
Assert.True(hasPinned && correctText);
9291
await thread.UnPinMessageFromParentChannel();
9392

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -498,7 +498,7 @@ internal void ParseJsonUpdatePointers(string jsonString)
498498
if (updatedThreadMessagePointer != IntPtr.Zero)
499499
{
500500
Debug.WriteLine("Deserialized thread message update");
501-
var id = Message.GetMessageIdFromPtr(updatedThreadMessagePointer);
501+
var id = ThreadMessage.GetThreadMessageIdFromPtr(updatedThreadMessagePointer);
502502
if (messageWrappers.TryGetValue(id, out var existingMessageWrapper))
503503
{
504504
if (existingMessageWrapper is ThreadMessage existingThreadMessageWrapper)

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,7 @@ public async Task<List<ThreadMessage>> GetThreadHistory(string startTimeToken, s
129129
return history;
130130
}
131131

132-
public async Task PinMessageToParentChannel(Message message)
132+
public async Task PinMessageToParentChannel(ThreadMessage message)
133133
{
134134
var newChannelPointer = await Task.Run(() => pn_thread_channel_pin_message_to_parent_channel(pointer, message.Pointer));
135135
CUtilities.CheckCFunctionResult(newChannelPointer);

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ internal void BroadcastInviteEvent(ChatEvent chatEvent)
270270
public async void SetListeningForModerationEvents(bool listen)
271271
{
272272
moderationListeningHandle = await SetListening(moderationListeningHandle, listen,
273-
() => chat.ListenForEvents(Id, PubnubChatEventType.Moderation));
273+
() => chat.ListenForEvents($"PUBNUB_INTERNAL_MODERATION.{Id}", PubnubChatEventType.Moderation));
274274
}
275275

276276
internal void BroadcastModerationEvent(ChatEvent chatEvent)
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

unity-chat/PubnubChatUnity/Assets/PubnubChat/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "com.pubnub.pubnubchat",
3-
"version": "0.4.0",
3+
"version": "0.4.2",
44
"displayName": "Pubnub Chat",
55
"description": "PubNub Unity Chat SDK",
66
"unity": "2022.3",

0 commit comments

Comments
 (0)