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"); }