using Microsoft.Extensions.DependencyInjection; namespace Toolkit.Foundation; public class NavigateHandler(NamedComponent scope, IComponentScopeProvider componentScopeProvider, IServiceProvider provider) : INotificationHandler { public async Task Handle(NavigateEventArgs args, CancellationToken cancellationToken) { INavigationScope? navigationScope; if (args.Scope == "self") { navigationScope = provider.GetRequiredService(); } else { ComponentScopeDescriptor? descriptor = componentScopeProvider.Get(args.Scope ?? scope.Name); navigationScope = descriptor?.Services?.GetRequiredService(); } if (navigationScope is not null) { await navigationScope.NavigateAsync(args.Route, args.Sender, args.Context, args.Navigated, args.Parameters, cancellationToken); } } }