using Blazored.LocalStorage; using Katheryne.Abstractions; namespace Frontend.Services; public class GrammarStorageService { private const string GrammarTextKey = "GrammarText"; private readonly ILocalStorageService _localStorage; private readonly ILogger _logger; private readonly IChatRobotFactory _robotFactory; public GrammarStorageService(ILocalStorageService localStorage, ILogger logger, IChatRobotFactory robotFactory) { _localStorage = localStorage; _logger = logger; _robotFactory = robotFactory; } /// /// 尝试从LocalStorage中恢复之前设置的文法 /// /// 恢复文法是否成功 public async Task RestoreGrammar() { _logger.LogDebug("Try to restore grammar text."); string result = await _localStorage.GetItemAsync(GrammarTextKey); if (result == default) { return false; } _logger.LogDebug("Restore grammar text successfully."); _robotFactory.SetGrammar(result); return true; } /// /// 保存当前设置使用的文法 /// public async Task StoreGrammar() { if (!string.IsNullOrEmpty(_robotFactory.GrammarText)) { _logger.LogDebug("Store current grammar text."); await _localStorage.SetItemAsync(GrammarTextKey, _robotFactory.GrammarText); } } /// /// 清除当前设置的文法 /// public async Task RemoveGrammar() { await _localStorage.RemoveItemAsync(GrammarTextKey); } }