mirror of
https://github.com/ppy/osu.git
synced 2025-02-13 15:53:51 +08:00
Fix loading spinner not disappearing on empty channels
This commit is contained in:
parent
2436ee589d
commit
1fd2782dd4
@ -24,6 +24,9 @@ namespace osu.Game.Online.Chat
|
||||
[JsonProperty(@"channel_id")]
|
||||
public int Id;
|
||||
|
||||
[JsonProperty(@"last_message_id")]
|
||||
public long? LastMessageId;
|
||||
|
||||
public readonly SortedList<Message> Messages = new SortedList<Message>(Comparer<Message>.Default);
|
||||
|
||||
private readonly List<LocalEchoMessage> pendingMessages = new List<LocalEchoMessage>();
|
||||
@ -51,11 +54,18 @@ namespace osu.Game.Online.Chat
|
||||
NewMessagesArrived?.Invoke(new[] { message });
|
||||
}
|
||||
|
||||
public bool MessagesLoaded { get; private set; }
|
||||
|
||||
public void AddNewMessages(params Message[] messages)
|
||||
{
|
||||
messages = messages.Except(Messages).ToArray();
|
||||
|
||||
Messages.AddRange(messages);
|
||||
MessagesLoaded = true;
|
||||
|
||||
var maxMessageId = messages.Max(m => m.Id);
|
||||
if (maxMessageId > LastMessageId)
|
||||
LastMessageId = maxMessageId;
|
||||
|
||||
purgeOldMessages();
|
||||
|
||||
|
@ -362,7 +362,7 @@ namespace osu.Game.Overlays
|
||||
loadedChannels.Add(loaded);
|
||||
LoadComponentAsync(loaded, l =>
|
||||
{
|
||||
if (currentChannel.Messages.Any())
|
||||
if (currentChannel.MessagesLoaded)
|
||||
loading.Hide();
|
||||
|
||||
currentChannelContainer.Clear(false);
|
||||
@ -398,7 +398,7 @@ namespace osu.Game.Overlays
|
||||
if (channel.Type == ChannelType.Public && !channel.Joined)
|
||||
{
|
||||
var req = new JoinChannelRequest(channel, api.LocalUser);
|
||||
req.Success += addChannel;
|
||||
req.Success += () => addChannel(channel);
|
||||
req.Failure += ex => removeChannel(channel);
|
||||
api.Queue(req);
|
||||
return;
|
||||
@ -431,16 +431,13 @@ namespace osu.Game.Overlays
|
||||
private void fetchInitialMessages(Channel channel)
|
||||
{
|
||||
var req = new GetMessagesRequest(channel);
|
||||
|
||||
req.Success += messages =>
|
||||
{
|
||||
loading.Hide();
|
||||
channel.AddNewMessages(messages.ToArray());
|
||||
Debug.Write("success!");
|
||||
if (channel == currentChannel)
|
||||
loading.Hide();
|
||||
};
|
||||
|
||||
req.Failure += exception => Debug.Write("failure!");
|
||||
|
||||
api.Queue(req);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user