AuthorBuddy/Services/PluginManager.cs

39 lines
1.2 KiB
C#
Raw Normal View History

2026-08-30 08:11:01 +02:00
using AuthorBuddy.Web.Models;
namespace AuthorBuddy.Web.Services;
public class PluginManager : IPluginManager
{
private readonly List<IExportPlugin> _plugins = new();
private readonly ISettingsService _settings;
public PluginManager(ISettingsService settings, IEnumerable<IExportPlugin> plugins)
{
_settings = settings;
_plugins.AddRange(plugins);
}
public void Register(IExportPlugin plugin)
{
if (!_plugins.Any(p => p.Id == plugin.Id))
_plugins.Add(plugin);
}
public IReadOnlyList<IExportPlugin> GetPlugins() => _plugins.AsReadOnly();
public IExportPlugin? GetPlugin(string id) => _plugins.FirstOrDefault(p => p.Id == id);
public async Task<PluginConfig?> GetConfigAsync(string pluginId)
{
var json = await _settings.GetPluginConfigAsync(pluginId);
if (string.IsNullOrEmpty(json)) return null;
return System.Text.Json.JsonSerializer.Deserialize<PluginConfig>(json);
}
public async Task SaveConfigAsync(PluginConfig config)
{
var json = System.Text.Json.JsonSerializer.Serialize(config);
await _settings.SavePluginConfigAsync(config.PluginId, json);
}
}