Files

77 lines
2.5 KiB
C#
Raw Permalink Normal View History

using System.Collections.ObjectModel;
using System.Linq;
using CommunityToolkit.Mvvm.Messaging;
using Microsoft.UI.Xaml.Media.Animation;
using Microsoft.UI.Xaml.Navigation;
using Wino.Core.Domain.Enums;
2026-03-08 13:21:42 +01:00
using Wino.Helpers;
using Wino.Mail.ViewModels.Data;
using Wino.Mail.WinUI.Views.Abstract;
using Wino.Messaging.Client.Navigation;
namespace Wino.Views;
public sealed partial class WelcomeHostPage : WelcomeHostPageAbstract,
IRecipient<BreadcrumbNavigationRequested>,
IRecipient<BackBreadcrumNavigationRequested>
{
public ObservableCollection<BreadcrumbNavigationItemViewModel> PageHistory { get; set; } = [];
public WelcomeHostPage()
{
InitializeComponent();
}
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
2026-04-05 13:18:50 +02:00
ResetWizard();
}
2026-04-05 13:18:50 +02:00
protected override void RegisterRecipients()
{
base.RegisterRecipients();
WeakReferenceMessenger.Default.Register<BreadcrumbNavigationRequested>(this);
WeakReferenceMessenger.Default.Register<BackBreadcrumNavigationRequested>(this);
}
2026-04-05 13:18:50 +02:00
protected override void UnregisterRecipients()
{
2026-04-05 13:18:50 +02:00
base.UnregisterRecipients();
WeakReferenceMessenger.Default.Unregister<BreadcrumbNavigationRequested>(this);
WeakReferenceMessenger.Default.Unregister<BackBreadcrumNavigationRequested>(this);
}
public void Receive(BreadcrumbNavigationRequested message)
{
2026-03-08 13:21:42 +01:00
BreadcrumbNavigationHelper.Navigate(WizardFrame, PageHistory, message, ViewModel.NavigationService.GetPageType);
}
public void Receive(BackBreadcrumNavigationRequested message)
{
GoBackFrame();
}
public void ResetWizard()
{
PageHistory.Clear();
WizardFrame.BackStack.Clear();
WizardFrame.ForwardStack.Clear();
// Navigate to the welcome/get-started page without adding it to the wizard breadcrumb.
// Breadcrumb steps only start after the user clicks "Get Started".
var welcomePageType = ViewModel.NavigationService.GetPageType(WinoPage.WelcomePageV2);
WizardFrame.Navigate(welcomePageType, null, new SuppressNavigationTransitionInfo());
}
private void GoBackFrame()
{
2026-03-08 13:21:42 +01:00
BreadcrumbNavigationHelper.GoBack(WizardFrame, PageHistory, NavigationTransitionEffect.FromLeft);
}
private void BreadItemClicked(Microsoft.UI.Xaml.Controls.BreadcrumbBar sender, Microsoft.UI.Xaml.Controls.BreadcrumbBarItemClickedEventArgs args)
{
2026-03-08 13:21:42 +01:00
BreadcrumbNavigationHelper.NavigateTo(WizardFrame, PageHistory, args.Index);
}
}