Fixed groups & their websocket support.

This commit is contained in:
Tom
2025-01-18 21:41:00 +00:00
parent c21890b55d
commit 9a17ad16b3
3 changed files with 23 additions and 14 deletions

View File

@ -21,26 +21,27 @@ namespace TwitchChatTTS.Chat.Groups
public void Add(Group group) public void Add(Group group)
{ {
_groups.Add(group.Name, group); _groups.Add(group.Id, group);
} }
public void Add(long chatter, string groupId) public void Add(long chatterId, string groupId)
{ {
if (_chatters.TryGetValue(chatter, out var list)) if (_chatters.TryGetValue(chatterId, out var list))
list.Add(groupId); if (!list.Contains(groupId))
list.Add(groupId);
else else
_chatters.Add(chatter, new List<string>() { groupId }); _chatters.Add(chatterId, new List<string>() { groupId });
} }
public void Add(long chatter, ICollection<string> groupNames) public void Add(long chatter, ICollection<string> groupIds)
{ {
if (_chatters.TryGetValue(chatter, out var list)) if (_chatters.TryGetValue(chatter, out var list))
{ {
foreach (var group in groupNames) foreach (var group in groupIds)
list.Add(group); list.Add(group);
} }
else else
_chatters.Add(chatter, groupNames); _chatters.Add(chatter, groupIds);
} }
public void Clear() public void Clear()
@ -49,9 +50,9 @@ namespace TwitchChatTTS.Chat.Groups
_chatters.Clear(); _chatters.Clear();
} }
public Group? Get(string groupName) public Group? Get(string groupId)
{ {
if (_groups.TryGetValue(groupName, out var group)) if (_groups.TryGetValue(groupId, out var group))
return group; return group;
return null; return null;
} }
@ -59,7 +60,9 @@ namespace TwitchChatTTS.Chat.Groups
public IEnumerable<string> GetGroupNamesFor(long chatter) public IEnumerable<string> GetGroupNamesFor(long chatter)
{ {
if (_chatters.TryGetValue(chatter, out var groups)) if (_chatters.TryGetValue(chatter, out var groups))
return groups.Select(g => _groups[g].Name); return groups.Select(g => _groups.TryGetValue(g, out var group) ? group.Name : null)
.Where(g => g != null)
.Cast<string>();
return Array.Empty<string>(); return Array.Empty<string>();
} }
@ -72,9 +75,9 @@ namespace TwitchChatTTS.Chat.Groups
return GetPriorityFor(groups); return GetPriorityFor(groups);
} }
public int GetPriorityFor(IEnumerable<string> groupNames) public int GetPriorityFor(IEnumerable<string> groupIds)
{ {
var values = groupNames.Select(g => _groups.TryGetValue(g, out var group) ? group : null).Where(g => g != null); var values = groupIds.Select(g => _groups.TryGetValue(g, out var group) ? group : null).Where(g => g != null);
if (values.Any()) if (values.Any())
return values.Max(g => g!.Priority); return values.Max(g => g!.Priority);
return 0; return 0;

View File

@ -7,7 +7,7 @@ namespace TwitchChatTTS.Hermes.Socket.Requests
{ {
public class UpdateGroupAck : IRequestAck public class UpdateGroupAck : IRequestAck
{ {
public string Name => "create_group"; public string Name => "update_group";
private readonly IChatterGroupManager _groups; private readonly IChatterGroupManager _groups;
private readonly JsonSerializerOptions _options; private readonly JsonSerializerOptions _options;
private readonly ILogger _logger; private readonly ILogger _logger;

View File

@ -87,12 +87,16 @@ s.AddTransient<ICommandFactory, CommandFactory>();
// Request acks // Request acks
s.AddSingleton<RequestAckManager>(); s.AddSingleton<RequestAckManager>();
s.AddTransient<IRequestAck, CreateGroupAck>();
s.AddTransient<IRequestAck, CreateGroupChatterAck>();
s.AddTransient<IRequestAck, CreatePolicyAck>(); s.AddTransient<IRequestAck, CreatePolicyAck>();
s.AddTransient<IRequestAck, CreateRedeemableActionAck>(); s.AddTransient<IRequestAck, CreateRedeemableActionAck>();
s.AddTransient<IRequestAck, CreateRedemptionAck>(); s.AddTransient<IRequestAck, CreateRedemptionAck>();
s.AddTransient<IRequestAck, CreateTTSFilterAck>(); s.AddTransient<IRequestAck, CreateTTSFilterAck>();
s.AddTransient<IRequestAck, CreateTTSUserAck>(); s.AddTransient<IRequestAck, CreateTTSUserAck>();
s.AddTransient<IRequestAck, CreateTTSVoiceAck>(); s.AddTransient<IRequestAck, CreateTTSVoiceAck>();
s.AddTransient<IRequestAck, DeleteGroupAck>();
s.AddTransient<IRequestAck, DeleteGroupChatterAck>();
s.AddTransient<IRequestAck, DeletePolicyAck>(); s.AddTransient<IRequestAck, DeletePolicyAck>();
s.AddTransient<IRequestAck, DeleteRedeemableActionAck>(); s.AddTransient<IRequestAck, DeleteRedeemableActionAck>();
s.AddTransient<IRequestAck, DeleteRedemptionAck>(); s.AddTransient<IRequestAck, DeleteRedemptionAck>();
@ -110,6 +114,8 @@ s.AddTransient<IRequestAck, GetRedemptionsAck>();
s.AddTransient<IRequestAck, GetTTSUsersAck>(); s.AddTransient<IRequestAck, GetTTSUsersAck>();
s.AddTransient<IRequestAck, GetTTSVoicesAck>(); s.AddTransient<IRequestAck, GetTTSVoicesAck>();
s.AddTransient<IRequestAck, GetTTSWordFiltersAck>(); s.AddTransient<IRequestAck, GetTTSWordFiltersAck>();
s.AddTransient<IRequestAck, UpdateGroupAck>();
s.AddTransient<IRequestAck, UpdateGroupChatterAck>();
s.AddTransient<IRequestAck, UpdateDefaultTTSVoiceAck>(); s.AddTransient<IRequestAck, UpdateDefaultTTSVoiceAck>();
s.AddTransient<IRequestAck, UpdatePolicyAck>(); s.AddTransient<IRequestAck, UpdatePolicyAck>();
s.AddTransient<IRequestAck, UpdateRedeemableActionAck>(); s.AddTransient<IRequestAck, UpdateRedeemableActionAck>();