mirror of
https://github.com/RedWizardsLab/EchoHub.git
synced 2026-09-05 07:36:03 +02:00
feat: add support for broadcasting and handling channel deletions across clients
This commit is contained in:
@@ -162,6 +162,8 @@ public class ChannelsController : ControllerBase
|
||||
if (!result.IsSuccess)
|
||||
return MapChannelError(result);
|
||||
|
||||
await _chatService.BroadcastChannelDeletedAsync(channel.ToLowerInvariant().Trim());
|
||||
|
||||
return NoContent();
|
||||
}
|
||||
|
||||
|
||||
@@ -320,6 +320,9 @@ public class ChatService : IChatService
|
||||
public Task BroadcastChannelUpdatedAsync(ChannelDto channel, string? channelName = null)
|
||||
=> BroadcastToAllAsync(b => b.SendChannelUpdatedAsync(channel, channelName));
|
||||
|
||||
public Task BroadcastChannelDeletedAsync(string channelName)
|
||||
=> BroadcastToAllAsync(b => b.SendChannelDeletedAsync(channelName));
|
||||
|
||||
private async Task BroadcastToAllAsync(Func<IChatBroadcaster, Task> action)
|
||||
{
|
||||
foreach (var broadcaster in _broadcasters)
|
||||
|
||||
@@ -63,6 +63,9 @@ public class SignalRBroadcaster : IChatBroadcaster
|
||||
public Task SendMessageDeletedAsync(string channelName, Guid messageId)
|
||||
=> HubContext.Clients.Group(channelName).MessageDeleted(channelName, messageId);
|
||||
|
||||
public Task SendChannelDeletedAsync(string channelName)
|
||||
=> HubContext.Clients.All.ChannelDeleted(channelName);
|
||||
|
||||
public Task SendChannelNukedAsync(string channelName)
|
||||
=> HubContext.Clients.Group(channelName).ChannelNuked(channelName);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user