RobotNet/RobotNet.RobotManager/HubClients/MapHubClient.cs
2025-10-15 15:15:53 +07:00

42 lines
1.8 KiB
C#

using Microsoft.AspNetCore.SignalR.Client;
using OpenIddict.Client;
using RobotNet.MapShares.Dtos;
using RobotNet.Shares;
namespace RobotNet.RobotManager.HubClients;
public class MapHubClient(IHttpClientFactory HttpFactory, OpenIddictClientService openIddictClient)
: OpenIddictHubClient(new Uri($"{HttpFactory.CreateClient("MapManagerAPI").BaseAddress}hubs/map/data").ToString(), openIddictClient, ["robotnet-map-api"])
{
public event Action<Guid>? MapUpdated;
private IDisposable? disMapUpdated;
new public async Task StartAsync()
{
disMapUpdated = Connection.On<Guid>("MapUpdated", mapId => MapUpdated?.Invoke(mapId));
await base.StartAsync();
}
new public async Task StopAsync()
{
if (disMapUpdated != null)
{
disMapUpdated.Dispose();
disMapUpdated = null;
}
await base.StopAsync();
}
public async Task<MessageResult<MapDataDto>> GetMapData(Guid mapId)
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapDataDto>>(nameof(GetMapData), mapId) : new(false, "Kết nối thất bại");
public async Task<MessageResult<ElementDto[]>> GetElementsState(Guid mapId)
=> IsConnected ? await Connection.InvokeAsync<MessageResult<ElementDto[]>>(nameof(GetElementsState), mapId) : new(false, "Kết nối thất bại");
public async Task<MessageResult<MapInfoDto>> GetMapInfoByName(string name)
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapInfoDto>>(nameof(GetMapInfoByName), name) : new(false, "Kết nối thất bại");
public async Task<MessageResult<MapInfoDto>> GetMapInfoById(Guid mapId)
=> IsConnected ? await Connection.InvokeAsync<MessageResult<MapInfoDto>>(nameof(GetMapInfoById), mapId) : new(false, "Kết nối thất bại");
}