~ruther/NosSmooth.Local

e8f6d4e60019784899702a772a89f7de133f923c — Rutherther 2 years ago fc645ba
feat(hooks): make a dictionary instead of a list in hook manager
1 files changed, 5 insertions(+), 7 deletions(-)

M src/Core/NosSmooth.LocalBinding/Hooks/Implementations/HookManager.cs
M src/Core/NosSmooth.LocalBinding/Hooks/Implementations/HookManager.cs => src/Core/NosSmooth.LocalBinding/Hooks/Implementations/HookManager.cs +5 -7
@@ 15,7 15,7 @@ namespace NosSmooth.LocalBinding.Hooks.Implementations;
internal class HookManager : IHookManager
{
    private readonly HookManagerOptions _options;
    private List<INostaleHook> _hooks;
    private Dictionary<string, INostaleHook> _hooks;

    /// <summary>
    /// Initializes a new instance of the <see cref="HookManager"/> class.


@@ 24,7 24,7 @@ internal class HookManager : IHookManager
    public HookManager(IOptions<HookManagerOptions> options)
    {
        _options = options.Value;
        _hooks = new List<INostaleHook>();
        _hooks = new Dictionary<string, INostaleHook>();
    }

    /// <inheritdoc/>


@@ 52,7 52,7 @@ internal class HookManager : IHookManager
    public IPeriodicHook Periodic => GetHook<IPeriodicHook>(IHookManager.PeriodicName);

    /// <inheritdoc/>
    public IReadOnlyList<INostaleHook> Hooks => _hooks.AsReadOnly();
    public IReadOnlyList<INostaleHook> Hooks => _hooks.Values.ToList();

    /// <inheritdoc/>
    public IResult Initialize(NosBindingManager bindingManager, NosBrowserManager browserManager)


@@ 91,7 91,7 @@ internal class HookManager : IHookManager
                var result = func();
                if (result.IsSuccess)
                {
                    _hooks.Add(result.Entity);
                    _hooks.Add(result.Entity.Name, result.Entity);
                }
                else
                {


@@ 154,9 154,7 @@ internal class HookManager : IHookManager
    private T GetHook<T>(string name)
        where T : INostaleHook
    {
        var hook = _hooks.FirstOrDefault(x => x.Name == name);

        if (hook is null || hook is not T typed)
        if (!_hooks.ContainsKey(name) || _hooks[name] is not T typed)
        {
            throw new InvalidOperationException
                ($"Could not load hook {name}. Did you forget to call IHookManager.Initialize?");

Do not follow this link