Merge branch 'main' into feature-join-whiteboard-by-code

# Conflicts:
#	dotnet/AipsRT/Hubs/WhiteboardHub.cs
#	dotnet/AipsRT/Services/Interfaces/IMessagingService.cs
#	front/src/stores/whiteboard.ts
This commit is contained in:
2026-03-07 21:40:09 +01:00
18 changed files with 167 additions and 15 deletions

View File

@@ -0,0 +1,6 @@
namespace AipsCore.Application.Abstract;
public interface IWhiteboardAwareContext
{
Guid GetWhiteboardId();
}

View File

@@ -1,6 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Models.Shape.Command.CreateArrow;
namespace AipsCore.Application.Common.Message.AddArrow;
public record AddArrowMessage(CreateArrowCommand Command) : IMessage;
public record AddArrowMessage(CreateArrowCommand Command) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return Guid.Parse(Command.WhiteboardId);
}
}

View File

@@ -1,6 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Models.Shape.Command.CreateLine;
namespace AipsCore.Application.Common.Message.AddLine;
public record AddLineMessage(CreateLineCommand Command) : IMessage;
public record AddLineMessage(CreateLineCommand Command) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return Guid.Parse(Command.WhiteboardId);
}
}

View File

@@ -1,6 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Models.Shape.Command.CreateRectangle;
namespace AipsCore.Application.Common.Message.AddRectangle;
public record AddRectangleMessage(CreateRectangleCommand Command) : IMessage;
public record AddRectangleMessage(CreateRectangleCommand Command) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return Guid.Parse(Command.WhiteboardId);
}
}

View File

@@ -1,6 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Models.Shape.Command.CreateTextShape;
namespace AipsCore.Application.Common.Message.AddTextShape;
public record AddTextShapeMessage(CreateTextShapeCommand Command) : IMessage;
public record AddTextShapeMessage(CreateTextShapeCommand Command) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return Guid.Parse(Command.WhiteboardId);
}
}

View File

@@ -0,0 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Domain.Common.Validation;
namespace AipsCore.Application.Common.Message.ErrorMessage;
public record ErrorMessage(Guid WhiteboardId, ICollection<ValidationError> Errors) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return WhiteboardId;
}
}

View File

@@ -0,0 +1,18 @@
using AipsCore.Application.Abstract.MessageBroking;
namespace AipsCore.Application.Common.Message.ErrorMessage;
public class ErrorMessageHandler : IMessageHandler<ErrorMessage>
{
private readonly IErrorMessageHandleStrategy _handleStrategy;
public ErrorMessageHandler(IErrorMessageHandleStrategy handleStrategy)
{
_handleStrategy = handleStrategy;
}
public async Task Handle(ErrorMessage message, CancellationToken cancellationToken)
{
await _handleStrategy.Handle(message, cancellationToken);
}
}

View File

@@ -0,0 +1,6 @@
namespace AipsCore.Application.Common.Message.ErrorMessage;
public interface IErrorMessageHandleStrategy
{
Task Handle(ErrorMessage message, CancellationToken cancellationToken);
}

View File

@@ -1,6 +1,13 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Abstract.MessageBroking;
using AipsCore.Application.Models.Shape.Command.MoveShape;
namespace AipsCore.Application.Common.Message.MoveShape;
public record MoveShapeMessage(MoveShapeCommand Command) : IMessage;
public record MoveShapeMessage(Guid WhiteboardId, MoveShapeCommand Command) : IMessage, IWhiteboardAwareContext
{
public Guid GetWhiteboardId()
{
return WhiteboardId;
}
}