Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions e2e/Maui/PrismMauiDemo/MauiProgram.cs
Original file line number Diff line number Diff line change
Expand Up @@ -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 =>
Expand All @@ -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<SplashPageViewModel>()
.NavigateAsync(HandleNavigationError))
)
Expand Down
2 changes: 1 addition & 1 deletion src/Maui/Prism.Maui/PrismAppBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -194,7 +194,7 @@ internal void OnAppStarted()
/// </summary>
/// <param name="onAppStarted">The Navigation Delegate.</param>
/// <returns>The <see cref="PrismAppBuilder"/>.</returns>
public PrismAppBuilder OnAppStart(Func<IContainerProvider, INavigationService, Task> onAppStarted)
public PrismAppBuilder CreateWindow(Func<IContainerProvider, INavigationService, Task> onAppStarted)
{
_onAppStarted = onAppStarted;
return this;
Expand Down
23 changes: 15 additions & 8 deletions src/Maui/Prism.Maui/PrismAppBuilderExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
using Prism.Modularity;
using Prism.Mvvm;
using Prism.Navigation;
using Prism.Navigation.Builder;

namespace Prism;

Expand Down Expand Up @@ -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<Exception> onError) =>
builder.OnAppStart(async navigation =>
public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, string uri, Action<Exception> 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<IContainerProvider, INavigationService, Task> onAppStarted) =>
builder.OnAppStart((c, n) => onAppStarted(c, n));
public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func<IContainerProvider, INavigationService, Task> CreateWindowed) =>
builder.CreateWindow((c, n) => CreateWindowed(c, n));

public static PrismAppBuilder OnAppStart(this PrismAppBuilder builder, Func<INavigationService, Task> onAppStarted) =>
builder.OnAppStart((_, n) => onAppStarted(n));
public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func<INavigationService, Task> CreateWindowed) =>
builder.CreateWindow((_, n) => CreateWindowed(n));

public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func<INavigationService, INavigationBuilder> CreateWindowed) =>
builder.CreateWindow(n => CreateWindowed(n).NavigateAsync());

public static PrismAppBuilder CreateWindow(this PrismAppBuilder builder, Func<IContainerProvider, INavigationService, INavigationBuilder> CreateWindowed) =>
builder.CreateWindow((c, n) => CreateWindowed(c, n).NavigateAsync());

public static PrismAppBuilder ConfigureServices(this PrismAppBuilder builder, Action<IServiceCollection> configureServices)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ private Page GetTabChild(TabbedPage tabbed, int index)

private Page StartAndGetRootPage(Action<INavigationBuilder> initialNav)
{
var mauiApp = CreateBuilder(prism => prism.OnAppStart((_, nav) =>
var mauiApp = CreateBuilder(prism => prism.CreateWindow((_, nav) =>
{
var navBuilder = nav.CreateBuilder();
initialNav(navBuilder);
Expand All @@ -117,7 +117,7 @@ private Page StartAndGetRootPage(Action<INavigationBuilder> 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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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"))
Expand All @@ -53,4 +53,4 @@ public void CreatesTabs_WithNavigationPageAndContentPage()

Assert.Same(tabbedPage.Children[0], tabbedPage.CurrentPage);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand Down Expand Up @@ -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;
}))
Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand All @@ -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);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public void ContentRegion_CreatedBy_RequestNavigate()
{
container.RegisterForNavigation<MockContentRegionPage, MockContentRegionPageViewModel>();
container.RegisterForRegionNavigation<MockRegionViewA, MockRegionViewAViewModel>();
}).OnAppStart(nav => nav.NavigateAsync("MockContentRegionPage"))).Build();
}).CreateWindow(nav => nav.NavigateAsync("MockContentRegionPage"))).Build();
var window = GetWindow(mauiApp);

Assert.IsType<MockContentRegionPage>(window.Page);
Expand All @@ -42,7 +42,7 @@ public void FrameRegion_CreatedBy_RegisterViewWithRegion()
var regionManager = container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA");
})
.OnAppStart("MockContentRegionPage"))
.CreateWindow("MockContentRegionPage"))
.Build();
var window = GetWindow(mauiApp);

Expand All @@ -67,7 +67,7 @@ public void RegionsShareContainer_WithPage()
var regionManager = container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA");
})
.OnAppStart("MockContentRegionPage"))
.CreateWindow("MockContentRegionPage"))
.Build();
var window = GetWindow(mauiApp);

Expand All @@ -93,7 +93,7 @@ public void RegionViewModel_HasPageAccessor_WithCorrectPage()
container.RegisterForNavigation<MockContentRegionPage, MockContentRegionPageViewModel>();
container.RegisterForRegionNavigation<MockRegionViewA, MockRegionViewAViewModel>();
})
.OnAppStart("MockContentRegionPage"))
.CreateWindow("MockContentRegionPage"))
.Build();
var window = GetWindow(mauiApp);

Expand All @@ -117,7 +117,7 @@ public void RegionManager_HasTwoRegions()
{
container.RegisterForNavigation<MockContentRegionPage, MockContentRegionPageViewModel>();
})
.OnAppStart("MockContentRegionPage"))
.CreateWindow("MockContentRegionPage"))
.Build();
var window = GetWindow(mauiApp);

Expand All @@ -139,7 +139,7 @@ public void PageHas_2_ChildViews()
var regionManager = container.Resolve<IRegionManager>();
regionManager.RegisterViewWithRegion("FrameRegion", "MockRegionViewA");
})
.OnAppStart("MockContentRegionPage"))
.CreateWindow("MockContentRegionPage"))
.Build();
var window = GetWindow(mauiApp);

Expand All @@ -161,7 +161,7 @@ public void RegionWithDefaultView_IsAutoPopulated()
container.RegisterForNavigation<MockPageWithRegionAndDefaultView>("MainPage");
container.RegisterForRegionNavigation<MockRegionViewA, MockRegionViewAViewModel>();
})
.OnAppStart("MainPage", ex => Assert.Null(ex)))
.CreateWindow("MainPage", ex => Assert.Null(ex)))
.Build();
var window = GetWindow(mauiApp);

Expand Down