using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.SignalR.Client;
using RobotNet10.Components.Clients;
using RobotNet10.ScriptEngine.Shared;
namespace RobotNet10.ScriptEditor.Clients;
///
/// SignalR HubClient for ConsoleHub - handles console logging events.
///
public class ConsoleHubClient : HubClient
{
public event Action? ErrorReceived;
public event Action? InfoReceived;
public event Action? WarningReceived;
public ConsoleHubClient(NavigationManager navigationManager)
: base(navigationManager.ToAbsoluteUri(HubEndpoints.ScriptConsoleHubPath))
{
Connection.On("Error", message => ErrorReceived?.Invoke(message));
Connection.On("Info", message => InfoReceived?.Invoke(message));
Connection.On("Warning", message => WarningReceived?.Invoke(message));
}
///
/// Registers to receive console messages for a specific task.
///
public Task RegisterTaskAsync(string name) => Connection.InvokeAsync("RegisterTask", name);
///
/// Unregisters from receiving console messages for a specific task.
///
public Task UnregisterTaskAsync(string name) => Connection.InvokeAsync("UnregisterTask", name);
///
/// Registers to receive console messages for a specific mission.
///
public Task RegisterMissionAsync(Guid missionId) => Connection.InvokeAsync("RegisterMission", missionId);
///
/// Unregisters from receiving console messages for a specific mission.
///
public Task UnregisterMissionAsync(Guid missionId) => Connection.InvokeAsync("UnregisterMission", missionId);
///
/// Registers to receive all console messages.
///
public Task RegisterAllAsync() => Connection.InvokeAsync("RegisterAll");
///
/// Unregisters from receiving all console messages.
///
public Task UnregisterAllAsync() => Connection.InvokeAsync("UnregisterAll");
}