diff --git a/e2e/Maui/PrismMauiDemo/MauiProgram.cs b/e2e/Maui/PrismMauiDemo/MauiProgram.cs index aec437baf2..ca013122a2 100644 --- a/e2e/Maui/PrismMauiDemo/MauiProgram.cs +++ b/e2e/Maui/PrismMauiDemo/MauiProgram.cs @@ -38,7 +38,7 @@ public static MauiApp CreateMauiApp() if (status == "Failed" && !string.IsNullOrEmpty(x.Result?.Exception?.Message)) Console.Error.WriteLine(x.Result.Exception.Message); })) - //.OnAppStart(nav => nav.CreateBuilder() + //.CreateWindow(nav => nav.CreateBuilder() // .AddTabbedSegment(page => // page.CreateTab("ViewC") // .CreateTab(t => @@ -49,8 +49,8 @@ public static MauiApp CreateMauiApp() // .SelectedTab("NavigationPage|ViewB")) // .AddParameter("message_global", "This is a Global Message") // .Navigate()) - //.OnAppStart("ViewA/ViewB/ViewC") - .OnAppStart(navigationService => navigationService.CreateBuilder() + //.CreateWindow("ViewA/ViewB/ViewC") + .CreateWindow(navigationService => navigationService.CreateBuilder() .AddSegment() .NavigateAsync(HandleNavigationError)) ) diff --git a/src/Maui/Prism.Maui/PrismAppBuilder.cs b/src/Maui/Prism.Maui/PrismAppBuilder.cs index ccf6eab6f6..4617eea9bd 100644 --- a/src/Maui/Prism.Maui/PrismAppBuilder.cs +++ b/src/Maui/Prism.Maui/PrismAppBuilder.cs @@ -194,7 +194,7 @@ internal void OnAppStarted() /// /// The Navigation Delegate. /// The . - public PrismAppBuilder OnAppStart(Func onAppStarted) + public PrismAppBuilder CreateWindow(Func onAppStarted) { _onAppStarted = onAppStarted; return this; diff --git a/src/Maui/Prism.Maui/PrismAppBuilderExtensions.cs b/src/Maui/Prism.Maui/PrismAppBuilderExtensions.cs index 10133f9f8e..edaa5be09e 100644 --- a/src/Maui/Prism.Maui/PrismAppBuilderExtensions.cs +++ b/src/Maui/Prism.Maui/PrismAppBuilderExtensions.cs @@ -2,6 +2,7 @@ using Prism.Modularity; using Prism.Mvvm; using Prism.Navigation; +using Prism.Navigation.Builder; namespace Prism; @@ -44,22 +45,28 @@ public static PrismAppBuilder ConfigureModuleCatalog(this PrismAppBuilder builde }); } - public static PrismAppBuilder OnAppStart(this PrismAppBuilder builder, string uri) => - builder.OnAppStart(navigation => navigation.NavigateAsync(uri)); + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, string uri) => + builder.CreateWindow(navigation => navigation.NavigateAsync(uri)); - public static PrismAppBuilder OnAppStart(this PrismAppBuilder builder, string uri, Action onError) => - builder.OnAppStart(async navigation => + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, string uri, Action onError) => + builder.CreateWindow(async navigation => { var result = await navigation.NavigateAsync(uri); if (result.Exception is not null) onError(result.Exception); }); - public static PrismAppBuilder OnAppStart(this PrismAppBuilder builder, Func onAppStarted) => - builder.OnAppStart((c, n) => onAppStarted(c, n)); + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func CreateWindowed) => + builder.CreateWindow((c, n) => CreateWindowed(c, n)); - public static PrismAppBuilder OnAppStart(this PrismAppBuilder builder, Func onAppStarted) => - builder.OnAppStart((_, n) => onAppStarted(n)); + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func CreateWindowed) => + builder.CreateWindow((_, n) => CreateWindowed(n)); + + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func CreateWindowed) => + builder.CreateWindow(n => CreateWindowed(n).NavigateAsync()); + + public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func CreateWindowed) => + builder.CreateWindow((c, n) => CreateWindowed(c, n).NavigateAsync()); public static PrismAppBuilder ConfigureServices(this PrismAppBuilder builder, Action configureServices) { diff --git a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Behaviors/NavigationBehaviors.cs b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Behaviors/NavigationBehaviors.cs index 9c222ef157..fab3136032 100644 --- a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Behaviors/NavigationBehaviors.cs +++ b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Behaviors/NavigationBehaviors.cs @@ -100,7 +100,7 @@ private Page GetTabChild(TabbedPage tabbed, int index) private Page StartAndGetRootPage(Action initialNav) { - var mauiApp = CreateBuilder(prism => prism.OnAppStart((_, nav) => + var mauiApp = CreateBuilder(prism => prism.CreateWindow((_, nav) => { var navBuilder = nav.CreateBuilder(); initialNav(navBuilder); @@ -117,7 +117,7 @@ private Page StartAndGetRootPage(Action initialNav) private Page StartAndGetRootPage(string uri) { - var mauiApp = CreateBuilder(prism => prism.OnAppStart(uri)) + var mauiApp = CreateBuilder(prism => prism.CreateWindow(uri)) .Build(); var window = GetWindow(mauiApp); diff --git a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/DynamicTabbedPageNavigationFixture.cs b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/DynamicTabbedPageNavigationFixture.cs index b6a65a1827..934cc23fcc 100644 --- a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/DynamicTabbedPageNavigationFixture.cs +++ b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/DynamicTabbedPageNavigationFixture.cs @@ -13,7 +13,7 @@ public DynamicTabbedPageNavigationFixture(ITestOutputHelper testOutputHelper) [Fact] public void CreatesTabs_WithSingleContentPage() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart(navigation => + var mauiApp = CreateBuilder(prism => prism.CreateWindow(navigation => navigation.CreateBuilder() .AddTabbedSegment(t => t.CreateTab("MockViewA") @@ -33,7 +33,7 @@ public void CreatesTabs_WithSingleContentPage() [Fact] public void CreatesTabs_WithNavigationPageAndContentPage() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart(navigation => + var mauiApp = CreateBuilder(prism => prism.CreateWindow(navigation => navigation.CreateBuilder() .AddTabbedSegment(t => t.CreateTab(ct => ct.AddNavigationPage().AddSegment("MockViewA")) @@ -53,4 +53,4 @@ public void CreatesTabs_WithNavigationPageAndContentPage() Assert.Same(tabbedPage.Children[0], tabbedPage.CurrentPage); } -} \ No newline at end of file +} diff --git a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/NavigationTests.cs b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/NavigationTests.cs index 4b56e92415..4bbac5882b 100644 --- a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/NavigationTests.cs +++ b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Navigation/NavigationTests.cs @@ -19,7 +19,7 @@ public NavigationTests(ITestOutputHelper testOutputHelper) [InlineData("MockHome/NavigationPage/MockViewA")] public void PagesInjectScopedInstanceOfIPageAccessor(string uri) { - var mauiApp = CreateBuilder(prism => prism.OnAppStart(uri)) + var mauiApp = CreateBuilder(prism => prism.CreateWindow(uri)) .Build(); var window = GetWindow(mauiApp); @@ -42,7 +42,7 @@ public void PagesInjectScopedInstanceOfIPageAccessor(string uri) [Fact] public async Task AddsPageFromRelativeURI() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("NavigationPage/MockViewA")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("NavigationPage/MockViewA")) .Build(); var window = GetWindow(mauiApp); @@ -64,7 +64,7 @@ public async Task AddsPageFromRelativeURI() [Fact] public async Task RelativeNavigation_RemovesPage_AndNavigates() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("NavigationPage/MockViewA/MockViewB")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("NavigationPage/MockViewA/MockViewB")) .Build(); var window = GetWindow(mauiApp); @@ -86,7 +86,7 @@ public async Task RelativeNavigation_RemovesPage_AndNavigates() [Fact] public async Task AbsoluteNavigation_ResetsWindowPage() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("MockViewA")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("MockViewA")) .Build(); var window = GetWindow(mauiApp); @@ -102,7 +102,7 @@ public async Task AbsoluteNavigation_ResetsWindowPage() [Fact] public async Task AddsModalPageFromRelativeURI() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("MockViewA")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("MockViewA")) .Build(); var window = GetWindow(mauiApp); @@ -121,7 +121,7 @@ public async Task AddsModalPageFromRelativeURI() [Fact] public async Task FlyoutRelativeNavigation_RemovesPage_AndNavigatesNotModally() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("MockHome/NavigationPage/MockViewA")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("MockHome/NavigationPage/MockViewA")) .Build(); var window = GetWindow(mauiApp); @@ -153,7 +153,7 @@ public async Task FlyoutRelativeNavigation_RemovesPage_AndNavigatesNotModally() public async Task RelativeNavigation_RemovesPage_AndNavigatesModally() { Exception startupEx = null; - var mauiApp = CreateBuilder(prism => prism.OnAppStart("MockViewA/MockViewB", ex => + var mauiApp = CreateBuilder(prism => prism.CreateWindow("MockViewA/MockViewB", ex => { startupEx = ex; })) @@ -179,7 +179,7 @@ public async Task RelativeNavigation_RemovesPage_AndNavigatesModally() [Fact] public async Task GoBackTo_Name_PopsToSpecifiedView() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("NavigationPage/MockViewA/MockViewB/MockViewC/MockViewD/MockViewE")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("NavigationPage/MockViewA/MockViewB/MockViewC/MockViewD/MockViewE")) .Build(); var window = GetWindow(mauiApp); @@ -201,7 +201,7 @@ public async Task GoBackTo_Name_PopsToSpecifiedView() [Fact] public async Task GoBackTo_ViewModel_PopsToSpecifiedView() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("NavigationPage/MockViewA/MockViewB/MockViewC/MockViewD/MockViewE")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("NavigationPage/MockViewA/MockViewB/MockViewC/MockViewD/MockViewE")) .Build(); var window = GetWindow(mauiApp); @@ -224,7 +224,7 @@ public async Task GoBackTo_ViewModel_PopsToSpecifiedView() [Fact] public async Task GoBack_Issue2232() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("NavigationPage/MockViewA")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("NavigationPage/MockViewA")) .Build(); var window = GetWindow(mauiApp); @@ -251,7 +251,7 @@ public async Task GoBack_Issue2232() [Fact] public async Task TabbedPageSelectTabSetsCurrentTab() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("TabbedPage?createTab=MockViewA&createTab=MockViewB&selectedTab=MockViewB")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("TabbedPage?createTab=MockViewA&createTab=MockViewB&selectedTab=MockViewB")) .Build(); var window = GetWindow(mauiApp); @@ -264,7 +264,7 @@ public async Task TabbedPageSelectTabSetsCurrentTab() [Fact] public async Task TabbedPageSelectTabSetsCurrentTabWithNavigationPageTab() { - var mauiApp = CreateBuilder(prism => prism.OnAppStart("TabbedPage?createTab=NavigationPage%2FMockViewA&createTab=NavigationPage%2FMockViewB&selectedTab=NavigationPage|MockViewB")) + var mauiApp = CreateBuilder(prism => prism.CreateWindow("TabbedPage?createTab=NavigationPage%2FMockViewA&createTab=NavigationPage%2FMockViewB&selectedTab=NavigationPage|MockViewB")) .Build(); var window = GetWindow(mauiApp); diff --git a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Regions/RegionFixture.cs b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Regions/RegionFixture.cs index e9da8315a8..f2fbea3d8a 100644 --- a/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Regions/RegionFixture.cs +++ b/tests/Maui/Prism.DryIoc.Maui.Tests/Fixtures/Regions/RegionFixture.cs @@ -18,7 +18,7 @@ public void ContentRegion_CreatedBy_RequestNavigate() { container.RegisterForNavigation(); container.RegisterForRegionNavigation(); - }).OnAppStart(nav => nav.NavigateAsync("MockContentRegionPage"))).Build(); + }).CreateWindow(nav => nav.NavigateAsync("MockContentRegionPage"))).Build(); var window = GetWindow(mauiApp); Assert.IsType(window.Page); @@ -42,7 +42,7 @@ public void FrameRegion_CreatedBy_RegisterViewWithRegion() var regionManager = container.Resolve(); regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA"); }) - .OnAppStart("MockContentRegionPage")) + .CreateWindow("MockContentRegionPage")) .Build(); var window = GetWindow(mauiApp); @@ -67,7 +67,7 @@ public void RegionsShareContainer_WithPage() var regionManager = container.Resolve(); regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA"); }) - .OnAppStart("MockContentRegionPage")) + .CreateWindow("MockContentRegionPage")) .Build(); var window = GetWindow(mauiApp); @@ -93,7 +93,7 @@ public void RegionViewModel_HasPageAccessor_WithCorrectPage() container.RegisterForNavigation(); container.RegisterForRegionNavigation(); }) - .OnAppStart("MockContentRegionPage")) + .CreateWindow("MockContentRegionPage")) .Build(); var window = GetWindow(mauiApp); @@ -117,7 +117,7 @@ public void RegionManager_HasTwoRegions() { container.RegisterForNavigation(); }) - .OnAppStart("MockContentRegionPage")) + .CreateWindow("MockContentRegionPage")) .Build(); var window = GetWindow(mauiApp); @@ -139,7 +139,7 @@ public void PageHas_2_ChildViews() var regionManager = container.Resolve(); regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA"); }) - .OnAppStart("MockContentRegionPage")) + .CreateWindow("MockContentRegionPage")) .Build(); var window = GetWindow(mauiApp); @@ -161,7 +161,7 @@ public void RegionWithDefaultView_IsAutoPopulated() container.RegisterForNavigation("MainPage"); container.RegisterForRegionNavigation(); }) - .OnAppStart("MainPage", ex => Assert.Null(ex))) + .CreateWindow("MainPage", ex => Assert.Null(ex))) .Build(); var window = GetWindow(mauiApp);