13 private readonly IServiceProvider _serviceProvider;
17 private readonly IEnumerable<IActivationHandler> _activationHandlers;
19 private bool _isInitialized;
31 _serviceProvider = serviceProvider;
32 _activationHandlers = activationHandlers;
33 _navigationService = navigationService;
34 _themeSelectorService = themeSelectorService;
35 _persistAndRestoreService = persistAndRestoreService;
43 public async Task
StartAsync(CancellationToken cancellationToken)
46 await InitializeAsync();
48 await HandleActivationAsync();
52 _isInitialized =
true;
60 public async Task
StopAsync(CancellationToken cancellationToken)
62 _persistAndRestoreService.PersistData();
63 await Task.CompletedTask;
66 private async Task InitializeAsync()
70 _persistAndRestoreService.RestoreData();
71 _themeSelectorService.InitializeTheme();
72 await Task.CompletedTask;
76 private async Task StartupAsync()
80 await Task.CompletedTask;
84 private async Task HandleActivationAsync()
86 var activationHandler = _activationHandlers.FirstOrDefault(h => h.CanHandle());
88 if (activationHandler !=
null)
90 await activationHandler.HandleAsync();
93 await Task.CompletedTask;
95 if (App.Current.Windows.OfType<IShellWindow>().Count() == 0)
98 _shellWindow = _serviceProvider.GetService(typeof(IShellWindow)) as IShellWindow;
99 _navigationService.Initialize(_shellWindow.GetNavigationFrame());
100 _shellWindow.ShowWindow();
101 _navigationService.NavigateTo<MainViewModel>();
102 await Task.CompletedTask;