diff --git a/osu.Game/Overlays/ChatOverlay.cs b/osu.Game/Overlays/ChatOverlay.cs index e6dffbfe63..4748eb7de6 100644 --- a/osu.Game/Overlays/ChatOverlay.cs +++ b/osu.Game/Overlays/ChatOverlay.cs @@ -284,10 +284,21 @@ namespace osu.Game.Overlays { if (channel == null) return; - careChannels.Add(channel); - channelTabs.AddItem(channel); + var existing = careChannels.Find(c => c.Id == channel.Id); - // we need to get a good number of messages initially for each channel we care about. + if (existing != null) + { + // if we already have this channel loaded, we don't want to make a second one. + channel = existing; + } + else + { + + careChannels.Add(channel); + channelTabs.AddItem(channel); + } + + // let's fetch a small number of messages to bring us up-to-date with the backlog. fetchInitialMessages(channel); if (CurrentChannel == null)