using Microsoft.AspNetCore.Components.WebAssembly.Authentication; using Microsoft.AspNetCore.SignalR.Client; using RobotNet.Script.Shares; using RobotNet.Shares; namespace RobotNet.WebApp.Clients; public class HMIHubClient : WebAssemblyHubClient { public event Action? StateChanged; public event Action? RequestChanged; public HMIHubClient(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> GetVariables(IEnumerable keys) => await Connection.InvokeAsync>(nameof(GetVariables), keys); public async Task SetVariable(string key, string value) => await Connection.InvokeAsync(nameof(SetVariable), key, value); private void OnStateChanged(ProcessorState state) => StateChanged?.Invoke(state); private void OnRequestChanged(ProcessorRequest request) => RequestChanged?.Invoke(request); }