feat: Manage joined channels in AppOrchestrator and update channel history handling

This commit is contained in:
HueByte
2026-02-19 08:03:30 +01:00
parent eef9059b6a
commit 96b31ec568
4 changed files with 62 additions and 22 deletions
+10 -9
View File
@@ -112,12 +112,14 @@ public class ChatHub(EchoHubDbContext db, ILogger<ChatHub> logger, PresenceTrack
return [];
}
presenceTracker.JoinChannel(CurrentUsername, channelName);
var isNewJoin = presenceTracker.JoinChannel(CurrentUsername, channelName);
await Groups.AddToGroupAsync(Context.ConnectionId, channelName);
await Clients.OthersInGroup(channelName).UserJoined(channelName, CurrentUsername);
logger.LogInformation("{User} joined channel '{Channel}'", CurrentUsername, channelName);
if (isNewJoin)
{
await Groups.AddToGroupAsync(Context.ConnectionId, channelName);
await Clients.OthersInGroup(channelName).UserJoined(channelName, CurrentUsername);
logger.LogInformation("{User} joined channel '{Channel}'", CurrentUsername, channelName);
}
var history = await GetChannelHistory(channelName, HubConstants.DefaultHistoryCount);
return history;
@@ -293,11 +295,10 @@ public class ChatHub(EchoHubDbContext db, ILogger<ChatHub> logger, PresenceTrack
statusMessage);
var channels = presenceTracker.GetChannelsForUser(CurrentUsername);
var connections = presenceTracker.GetConnectionsInChannels(channels);
foreach (var channel in channels)
{
await Clients.Group(channel).UserStatusChanged(presence);
}
if (connections.Count > 0)
await Clients.Clients(connections).UserStatusChanged(presence);
}
catch (Exception ex)
{