namespace EEMSCenter.Hubs; internal partial class ClientsHub(DeviceManager deviceManager, ClientManager clientManager) : HubBase { public override Task OnDisconnectedAsync(Exception? exception) { deviceManager.RemoveDevice(Context.ConnectionId, out DeviceInfo? device); if (device is not null && device.Guid.HasValue) clientManager.DeviceClients.TryRemove(device.Guid.Value, out _); return base.OnDisconnectedAsync(exception); } public Task RegisterDevice(DeviceInfo deviceInfo) { deviceInfo.Guid ??= Guid.NewGuid(); deviceManager.LoginDevice(Context.ConnectionId, deviceInfo); clientManager.DeviceClients[deviceInfo.Guid.Value] = Clients.Caller; return Task.FromResult(deviceInfo.Guid.Value); } }