async process on worker of AddRectangle
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="Services\" />
|
||||
<Folder Include="Hubs\Dtos\" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
namespace AipsRT.Hubs.Dtos;
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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 =>
|
||||
{
|
||||
|
||||
8
dotnet/AipsRT/Services/Interfaces/IMessagingService.cs
Normal file
8
dotnet/AipsRT/Services/Interfaces/IMessagingService.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using AipsRT.Model.Whiteboard.Shapes;
|
||||
|
||||
namespace AipsRT.Services.Interfaces;
|
||||
|
||||
public interface IMessagingService
|
||||
{
|
||||
Task CreatedRectangle(Guid whiteboardId, Rectangle rectangle);
|
||||
}
|
||||
36
dotnet/AipsRT/Services/MessagingService.cs
Normal file
36
dotnet/AipsRT/Services/MessagingService.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user