feat: add support for broadcasting and handling channel deletions across clients

This commit is contained in:
Stone_Red
2026-07-17 16:35:59 +02:00
committed by HueByte
parent 4d25458717
commit a9519a52cc
11 changed files with 39 additions and 0 deletions
+9
View File
@@ -1071,6 +1071,15 @@ public sealed class AppOrchestrator : IDisposable
_conn.MessageDeleted += (channelName, messageId) =>
InvokeUI(() => _messageManager.RemoveMessage(channelName, messageId));
_conn.ChannelDeleted += channelName =>
{
InvokeUI(() =>
{
_conn.UntrackChannel(channelName);
_mainWindow.RemoveChannel(channelName);
});
};
_conn.ChannelNuked += channelName =>
{
InvokeUI(() =>
@@ -46,6 +46,7 @@ internal sealed class ConnectionManager : IAsyncDisposable
public event Action<string, string?>? UserBanned;
public event Action<string>? ForceDisconnected;
public event Action<string, Guid>? MessageDeleted;
public event Action<string>? ChannelDeleted;
public event Action<string>? ChannelNuked;
public event Action<ChannelDto>? ChannelUpdated;
public event Action<string>? Error;
@@ -300,6 +301,7 @@ internal sealed class ConnectionManager : IAsyncDisposable
connection.OnUserBanned += (user, reason) => UserBanned?.Invoke(user, reason);
connection.OnForceDisconnect += reason => ForceDisconnected?.Invoke(reason);
connection.OnMessageDeleted += (ch, id) => MessageDeleted?.Invoke(ch, id);
connection.OnChannelDeleted += ch => ChannelDeleted?.Invoke(ch);
connection.OnChannelNuked += ch => ChannelNuked?.Invoke(ch);
connection.OnChannelUpdated += ch =>
{
@@ -58,6 +58,7 @@ public sealed class EchoHubConnection : IAsyncDisposable
public event Action<string, string, string?>? OnUserKicked;
public event Action<string, string?>? OnUserBanned;
public event Action<string, Guid>? OnMessageDeleted;
public event Action<string>? OnChannelDeleted;
public event Action<string>? OnChannelNuked;
public event Action<string>? OnForceDisconnect;
public event Action<string>? OnError;
@@ -144,6 +145,11 @@ public sealed class EchoHubConnection : IAsyncDisposable
OnMessageDeleted?.Invoke(channelName, messageId);
});
_connection.On<string>(nameof(Core.Contracts.IEchoHubClient.ChannelDeleted), channelName =>
{
OnChannelDeleted?.Invoke(channelName);
});
_connection.On<string>(nameof(Core.Contracts.IEchoHubClient.ChannelNuked), channelName =>
{
OnChannelNuked?.Invoke(channelName);