mirror of
https://github.com/ppy/osu.git
synced 2024-11-16 09:17:48 +08:00
de52f0a80c
This is a prerequisite for https://github.com/ppy/osu/pull/25480. The `WebSocketNotificationsClient` was tightly coupled to chat specifics making it difficult to use in the second factor verification flow. This commit's goal is to separate the websocket connection and message handling concerns from specific chat logic concerns.
30 lines
1000 B
C#
30 lines
1000 B
C#
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
// See the LICENCE file in the repository root for full licence text.
|
|
|
|
using System;
|
|
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using osu.Framework.Bindables;
|
|
|
|
namespace osu.Game.Online.Notifications.WebSocket
|
|
{
|
|
public class DummyNotificationsClient : INotificationsClient
|
|
{
|
|
public IBindable<bool> IsConnected => new BindableBool(true);
|
|
|
|
public event Action<SocketMessage>? MessageReceived;
|
|
|
|
public Func<SocketMessage, bool>? HandleMessage;
|
|
|
|
public Task SendAsync(SocketMessage message, CancellationToken? cancellationToken = default)
|
|
{
|
|
if (HandleMessage?.Invoke(message) != true)
|
|
throw new InvalidOperationException($@"{nameof(DummyNotificationsClient)} cannot process this message.");
|
|
|
|
return Task.CompletedTask;
|
|
}
|
|
|
|
public void Receive(SocketMessage message) => MessageReceived?.Invoke(message);
|
|
}
|
|
}
|