diff --git a/Requests/CreateTTSFilter.cs b/Requests/CreateTTSFilter.cs index 14ab9a8..a3dba1a 100644 --- a/Requests/CreateTTSFilter.cs +++ b/Requests/CreateTTSFilter.cs @@ -20,6 +20,10 @@ namespace HermesSocketServer.Requests var id = Guid.NewGuid(); string search = data["search"].ToString()!; string replace = data["replace"].ToString()!; + int flag = 0; + if (data.TryGetValue("flag", out var flagObject)) { + int.TryParse(flagObject.ToString(), out flag); + } var filter = new TTSWordFilter() { @@ -27,6 +31,7 @@ namespace HermesSocketServer.Requests UserId = channel.Id, Search = search, Replace = replace, + Flag = flag, }; bool result = channel.Filters.Set(id.ToString(), filter); diff --git a/Requests/UpdateRedemption.cs b/Requests/UpdateRedemption.cs index ba48294..77205b1 100644 --- a/Requests/UpdateRedemption.cs +++ b/Requests/UpdateRedemption.cs @@ -6,7 +6,7 @@ namespace HermesSocketServer.Requests public class UpdateRedemption : IRequest { public string Name => "update_redemption"; - public string[] RequiredKeys => ["id", "redemption", "action", "order"]; + public string[] RequiredKeys => ["id", "redemption", "action", "order", "state"]; private ILogger _logger; public UpdateRedemption(ILogger logger) diff --git a/Requests/UpdateTTSFilter.cs b/Requests/UpdateTTSFilter.cs index bccfc31..93af209 100644 --- a/Requests/UpdateTTSFilter.cs +++ b/Requests/UpdateTTSFilter.cs @@ -21,6 +21,10 @@ namespace HermesSocketServer.Requests var id = data["id"].ToString()!; string search = data["search"].ToString()!; string replace = data["replace"].ToString()!; + int flag = -1; + if (data.TryGetValue("flag", out var flagObject)) { + int.TryParse(flagObject.ToString(), out flag); + } var filter = new TTSWordFilter() { @@ -28,9 +32,15 @@ namespace HermesSocketServer.Requests UserId = channel.Id, Search = search, Replace = replace, + Flag = flag, }; - bool result = channel.Filters.Set(id, filter); + bool result = channel.Filters.Modify(id, f => { + f.Search = search; + f.Replace = replace; + if (flag >= 0) + f.Flag = flag; + }); if (result) { diff --git a/Socket/Handlers/HermesLoginHandler.cs b/Socket/Handlers/HermesLoginHandler.cs index 9f6cb16..730edef 100644 --- a/Socket/Handlers/HermesLoginHandler.cs +++ b/Socket/Handlers/HermesLoginHandler.cs @@ -91,6 +91,9 @@ namespace HermesSocketServer.Socket.Handlers OwnerId = _configuration.Tts.OwnerId, Admin = sender.Admin, WebLogin = data.WebLogin, + WordFilters = channel.Filters.Get().Values, + DefaultTTSVoice = channel.User.DefaultVoice ?? _configuration.Tts.DefaultTtsVoice, + TTSVoicesAvailable = _voices.Get().ToDictionary(v => v.Key, v => v.Value.Name), }; var userIdDict = new Dictionary() { { "user", userId } }; @@ -110,25 +113,12 @@ namespace HermesSocketServer.Socket.Handlers }) ); - ack.TTSVoicesAvailable = _voices.Get().ToDictionary(v => v.Key, v => v.Value.Name); - ack.EnabledTTSVoices = new List(); string sql5 = $"SELECT v.name FROM \"TtsVoiceState\" s " + "INNER JOIN \"TtsVoice\" v ON s.\"ttsVoiceId\" = v.id " + "WHERE \"userId\" = @user AND state = true"; await _database.Execute(sql5, userIdDict, (r) => ack.EnabledTTSVoices.Add(r.GetString(0))); - ack.WordFilters = new List(); - string sql6 = $"SELECT id, search, replace FROM \"TtsWordFilter\" WHERE \"userId\" = @user"; - await _database.Execute(sql6, userIdDict, (r) => ack.WordFilters.Add(new TTSWordFilter() - { - Id = r.GetString(0), - Search = r.GetString(1), - Replace = r.GetString(2) - })); - - ack.DefaultTTSVoice = channel.User.DefaultVoice ?? _configuration.Tts.DefaultTtsVoice; - await sender.Send(2, ack); string version = data.MajorVersion == null ? "unknown" : $"{data.MajorVersion}.{data.MinorVersion}"; diff --git a/Store/TTSFilterStore.cs b/Store/TTSFilterStore.cs index 4d9d680..34b1b41 100644 --- a/Store/TTSFilterStore.cs +++ b/Store/TTSFilterStore.cs @@ -22,15 +22,17 @@ namespace HermesSocketServer.Store public override async Task Load() { var data = new Dictionary() { { "user", _userId } }; - string sql = $"SELECT id, search, replace FROM \"TtsWordFilter\" WHERE \"userId\" = @user"; + string sql = $"SELECT id, search, replace, flag FROM \"TtsWordFilter\" WHERE \"userId\" = @user"; await _database.Execute(sql, data, (reader) => { var id = reader.GetString(0); _store.Add(id.ToString(), new TTSWordFilter() { Id = id, + UserId = _userId, Search = reader.GetString(1), - Replace = reader.GetString(2) + Replace = reader.GetString(2), + Flag = reader.GetInt32(3), }); }); _logger.Information($"Loaded {_store.Count} TTS chatter voices from database.");