From ae1e1268374f632294aedadf0c228ae724000bd9 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 9 Apr 2022 00:30:28 +0900 Subject: [PATCH 1/4] Make `HighlightMessage` implicitly show chat overlay --- osu.Game/Online/Chat/MessageNotifier.cs | 2 -- osu.Game/Overlays/ChatOverlay.cs | 2 ++ 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Online/Chat/MessageNotifier.cs b/osu.Game/Online/Chat/MessageNotifier.cs index bcfec3cc0f..20c33db61f 100644 --- a/osu.Game/Online/Chat/MessageNotifier.cs +++ b/osu.Game/Online/Chat/MessageNotifier.cs @@ -178,8 +178,6 @@ namespace osu.Game.Online.Chat { notificationOverlay.Hide(); chatOverlay.HighlightMessage(message, channel); - chatOverlay.Show(); - return true; }; } diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 3d39c7ce3a..8eb33453de 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -313,6 +313,8 @@ namespace osu.Game.Overlays /// The channel containing the message. public void HighlightMessage(Message message, Channel channel) { + Show(); + Debug.Assert(channel.Id == message.ChannelId); if (currentChannel.Value.Id != channel.Id) From 57fb8616b86c0a43fc51e3679984c88839efe0d0 Mon Sep 17 00:00:00 2001 From: Dean Herbert Date: Sat, 9 Apr 2022 00:31:00 +0900 Subject: [PATCH 2/4] Fix potential null reference when attempting to highlight a message before overlay has been displayed --- osu.Game/Overlays/ChatOverlay.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 8eb33453de..1ad6be132e 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -317,7 +317,7 @@ namespace osu.Game.Overlays Debug.Assert(channel.Id == message.ChannelId); - if (currentChannel.Value.Id != channel.Id) + if (currentChannel.Value?.Id != channel.Id) { if (!channel.Joined.Value) channel = channelManager.JoinChannel(channel); From 34adc1d41070b37024065528da9e96965375a652 Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Fri, 8 Apr 2022 19:21:37 +0300 Subject: [PATCH 3/4] Add quick test coverage --- .../Visual/Online/TestSceneChatOverlay.cs | 28 +++++++++++++++++-- 1 file changed, 25 insertions(+), 3 deletions(-) diff --git a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs index 80a6698761..4d1dee1650 100644 --- a/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs +++ b/osu.Game.Tests/Visual/Online/TestSceneChatOverlay.cs @@ -534,11 +534,33 @@ namespace osu.Game.Tests.Visual.Online }); }); - AddStep("Highlight message and open chat", () => + AddStep("Highlight message", () => chatOverlay.HighlightMessage(message, channel1)); + } + + [Test] + public void TestHighlightWithNullChannel() + { + Message message = null; + + AddStep("Join channel 1", () => channelManager.JoinChannel(channel1)); + + AddStep("Send message in channel 1", () => { - chatOverlay.HighlightMessage(message, channel1); - chatOverlay.Show(); + channel1.AddNewMessages(message = new Message + { + ChannelId = channel1.Id, + Content = "Message to highlight!", + Timestamp = DateTimeOffset.Now, + Sender = new APIUser + { + Id = 2, + Username = "Someone", + } + }); }); + + AddStep("Set null channel", () => channelManager.CurrentChannel.Value = null); + AddStep("Highlight message", () => chatOverlay.HighlightMessage(message, channel1)); } private void pressChannelHotkey(int number) From 134d9b5ddf16ea0ea8e27e764bdef755c0b3f17f Mon Sep 17 00:00:00 2001 From: Salman Ahmed Date: Fri, 8 Apr 2022 19:27:59 +0300 Subject: [PATCH 4/4] Perform `Show()` at the bottom of the method Probably not affecting behaviour, but makes more sense. --- osu.Game/Overlays/ChatOverlay.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index 1ad6be132e..64b972262b 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -313,8 +313,6 @@ namespace osu.Game.Overlays /// The channel containing the message. public void HighlightMessage(Message message, Channel channel) { - Show(); - Debug.Assert(channel.Id == message.ChannelId); if (currentChannel.Value?.Id != channel.Id) @@ -326,6 +324,8 @@ namespace osu.Game.Overlays } channel.HighlightedMessage.Value = message; + + Show(); } private float startDragChatHeight;