using Microsoft.AspNetCore.Components.WebAssembly.Authentication; using Microsoft.AspNetCore.SignalR.Client; using RobotNet.Script.Shares.Dashboard; using RobotNet.Shares; namespace RobotNet.WebApp.Clients; public class DashboardHubClient : WebAssemblyHubClient { public event Action? DashboardDataUpdated; private IDisposable? disDashboardDataUpdated; public DashboardHubClient(IAccessTokenProvider tokenProvider, Uri uri) : base(tokenProvider, uri) { disDashboardDataUpdated = Connection.On("DashboardDataUpdated", data => DashboardDataUpdated?.Invoke(data)); } public override async Task StopAsync() { if (disDashboardDataUpdated != null) { disDashboardDataUpdated.Dispose(); disDashboardDataUpdated = null; } await base.StopAsync(); } public async Task> GetDashboardData() => IsConnected ? await Connection.InvokeAsync>(nameof(GetDashboardData)) : new(false, "Kết nối thất bại"); }