async process on worker of AddRectangle

This commit is contained in:
2026-02-16 16:56:00 +01:00
parent d9caeb2209
commit 1750f5adb1
12 changed files with 107 additions and 9 deletions

View File

@@ -15,7 +15,7 @@
</ItemGroup>
<ItemGroup>
<Folder Include="Services\" />
<Folder Include="Hubs\Dtos\" />
</ItemGroup>
</Project>

View File

@@ -1 +0,0 @@
namespace AipsRT.Hubs.Dtos;

View File

@@ -1,5 +1,7 @@
using AipsCore.Application.Abstract.MessageBroking;
using AipsRT.Model.Whiteboard;
using AipsRT.Model.Whiteboard.Shapes;
using AipsRT.Services.Interfaces;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.SignalR;
@@ -9,10 +11,12 @@ namespace AipsRT.Hubs;
public class WhiteboardHub : Hub
{
private readonly WhiteboardManager _whiteboardManager;
private readonly IMessagingService _messagingService;
public WhiteboardHub(WhiteboardManager whiteboardManager)
public WhiteboardHub(WhiteboardManager whiteboardManager, IMessagingService messagingService)
{
_whiteboardManager = whiteboardManager;
_messagingService = messagingService;
}
public async Task JoinWhiteboard(Guid whiteboardId)
@@ -40,6 +44,10 @@ public class WhiteboardHub : Hub
public async Task AddRectangle(Rectangle rectangle)
{
var whiteboard = _whiteboardManager.GetWhiteboardForUser(Guid.Parse(Context.UserIdentifier!))!;
rectangle.OwnerId = Guid.Parse(Context.UserIdentifier!);
await _messagingService.CreatedRectangle(whiteboard.WhiteboardId, rectangle);
whiteboard.AddRectangle(rectangle);

View File

@@ -1,6 +1,8 @@
using AipsCore.Infrastructure.DI;
using AipsRT.Hubs;
using AipsRT.Model.Whiteboard;
using AipsRT.Services;
using AipsRT.Services.Interfaces;
using DotNetEnv;
using Microsoft.AspNetCore.SignalR;
@@ -16,6 +18,7 @@ builder.Services.AddAips(builder.Configuration);
builder.Services.AddScoped<GetWhiteboardService>();
builder.Services.AddSingleton<WhiteboardManager>();
builder.Services.AddSingleton<IMessagingService, MessagingService>();
builder.Services.AddCors(options =>
{

View File

@@ -0,0 +1,8 @@
using AipsRT.Model.Whiteboard.Shapes;
namespace AipsRT.Services.Interfaces;
public interface IMessagingService
{
Task CreatedRectangle(Guid whiteboardId, Rectangle rectangle);
}

View File

@@ -0,0 +1,36 @@
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Common.Message.AddRectangle;
using AipsCore.Application.Models.Shape.Command.CreateRectangle;
using AipsRT.Model.Whiteboard.Shapes;
using AipsRT.Services.Interfaces;
namespace AipsRT.Services;
public class MessagingService : IMessagingService
{
private readonly IMessagePublisher _messagePublisher;
public MessagingService(IMessagePublisher messagePublisher)
{
_messagePublisher = messagePublisher;
}
public async Task CreatedRectangle(Guid whiteboardId, Rectangle rectangle)
{
var command = new CreateRectangleCommand(
rectangle.Id.ToString(),
whiteboardId.ToString(),
rectangle.OwnerId.ToString(),
rectangle.Position.X,
rectangle.Position.Y,
rectangle.Color,
rectangle.EndPosition.X,
rectangle.EndPosition.Y,
rectangle.BorderThickness
);
var message = new AddRectangleMessage(command);
await _messagePublisher.PublishAsync(message);
}
}