RobotNet/RobotNet.WebApp/Clients/ConsoleHubClient.cs
2025-10-15 15:15:53 +07:00

47 lines
2.2 KiB
C#

using Microsoft.AspNetCore.Components.WebAssembly.Authentication;
using Microsoft.AspNetCore.SignalR.Client;
namespace RobotNet.WebApp.Clients;
public class ConsoleHubClient : WebAssemblyHubClient
{
public event Action<string>? MessageInfo;
private IDisposable? disMessageInfo;
public event Action<string>? MessageWarning;
private IDisposable? disMessageWarning;
public event Action<string>? MessageError;
private IDisposable? disMessageError;
public ConsoleHubClient(IAccessTokenProvider tokenProvider, Uri uri) : base(tokenProvider, uri)
{
disMessageInfo = Connection.On<string>(nameof(MessageInfo), message => MessageInfo?.Invoke(message));
disMessageWarning = Connection.On<string>(nameof(MessageWarning), message => MessageWarning?.Invoke(message));
disMessageError = Connection.On<string>(nameof(MessageError), message => MessageError?.Invoke(message));
}
public override async Task StopAsync()
{
disMessageInfo?.Dispose();
disMessageInfo = null;
disMessageWarning?.Dispose();
disMessageWarning = null;
disMessageError?.Dispose();
disMessageError = null;
await base.StopAsync();
}
public Task RegisterTaskConsole(string name) => Connection.InvokeAsync("RegisterTasksConsole", name);
public Task UnregisterTaskConsole(string name) => Connection.InvokeAsync("UnregisterTasksConsole", name);
public Task RegisterTaskConsoles() => Connection.InvokeAsync("RegisterTaskConsoles");
public Task UnregisterTaskConsoles() => Connection.InvokeAsync("UnregisterTaskConsoles");
public Task RegisterMissionConsole(Guid missionId) => Connection.InvokeAsync("RegisterMissionConsole", missionId);
public Task UnregisterMissionConsole(Guid missionId) => Connection.InvokeAsync("UnregisterMissionConsole", missionId);
public Task RegisterMissionConsoles() => Connection.InvokeAsync("RegisterMissionConsoles");
public Task UnregisterMissionConsoles() => Connection.InvokeAsync("UnregisterMissionConsoles");
public Task RegisterAllConsoles() => Connection.InvokeAsync("RegisterAllConsoles");
public Task UnregisterAllConsoles() => Connection.InvokeAsync("UnregisterAllConsoles");
}