master
cs 56 lines 1.62 KB
Raw
1 // Copyright (C) Microsoft Corporation. All rights reserved.
2
3 using Microsoft.UI.Xaml;
4 using WslSettings.Activation;
5 using WslSettings.Contracts.Services;
6
7 namespace WslSettings.Services;
8
9 public class ActivationService : IActivationService
10 {
11 private readonly ActivationHandler<LaunchActivatedEventArgs> _defaultHandler;
12 private readonly IEnumerable<IActivationHandler> _activationHandlers;
13
14 public ActivationService(ActivationHandler<LaunchActivatedEventArgs> defaultHandler, IEnumerable<IActivationHandler> activationHandlers)
15 {
16 _defaultHandler = defaultHandler;
17 _activationHandlers = activationHandlers;
18 }
19
20 public async Task ActivateAsync(object activationArgs)
21 {
22 // Execute tasks before activation.
23 await InitializeAsync();
24
25 // Handle activation via ActivationHandlers.
26 await HandleActivationAsync(activationArgs);
27
28 // Execute tasks after activation.
29 await StartupAsync();
30 }
31
32 private async Task HandleActivationAsync(object activationArgs)
33 {
34 var activationHandler = _activationHandlers.FirstOrDefault(h => h.CanHandle(activationArgs));
35
36 if (activationHandler != null)
37 {
38 await activationHandler.HandleAsync(activationArgs);
39 }
40
41 if (_defaultHandler.CanHandle(activationArgs))
42 {
43 await _defaultHandler.HandleAsync(activationArgs);
44 }
45 }
46
47 private async Task InitializeAsync()
48 {
49 await Task.CompletedTask;
50 }
51
52 private async Task StartupAsync()
53 {
54 await Task.CompletedTask;
55 }
56 }