Skip to content

Commit

Permalink
Merge pull request MoneyFox#3205 from NPadrutt/handle-back-navigation
Browse files Browse the repository at this point in the history
Handle back navigation
  • Loading branch information
NPadrutt committed Jan 24, 2024
2 parents e9ce180 + 7ce0bbd commit 2ec0705
Show file tree
Hide file tree
Showing 4 changed files with 17 additions and 7 deletions.
3 changes: 3 additions & 0 deletions Src/MoneyFox.Ui/App.xaml.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ namespace MoneyFox.Ui;
using Domain.Exceptions;
using MediatR;
using Messages;
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
using Serilog;
using Views.Setup;

Expand Down Expand Up @@ -60,6 +62,7 @@ protected override void OnStart()

protected override void OnResume()
{
(MainPage as DefaultNavigationPage)!.On<iOS>().SetHideNavigationBarSeparator(true);
StartupTasksAsync().ConfigureAwait(false);
}

Expand Down
9 changes: 2 additions & 7 deletions Src/MoneyFox.Ui/Common/Navigation/NavigationService.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,19 +4,14 @@ namespace MoneyFox.Ui.Common.Navigation;
using JetBrains.Annotations;

[UsedImplicitly]
internal sealed class NavigationService(IViewLocator locator, IAptabaseClient aptabaseClient) : INavigationService
internal sealed class NavigationService(Lazy<NavigationPage> lazyNavigation, IViewLocator locator, IAptabaseClient aptabaseClient) : INavigationService
{
private NavigationPage NavigationPage => (NavigationPage)Application.Current!.MainPage!;
private NavigationPage NavigationPage => lazyNavigation.Value;
private INavigation Navigation => NavigationPage.Navigation;

public async Task GoBack(object? parameter = null)
{
await NavigationPage.PopAsync();
var view = Navigation.NavigationStack.LastOrDefault();
if (view?.BindingContext is NavigableViewModel navigableViewModel)
{
await navigableViewModel.OnNavigatedBackAsync(parameter);
}
}

public async Task NavigateFromMenuToAsync<TViewModel>() where TViewModel : NavigableViewModel
Expand Down
11 changes: 11 additions & 0 deletions Src/MoneyFox.Ui/DefaultNavigationPage.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
namespace MoneyFox.Ui;

using Common.Navigation;
using Microsoft.Maui.Controls.PlatformConfiguration;
using Microsoft.Maui.Controls.PlatformConfiguration.iOSSpecific;
using Application = Application;
Expand All @@ -12,6 +13,16 @@ public DefaultNavigationPage(Page root) : base(root)
{
SetBarColors();
Application.Current!.RequestedThemeChanged += (_, _) => { SetBarColors(); };
On<iOS>().SetHideNavigationBarSeparator(true);

Popped += (sender, _) =>
{
var view = (sender as NavigationPage)!.Navigation.NavigationStack.LastOrDefault();
if (view?.BindingContext is NavigableViewModel navigableViewModel)
{
navigableViewModel.OnNavigatedBackAsync(null);
}
};
}

private void SetBarColors()
Expand Down
1 change: 1 addition & 0 deletions Src/MoneyFox.Ui/InversionOfControl/MoneyFoxConfig.cs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public sealed class MoneyFoxConfig
{
public void Register(IServiceCollection serviceCollection)
{
serviceCollection.AddSingleton(new Lazy<NavigationPage>(() => (NavigationPage)Application.Current!.MainPage!));
serviceCollection.AddSingleton<IViewLocator>(sp => new ViewLocator(sp));
RegisterServices(serviceCollection);
RegisterSetup(serviceCollection);
Expand Down

0 comments on commit 2ec0705

Please sign in to comment.