From c1e3c4d4359555ddf32f4c96ac4037277dca37c0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 17 Nov 2018 10:40:44 +0900 Subject: [PATCH] Make chat tests work again, clear old messages --- .../TestCaseMatchChatDisplay.cs | 4 ++++ .../Components/MatchChatDisplay.cs | 22 ++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/osu.Game.Tournament.Tests/TestCaseMatchChatDisplay.cs b/osu.Game.Tournament.Tests/TestCaseMatchChatDisplay.cs index aab56d1714..cc053f8a7e 100644 --- a/osu.Game.Tournament.Tests/TestCaseMatchChatDisplay.cs +++ b/osu.Game.Tournament.Tests/TestCaseMatchChatDisplay.cs @@ -7,6 +7,7 @@ using osu.Framework.Graphics; using osu.Game.Online.Chat; using osu.Game.Tests.Visual; using osu.Game.Tournament.Components; +using osu.Game.Tournament.IPC; using osu.Game.Tournament.Screens.Ladder.Components; using osu.Game.Users; using OpenTK; @@ -39,6 +40,9 @@ namespace osu.Game.Tournament.Tests [Cached] private LadderInfo ladderInfo = new LadderInfo(); + [Cached] + private MatchIPCInfo matchInfo = new MatchIPCInfo(); // hide parent + public TestCaseMatchChatDisplay() { MatchChatDisplay chatDisplay; diff --git a/osu.Game.Tournament/Components/MatchChatDisplay.cs b/osu.Game.Tournament/Components/MatchChatDisplay.cs index c44eb88ef8..dc8f28d9bd 100644 --- a/osu.Game.Tournament/Components/MatchChatDisplay.cs +++ b/osu.Game.Tournament/Components/MatchChatDisplay.cs @@ -61,10 +61,6 @@ namespace osu.Game.Tournament.Components { if (ipc != null) { - AddInternal(manager = new ChannelManager()); - - Channel.BindTo(manager.CurrentChannel); - chatChannel.BindTo(ipc.ChatChannel); chatChannel.BindValueChanged(channelString => { @@ -73,7 +69,18 @@ namespace osu.Game.Tournament.Components int id = int.Parse(channelString); - var channel = manager.JoinedChannels.FirstOrDefault(ch => ch.Id == id) ?? new Channel + if (id <= 0) return; + + if (manager == null) + { + AddInternal(manager = new ChannelManager()); + Channel.BindTo(manager.CurrentChannel); + } + + foreach (var ch in manager.JoinedChannels.ToList()) + manager.LeaveChannel(ch); + + var channel = new Channel { Id = id, Type = ChannelType.Public @@ -81,7 +88,6 @@ namespace osu.Game.Tournament.Components manager.JoinChannel(channel); manager.CurrentChannel.Value = channel; - }, true); } } @@ -92,6 +98,10 @@ namespace osu.Game.Tournament.Components lastChannel.NewMessagesArrived -= newMessages; lastChannel = channel; + messagesFlow.Clear(); + + if (channel == null) return; + channel.NewMessagesArrived += newMessages; }