11using System ;
22using System . Collections . Generic ;
3+ using System . ComponentModel ;
34using System . ComponentModel . Composition ;
45using System . ComponentModel . Composition . Hosting ;
56using System . ComponentModel . Composition . Primitives ;
67using System . Diagnostics ;
78using System . Linq ;
8- using System . Linq . Expressions ;
99using System . Reflection ;
1010using GitHub . Api ;
1111using GitHub . Factories ;
12- using GitHub . Models ;
1312using GitHub . Services ;
13+ using GitHub . Settings ;
1414using GitHub . VisualStudio . Settings ;
1515using GitHub . VisualStudio . Views ;
1616using GitHub . VisualStudio . Views . Dialog . Clone ;
1717using Microsoft . VisualStudio . Shell ;
18+ using Microsoft . VisualStudio . Threading ;
1819using Rothko ;
19- using Task = System . Threading . Tasks . Task ;
2020
2121namespace GitHub . VisualStudio
2222{
@@ -28,8 +28,7 @@ public CompositionContainer CreateVisualStudioCompositionContainer(ExportProvide
2828
2929 var gitHubServiceProvider = compositionContainer . GetExportedValue < IGitHubServiceProvider > ( ) ;
3030 var packageSettings = new PackageSettings ( gitHubServiceProvider ) ;
31- var usageService = compositionContainer . GetExportedValue < IUsageService > ( ) ;
32- var usageTracker = new UsageTracker ( gitHubServiceProvider , usageService , packageSettings ) ;
31+ var usageTracker = CreateUsageTracker ( compositionContainer , packageSettings ) ;
3332 compositionContainer . ComposeExportedValue < IUsageTracker > ( usageTracker ) ;
3433
3534 return compositionContainer ;
@@ -39,17 +38,33 @@ public CompositionContainer CreateOutOfProcCompositionContainer()
3938 {
4039 var compositionContainer = CreateCompositionContainer ( CreateOutOfProcExports ( ) ) ;
4140
42- var usageTracker = new OutOfProcUsageTracker ( ) ;
41+ var packageSettings = new OutOfProcPackageSettings ( ) ;
42+ var usageTracker = CreateUsageTracker ( compositionContainer , packageSettings ) ;
4343 compositionContainer . ComposeExportedValue < IUsageTracker > ( usageTracker ) ;
4444
4545 return compositionContainer ;
4646 }
4747
48+ static UsageTracker CreateUsageTracker ( CompositionContainer compositionContainer , IPackageSettings packageSettings )
49+ {
50+ var gitHubServiceProvider = compositionContainer . GetExportedValue < IGitHubServiceProvider > ( ) ;
51+ var usageService = compositionContainer . GetExportedValue < IUsageService > ( ) ;
52+ var joinableTaskContext = compositionContainer . GetExportedValue < JoinableTaskContext > ( ) ;
53+ return new UsageTracker ( gitHubServiceProvider , usageService , packageSettings , joinableTaskContext ) ;
54+ }
55+
4856 static CompositionContainer CreateOutOfProcExports ( )
4957 {
5058 var container = new CompositionContainer ( ) ;
59+
5160 var serviceProvider = new OutOfProcSVsServiceProvider ( ) ;
5261 container . ComposeExportedValue < SVsServiceProvider > ( serviceProvider ) ;
62+
63+ #pragma warning disable VSSDK005 // Avoid instantiating JoinableTaskContext
64+ var joinableTaskContext = new JoinableTaskContext ( ) ;
65+ #pragma warning restore VSSDK005 // Avoid instantiating JoinableTaskContext
66+ container . ComposeExportedValue ( joinableTaskContext ) ;
67+
5368 return container ;
5469 }
5570
@@ -214,12 +229,19 @@ public object TryGetService(string typeName)
214229 public ExportProvider ExportProvider { get ; }
215230 }
216231
217- public class OutOfProcUsageTracker : IUsageTracker
232+ public class OutOfProcPackageSettings : IPackageSettings
218233 {
219- public Task IncrementCounter ( Expression < Func < UsageModel . MeasuresModel , int > > counter )
234+ public bool CollectMetrics { get ; set ; } = true ;
235+ public bool EnableTraceLogging { get ; set ; } = true ;
236+ public bool EditorComments { get => throw new NotImplementedException ( ) ; set => throw new NotImplementedException ( ) ; }
237+ public UIState UIState { get => throw new NotImplementedException ( ) ; set => throw new NotImplementedException ( ) ; }
238+ public bool HideTeamExplorerWelcomeMessage { get => throw new NotImplementedException ( ) ; set => throw new NotImplementedException ( ) ; }
239+
240+ public event PropertyChangedEventHandler PropertyChanged ;
241+
242+ public void Save ( )
220243 {
221- Trace . WriteLine ( $ "IncrementCounter { counter } ") ;
222- return Task . CompletedTask ;
244+ throw new NotImplementedException ( ) ;
223245 }
224246 }
225247
0 commit comments