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)
{
_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))
if (!list.Contains(groupId))
list.Add(groupId);
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))
{
foreach (var group in groupNames)
foreach (var group in groupIds)
list.Add(group);
}
else
_chatters.Add(chatter, groupNames);
_chatters.Add(chatter, groupIds);
}
public void Clear()
@ -49,9 +50,9 @@ namespace TwitchChatTTS.Chat.Groups
_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 null;
}
@ -59,7 +60,9 @@ namespace TwitchChatTTS.Chat.Groups
public IEnumerable<string> GetGroupNamesFor(long chatter)
{
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>();
}
@ -72,9 +75,9 @@ namespace TwitchChatTTS.Chat.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())
return values.Max(g => g!.Priority);
return 0;

View File

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

View File

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