Canceling join request now actually changes the status to cancelled so trying to join same RequestToJoin whiteboard with code manually doesnt fail due to status being Pending

This commit is contained in:
2026-03-09 23:06:27 +01:00
parent 10b550a59a
commit 8fa0de6094
11 changed files with 94 additions and 8 deletions

View File

@@ -2,6 +2,7 @@ using AipsCore.Application.Abstract;
using AipsCore.Application.Models.Shape.Command.MoveShape;
using AipsCore.Application.Models.Whiteboard.Command.AcceptUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.RejectUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.UserCanceledRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Query.GetMembershipStatus;
using AipsCore.Domain.Models.WhiteboardMembership.Enums;
using AipsRT.Model.Memberships;
@@ -21,14 +22,14 @@ public class WhiteboardHub : Hub
private readonly WhiteboardManager _whiteboardManager;
private readonly IMessagingService _messagingService;
private readonly MembershipService _membershipService;
private readonly GetUserService _getUserService;
private readonly UserService _userService;
public WhiteboardHub(WhiteboardManager whiteboardManager, IMessagingService messagingService, MembershipService membershipService, GetUserService getUserService)
public WhiteboardHub(WhiteboardManager whiteboardManager, IMessagingService messagingService, MembershipService membershipService, UserService userService)
{
_whiteboardManager = whiteboardManager;
_messagingService = messagingService;
_membershipService = membershipService;
_getUserService = getUserService;
_userService = userService;
}
public override async Task OnDisconnectedAsync(Exception? exception)
@@ -107,7 +108,7 @@ public class WhiteboardHub : Hub
if (user == null)
{
user = await _getUserService.GetUser(userId);
user = await _userService.GetUser(userId);
}
await Clients.User(ownerId.ToString()).SendAsync("UserWaitingForApproval", user);
@@ -147,6 +148,7 @@ public class WhiteboardHub : Hub
if (whiteboard != null)
{
await _messagingService.CancelJoinRequest(new UserCanceledRequestToJoinCommand(whiteboard.WhiteboardId.ToString(), userId.ToString()));
await Clients.User(whiteboard.OwnerId.ToString()).SendAsync("UserCanceledJoinRequest", userId.ToString());
}
}

View File

@@ -1,13 +1,14 @@
using AipsCore.Application.Abstract;
using AipsCore.Application.Models.User.Query.GetUser;
using AipsCore.Application.Models.Whiteboard.Command.UserCanceledRequestToJoin;
namespace AipsRT.Model.Users;
public class GetUserService
public class UserService
{
private readonly IDispatcher _dispatcher;
public GetUserService(IDispatcher dispatcher)
public UserService(IDispatcher dispatcher)
{
_dispatcher = dispatcher;
}

View File

@@ -27,7 +27,7 @@ builder.Services.AddSingleton<IErrorMessageHandleStrategy, RtErrorHandleStrategy
builder.Services.AddHostedService<ErrorSubscriberBackgroundService>();
builder.Services.AddTransient<MembershipService>();
builder.Services.AddTransient<GetUserService>();
builder.Services.AddTransient<UserService>();
builder.Services.AddScoped<GetWhiteboardService>();
builder.Services.AddSingleton<WhiteboardManager>();

View File

@@ -2,6 +2,7 @@ using AipsCore.Application.Models.Shape.Command.CreateTextShape;
using AipsCore.Application.Models.Shape.Command.MoveShape;
using AipsCore.Application.Models.Whiteboard.Command.AcceptUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.RejectUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.UserCanceledRequestToJoin;
using AipsRT.Model.Whiteboard.Shapes;
namespace AipsRT.Services.Interfaces;
@@ -17,4 +18,5 @@ public interface IMessagingService
Task AcceptedUser(AcceptUserRequestToJoinCommand command);
Task RejectedUser(RejectUserRequestToJoinCommand command);
Task CancelJoinRequest(UserCanceledRequestToJoinCommand command);
}

View File

@@ -6,6 +6,7 @@ using AipsCore.Application.Common.Message.AddRectangle;
using AipsCore.Application.Common.Message.AddTextShape;
using AipsCore.Application.Common.Message.MoveShape;
using AipsCore.Application.Common.Message.RejectUserRequestToJoin;
using AipsCore.Application.Common.Message.UserCanceledRequestToJoin;
using AipsCore.Application.Models.Shape.Command.CreateArrow;
using AipsCore.Application.Models.Shape.Command.CreateLine;
using AipsCore.Application.Models.Shape.Command.CreateRectangle;
@@ -13,6 +14,7 @@ using AipsCore.Application.Models.Shape.Command.CreateTextShape;
using AipsCore.Application.Models.Shape.Command.MoveShape;
using AipsCore.Application.Models.Whiteboard.Command.AcceptUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.RejectUserRequestToJoin;
using AipsCore.Application.Models.Whiteboard.Command.UserCanceledRequestToJoin;
using AipsRT.Model.Whiteboard.Shapes;
using AipsRT.Services.Interfaces;
@@ -116,4 +118,10 @@ public class MessagingService : IMessagingService
var message = new RejectUserRequestToJoinMessage(command);
await _messagePublisher.PublishAsync(message);
}
public async Task CancelJoinRequest(UserCanceledRequestToJoinCommand command)
{
var message = new UserCanceledRequestToJoinMessage(command);
await _messagePublisher.PublishAsync(message);
}
}