using Microsoft.AspNetCore.Components.WebAssembly.Authentication; using Microsoft.AspNetCore.SignalR.Client; using RobotNet.Script.Shares; using RobotNet.Shares; namespace RobotNet.WebApp.Clients; public class ProcessorHubClient : WebAssemblyHubClient { public event Action? StateChanged; public event Action? RequestChanged; public ProcessorHubClient(IAccessTokenProvider tokenProvider, Uri uri) : base(tokenProvider, uri) { Connection.On(nameof(StateChanged), OnStateChanged); Connection.On(nameof(RequestChanged), OnRequestChanged); } public async Task GetState() => await Connection.InvokeAsync(nameof(GetState)); public async Task GetRequest() => await Connection.InvokeAsync(nameof(GetRequest)); public async Task Build() => await Connection.InvokeAsync(nameof(Build)); public async Task Run() => await Connection.InvokeAsync(nameof(Run)); public async Task Stop() => await Connection.InvokeAsync(nameof(Stop)); public async Task Reset() => await Connection.InvokeAsync(nameof(Reset)); private void OnStateChanged(ProcessorState state) => StateChanged?.Invoke(state); private void OnRequestChanged(ProcessorRequest request) => RequestChanged?.Invoke(request); }