using System; using System.ComponentModel; using System.Threading.Tasks; using LANCommander.Launcher.ViewModels; namespace LANCommander.Launcher.Services; public interface INavigationService : INotifyPropertyChanged { ViewModelBase? CurrentView { get; } bool CanGoBack { get; } bool IsNavigating { get; } /// /// Navigate to a view model. If is true the history /// stack is emptied first (use for root navigations like Library/Depot toggle). /// An optional callback runs while /// is true, driving the loading indicator. /// void NavigateTo(ViewModelBase viewModel, bool clearHistory = false, Func? initializeAsync = null); /// Pop the history stack and return to the previous view. No-op if the stack is empty. void GoBack(); /// /// Replace the current view without pushing to history. /// Useful for in-place refreshes (e.g. re-initializing DepotBrowse with new filters). /// void ReplaceCurrent(ViewModelBase viewModel); }