Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions Assets/Plugins/StreamChat/Core/StreamChatClient.cs
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ void IStreamChatClientEventsListener.Destroy()
}

Dispose();
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

void IStreamChatClientEventsListener.Update() => InternalLowLevelClient.Update(_timeService.DeltaTime);
Expand Down Expand Up @@ -886,7 +886,7 @@ private void OnAddedToChannelNotification(NotificationAddedToChannelEventInterna
}

AddedToChannelAsMember?.Invoke(channel, member);
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

private void OnRemovedFromChannelNotification(
Expand Down Expand Up @@ -914,7 +914,7 @@ private void OnRemovedFromChannelNotification(
}

RemovedFromChannelAsMember?.Invoke(channel, member);
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

private void OnInvitedNotification(NotificationInvitedEventInternalDTO eventDto)
Expand All @@ -940,7 +940,7 @@ private void OnInvitedNotification(NotificationInvitedEventInternalDTO eventDto)
}

ChannelInviteReceived?.Invoke(channel, user);
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

private void OnInviteAcceptedNotification(NotificationInviteAcceptedEventInternalDTO eventDto)
Expand All @@ -966,7 +966,7 @@ private void OnInviteAcceptedNotification(NotificationInviteAcceptedEventInterna
}

ChannelInviteAccepted?.Invoke(channel, user);
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

private void OnInviteRejectedNotification(NotificationInviteRejectedEventInternalDTO eventDto)
Expand All @@ -992,7 +992,7 @@ private void OnInviteRejectedNotification(NotificationInviteRejectedEventInterna
}

ChannelInviteRejected?.Invoke(channel, user);
});
}, TaskScheduler.FromCurrentSynchronizationContext());
}

private void OnReactionReceived(ReactionNewEventInternalDTO eventDto)
Expand Down
2 changes: 1 addition & 1 deletion Assets/Plugins/StreamChat/Tests/LowLevelClient/DTOTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public void DTOs_do_not_use_interfaces()

foreach (var type in streamChatCoreAssembly.GetTypes())
{
if (type.Namespace.IndexOf(DTOKeyword, StringComparison.InvariantCulture) != -1 &&
if (type.Namespace != null && type.Namespace.IndexOf(DTOKeyword, StringComparison.InvariantCulture) != -1 &&
type.Namespace.IndexOf(IgnoredNamespace, StringComparison.InvariantCultureIgnoreCase) == 0)
{
dtoTypes.Add(type);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using StreamChat.Core;
Expand Down Expand Up @@ -36,6 +37,8 @@ public async void OneTimeTearDown()

protected static StreamChatClient Client => StreamTestClients.Instance.StateClient;

protected int MainThreadId { get; } = Thread.CurrentThread.ManagedThreadId;

// StreamTodo: replace with admin ids fetched from loaded data set
protected const string TestUserId = TestUtils.TestUserId;
protected const string TestAdminId = TestUtils.TestAdminId;
Expand All @@ -46,6 +49,8 @@ public async void OneTimeTearDown()
protected static IEnumerable<AuthCredentials> OtherAdminUsersCredentials
=> StreamTestClients.Instance.OtherUserCredentials;

protected int GetCurrentThreadId() => Thread.CurrentThread.ManagedThreadId;

/// <summary>
/// Create temp channel with random id that will be removed in [TearDown]
/// </summary>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using NUnit.Framework;
using StreamChat.Core;
Expand Down Expand Up @@ -336,6 +337,39 @@ private async Task When_user_added_to_not_watched_channel_expect_user_receive_ad
Assert.AreEqual(Client.LocalUserData.User, eventMember.User);
}

[UnityTest]
public IEnumerator When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread()
=> ConnectAndExecute(
When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread_Async);

private async Task When_user_added_to_not_watched_channel_expect_user_receive_added_to_channel_event_from_main_thread_Async()
{
var channel = await CreateUniqueTempChannelAsync(watch: false);

var receivedEvent = false;
IStreamChannelMember eventMember = null;
IStreamChannel eventChannel = null;
var receivedEventThreadId = 0;
Client.AddedToChannelAsMember += (channel2, member) =>
{
receivedEvent = true;
eventMember = member;
eventChannel = channel2;
receivedEventThreadId = GetCurrentThreadId();
};

await channel.AddMembersAsync(hideHistory: default, optionalMessage: default, Client.LocalUserData.User);
await WaitWhileFalseAsync(() => receivedEvent);

Assert.IsTrue(receivedEvent);
Assert.IsNotNull(eventChannel);
Assert.IsNotNull(eventMember);
Assert.AreEqual(channel, eventChannel);
Assert.AreEqual(Client.LocalUserData.User, eventMember.User);

Assert.AreEqual(receivedEventThreadId, MainThreadId);
}

[UnityTest]
public IEnumerator When_user_added_to_not_watched_channel_expect_received_channel_being_watched()
=> ConnectAndExecute(
Expand All @@ -349,11 +383,13 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
var receivedEvent = false;
IStreamChannelMember eventMember = null;
IStreamChannel eventChannel = null;
var eventThreadId = -1;
Client.AddedToChannelAsMember += (channel2, member) =>
{
receivedEvent = true;
eventMember = member;
eventChannel = channel2;
eventThreadId = GetCurrentThreadId();
};

await otherClientChannel.AddMembersAsync(hideHistory: default, optionalMessage: default, Client.LocalUserData.User);
Expand All @@ -364,15 +400,19 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
Assert.IsNotNull(eventMember);
Assert.AreEqual(otherClientChannel.Cid, eventChannel.Cid);
Assert.AreEqual(Client.LocalUserData.User, eventMember.User);

Assert.AreEqual(MainThreadId, eventThreadId);

var receivedMessageEvent = false;
var receivedMessage = string.Empty;
IStreamChannel receivedMessageChannel = null;
var messageEventThreadId = -1;
otherClientChannel.MessageReceived += (messageChannel, message) =>
{
receivedMessageEvent = true;
receivedMessage = message.Text;
receivedMessageChannel = messageChannel;
messageEventThreadId = GetCurrentThreadId();
};

await otherClientChannel.SendNewMessageAsync("Hello");
Expand All @@ -381,6 +421,8 @@ private async Task When_user_added_to_not_watched_channel_expect_received_channe
Assert.IsTrue(receivedMessageEvent);
Assert.AreEqual(otherClientChannel.Cid, receivedMessageChannel.Cid);
Assert.AreEqual(receivedMessage, "Hello");

Assert.AreEqual(MainThreadId, messageEventThreadId);
}

[UnityTest]
Expand Down