diff --git a/Chat/Groups/ChatterGroupManager.cs b/Chat/Groups/ChatterGroupManager.cs index 7cf828e..cf0e577 100644 --- a/Chat/Groups/ChatterGroupManager.cs +++ b/Chat/Groups/ChatterGroupManager.cs @@ -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)) - list.Add(groupId); + if (_chatters.TryGetValue(chatterId, out var list)) + if (!list.Contains(groupId)) + list.Add(groupId); else - _chatters.Add(chatter, new List() { groupId }); + _chatters.Add(chatterId, new List() { groupId }); } - public void Add(long chatter, ICollection groupNames) + public void Add(long chatter, ICollection 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 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(); return Array.Empty(); } @@ -72,9 +75,9 @@ namespace TwitchChatTTS.Chat.Groups return GetPriorityFor(groups); } - public int GetPriorityFor(IEnumerable groupNames) + public int GetPriorityFor(IEnumerable 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; diff --git a/Hermes/Socket/Requests/UpdateGroupAck.cs b/Hermes/Socket/Requests/UpdateGroupAck.cs index 991028d..fbcb261 100644 --- a/Hermes/Socket/Requests/UpdateGroupAck.cs +++ b/Hermes/Socket/Requests/UpdateGroupAck.cs @@ -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; diff --git a/Startup.cs b/Startup.cs index 86fe310..1705714 100644 --- a/Startup.cs +++ b/Startup.cs @@ -87,12 +87,16 @@ s.AddTransient(); // Request acks s.AddSingleton(); +s.AddTransient(); +s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); +s.AddTransient(); +s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); @@ -110,6 +114,8 @@ s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient(); +s.AddTransient(); +s.AddTransient(); s.AddTransient(); s.AddTransient(); s.AddTransient();