mirror of
https://github.com/osukey/osukey.git
synced 2025-08-05 15:44:04 +09:00
Rename MAX_HISTORY to MaxHistory, added some logging on failures, use a lamda in ChatOverlay instead of a method pointer.
This commit is contained in:
@ -14,13 +14,14 @@ namespace osu.Game.Online.Chat
|
||||
{
|
||||
public class Channel
|
||||
{
|
||||
public readonly int MAX_HISTORY = 300;
|
||||
public readonly int MaxHistory = 300;
|
||||
|
||||
/// <summary>
|
||||
/// Contains every joined user except the current logged in user.
|
||||
/// </summary>
|
||||
public readonly ObservableCollection<User> JoinedUsers = new ObservableCollection<User>();
|
||||
public readonly SortedList<Message> Messages = new SortedList<Message>(Comparer<Message>.Default);
|
||||
private readonly List<LocalEchoMessage> pendingMessages = new List<LocalEchoMessage>();
|
||||
|
||||
public event Action<IEnumerable<Message>> NewMessagesArrived;
|
||||
public event Action<LocalEchoMessage, Message> PendingMessageResolved;
|
||||
@ -43,8 +44,6 @@ namespace osu.Game.Online.Chat
|
||||
[JsonProperty(@"channel_id")]
|
||||
public long Id;
|
||||
|
||||
private readonly List<LocalEchoMessage> pendingMessages = new List<LocalEchoMessage>();
|
||||
|
||||
[JsonConstructor]
|
||||
public Channel()
|
||||
{
|
||||
@ -101,12 +100,7 @@ namespace osu.Game.Online.Chat
|
||||
}
|
||||
|
||||
if (Messages.Contains(final))
|
||||
{
|
||||
// message already inserted, so let's throw away this update.
|
||||
// we may want to handle this better in the future, but for the time being api requests are single-threaded so order is assumed.
|
||||
MessageRemoved?.Invoke(echo);
|
||||
return;
|
||||
}
|
||||
throw new InvalidOperationException("Attempted to add the same message again");
|
||||
|
||||
Messages.Add(final);
|
||||
PendingMessageResolved?.Invoke(echo, final);
|
||||
@ -116,8 +110,8 @@ namespace osu.Game.Online.Chat
|
||||
{
|
||||
// never purge local echos
|
||||
int messageCount = Messages.Count - pendingMessages.Count;
|
||||
if (messageCount > MAX_HISTORY)
|
||||
Messages.RemoveRange(0, messageCount - MAX_HISTORY);
|
||||
if (messageCount > MaxHistory)
|
||||
Messages.RemoveRange(0, messageCount - MaxHistory);
|
||||
}
|
||||
|
||||
|
||||
|
@ -112,7 +112,11 @@ namespace osu.Game.Online.Chat
|
||||
CurrentChannel.Value.AddLocalEcho(message);
|
||||
|
||||
var req = new PostMessageRequest(message);
|
||||
req.Failure += e => CurrentChannel.Value?.ReplaceMessage(message, null);
|
||||
req.Failure += exception =>
|
||||
{
|
||||
Logger.Error(exception, "Posting message failed.");
|
||||
CurrentChannel.Value?.ReplaceMessage(message, null);
|
||||
};
|
||||
req.Success += m => CurrentChannel.Value?.ReplaceMessage(message, m);
|
||||
api.Queue(req);
|
||||
}
|
||||
@ -305,7 +309,6 @@ namespace osu.Game.Online.Chat
|
||||
public ChannelNotFoundException(string channelName)
|
||||
: base($"A channel with the name {channelName} could not be found.")
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user