using System; using System.Collections.Generic; using TweetDck.Plugins.Events; namespace TweetDck.Plugins{ [Serializable] sealed class PluginConfig{ [field:NonSerialized] public event EventHandler<PluginChangedStateEventArgs> InternalPluginChangedState; // should only be accessed from PluginManager public IEnumerable<string> DisabledPlugins => Disabled; public bool AnyDisabled => Disabled.Count > 0; private readonly HashSet<string> Disabled = new HashSet<string>(); public void SetEnabled(Plugin plugin, bool enabled){ if ((enabled && Disabled.Remove(plugin.Identifier)) || (!enabled && Disabled.Add(plugin.Identifier))){ InternalPluginChangedState?.Invoke(this, new PluginChangedStateEventArgs(plugin, enabled)); } } public bool IsEnabled(Plugin plugin){ return !Disabled.Contains(plugin.Identifier) && plugin.CanRun; } public void DisableOfficialFromConfig(string pluginName){ Disabled.Add("official/"+pluginName); } } }