mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 16:27:26 +08:00
Handle channel parts
This commit is contained in:
parent
d426977f03
commit
e3adf5a985
@ -99,6 +99,8 @@ namespace osu.Game.Online.Chat
|
|||||||
joinChannel(localChannel);
|
joinChannel(localChannel);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connector.ChannelParted += ch => Schedule(() => LeaveChannel(getChannel(ch)));
|
||||||
|
|
||||||
connector.NewMessages += msgs => Schedule(() => addMessages(msgs));
|
connector.NewMessages += msgs => Schedule(() => addMessages(msgs));
|
||||||
|
|
||||||
connector.PresenceReceived += () => Schedule(() =>
|
connector.PresenceReceived += () => Schedule(() =>
|
||||||
|
@ -18,6 +18,7 @@ namespace osu.Game.Online.Notifications
|
|||||||
public abstract class NotificationsClient : PersistentEndpointClient
|
public abstract class NotificationsClient : PersistentEndpointClient
|
||||||
{
|
{
|
||||||
public Action<Channel>? ChannelJoined;
|
public Action<Channel>? ChannelJoined;
|
||||||
|
public Action<Channel>? ChannelParted;
|
||||||
public Action<List<Message>>? NewMessages;
|
public Action<List<Message>>? NewMessages;
|
||||||
public Action? PresenceReceived;
|
public Action? PresenceReceived;
|
||||||
|
|
||||||
@ -65,6 +66,8 @@ namespace osu.Game.Online.Notifications
|
|||||||
ChannelJoined?.Invoke(channel);
|
ChannelJoined?.Invoke(channel);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void HandleChannelParted(Channel channel) => ChannelParted?.Invoke(channel);
|
||||||
|
|
||||||
protected void HandleMessages(List<Message> messages)
|
protected void HandleMessages(List<Message> messages)
|
||||||
{
|
{
|
||||||
NewMessages?.Invoke(messages);
|
NewMessages?.Invoke(messages);
|
||||||
|
@ -16,6 +16,7 @@ namespace osu.Game.Online.Notifications
|
|||||||
public abstract class NotificationsClientConnector : PersistentEndpointClientConnector
|
public abstract class NotificationsClientConnector : PersistentEndpointClientConnector
|
||||||
{
|
{
|
||||||
public event Action<Channel>? ChannelJoined;
|
public event Action<Channel>? ChannelJoined;
|
||||||
|
public event Action<Channel>? ChannelParted;
|
||||||
public event Action<List<Message>>? NewMessages;
|
public event Action<List<Message>>? NewMessages;
|
||||||
public event Action? PresenceReceived;
|
public event Action? PresenceReceived;
|
||||||
|
|
||||||
@ -29,6 +30,7 @@ namespace osu.Game.Online.Notifications
|
|||||||
var client = await BuildNotificationClientAsync(cancellationToken);
|
var client = await BuildNotificationClientAsync(cancellationToken);
|
||||||
|
|
||||||
client.ChannelJoined = c => ChannelJoined?.Invoke(c);
|
client.ChannelJoined = c => ChannelJoined?.Invoke(c);
|
||||||
|
client.ChannelParted = c => ChannelParted?.Invoke(c);
|
||||||
client.NewMessages = m => NewMessages?.Invoke(m);
|
client.NewMessages = m => NewMessages?.Invoke(m);
|
||||||
client.PresenceReceived = () => PresenceReceived?.Invoke();
|
client.PresenceReceived = () => PresenceReceived?.Invoke();
|
||||||
|
|
||||||
|
@ -122,6 +122,15 @@ namespace osu.Game.Online.Notifications.WebSocket
|
|||||||
HandleJoinedChannel(joinedChannel);
|
HandleJoinedChannel(joinedChannel);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case @"chat.channel.part":
|
||||||
|
Debug.Assert(message.Data != null);
|
||||||
|
|
||||||
|
Channel? partedChannel = JsonConvert.DeserializeObject<Channel>(message.Data.ToString());
|
||||||
|
Debug.Assert(partedChannel != null);
|
||||||
|
|
||||||
|
HandleChannelParted(partedChannel);
|
||||||
|
break;
|
||||||
|
|
||||||
case @"chat.message.new":
|
case @"chat.message.new":
|
||||||
Debug.Assert(message.Data != null);
|
Debug.Assert(message.Data != null);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user