using AipsCore.Application.Common.Message.ErrorMessage; using AipsRT.Hubs; using AipsRT.Model.Whiteboard; using Microsoft.AspNetCore.SignalR; namespace AipsRT.Services; public class RtErrorHandleStrategy : IErrorMessageHandleStrategy { private readonly IHubContext _hubContext; private readonly WhiteboardManager _whiteboardManager; public RtErrorHandleStrategy(IHubContext hubContext, WhiteboardManager whiteboardManager) { _hubContext = hubContext; _whiteboardManager = whiteboardManager; } public async Task Handle(ErrorMessage message, CancellationToken cancellationToken) { await _whiteboardManager.RefreshWhiteboard(message.WhiteboardId); var whiteboard = _whiteboardManager.GetWhiteboard(message.WhiteboardId)!; await _hubContext.Clients .Group(whiteboard.WhiteboardId.ToString()) .SendAsync("InitWhiteboard", whiteboard, cancellationToken); } }