Skip to content
This repository was archived by the owner on Jun 21, 2023. It is now read-only.

Commit b99cda3

Browse files
committed
Stop CompositionServices from loading GitHub.Exports
Only load GitHub.Exports when composition container is created.
1 parent e640b8a commit b99cda3

File tree

1 file changed

+32
-26
lines changed

1 file changed

+32
-26
lines changed

src/GitHub.VisualStudio.16/CompositionServices.cs

Lines changed: 32 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ static CompositionContainer CreateVisualStudioCompositionContainer(ExportProvide
5858

5959
var gitHubServiceProvider = compositionContainer.GetExportedValue<IGitHubServiceProvider>();
6060
var packageSettings = new PackageSettings(gitHubServiceProvider);
61-
var usageTracker = CreateUsageTracker(compositionContainer, packageSettings);
62-
compositionContainer.ComposeExportedValue<IUsageTracker>(usageTracker);
61+
var usageTracker = UsageTrackerFactory.CreateUsageTracker(compositionContainer, packageSettings);
62+
compositionContainer.ComposeExportedValue(usageTracker);
6363

6464
return compositionContainer;
6565
}
@@ -69,18 +69,21 @@ static CompositionContainer CreateOutOfProcCompositionContainer()
6969
var compositionContainer = CreateCompositionContainer(CreateOutOfProcExports());
7070

7171
var packageSettings = new OutOfProcPackageSettings();
72-
var usageTracker = CreateUsageTracker(compositionContainer, packageSettings);
73-
compositionContainer.ComposeExportedValue<IUsageTracker>(usageTracker);
72+
var usageTracker = UsageTrackerFactory.CreateUsageTracker(compositionContainer, packageSettings);
73+
compositionContainer.ComposeExportedValue(usageTracker);
7474

7575
return compositionContainer;
7676
}
7777

78-
static UsageTracker CreateUsageTracker(CompositionContainer compositionContainer, IPackageSettings packageSettings)
78+
class UsageTrackerFactory
7979
{
80-
var gitHubServiceProvider = compositionContainer.GetExportedValue<IGitHubServiceProvider>();
81-
var usageService = compositionContainer.GetExportedValue<IUsageService>();
82-
var joinableTaskContext = compositionContainer.GetExportedValue<JoinableTaskContext>();
83-
return new UsageTracker(gitHubServiceProvider, usageService, packageSettings, joinableTaskContext);
80+
internal static IUsageTracker CreateUsageTracker(CompositionContainer compositionContainer, IPackageSettings packageSettings)
81+
{
82+
var gitHubServiceProvider = compositionContainer.GetExportedValue<IGitHubServiceProvider>();
83+
var usageService = compositionContainer.GetExportedValue<IUsageService>();
84+
var joinableTaskContext = compositionContainer.GetExportedValue<JoinableTaskContext>();
85+
return new UsageTracker(gitHubServiceProvider, usageService, packageSettings, joinableTaskContext);
86+
}
8487
}
8588

8689
static CompositionContainer CreateOutOfProcExports()
@@ -117,8 +120,8 @@ static CompositionContainer CreateCompositionContainer(ExportProvider defaultExp
117120
compositionContainer.ComposeExportedValue<IGitHubServiceProvider>(gitHubServiceProvider);
118121
Services.UnitTestServiceProvider = gitHubServiceProvider; // Use gitHubServiceProvider as global provider
119122

120-
var loginManager = CreateLoginManager(compositionContainer);
121-
compositionContainer.ComposeExportedValue<ILoginManager>(loginManager);
123+
var loginManager = LoginManagerFactory.CreateLoginManager(compositionContainer);
124+
compositionContainer.ComposeExportedValue(loginManager);
122125

123126
// Ensure GitHub.Resources.dll has been loaded and it visible to XAML
124127
EnsureLoaded(typeof(GitHub.Resources));
@@ -132,22 +135,25 @@ static void EnsureLoaded(Type type)
132135
Assumes.NotNull(type);
133136
}
134137

135-
static LoginManager CreateLoginManager(CompositionContainer compositionContainer)
138+
class LoginManagerFactory
136139
{
137-
var keychain = compositionContainer.GetExportedValue<IKeychain>();
138-
var lazy2Fa = new Lazy<ITwoFactorChallengeHandler>(() => compositionContainer.GetExportedValue<ITwoFactorChallengeHandler>());
139-
var oauthListener = compositionContainer.GetExportedValue<IOAuthCallbackListener>();
140-
var loginManager = new LoginManager(
141-
keychain,
142-
lazy2Fa,
143-
oauthListener,
144-
ApiClientConfiguration.ClientId,
145-
ApiClientConfiguration.ClientSecret,
146-
ApiClientConfiguration.MinimumScopes,
147-
ApiClientConfiguration.RequestedScopes,
148-
ApiClientConfiguration.AuthorizationNote,
149-
ApiClientConfiguration.MachineFingerprint);
150-
return loginManager;
140+
internal static ILoginManager CreateLoginManager(CompositionContainer compositionContainer)
141+
{
142+
var keychain = compositionContainer.GetExportedValue<IKeychain>();
143+
var lazy2Fa = new Lazy<ITwoFactorChallengeHandler>(() => compositionContainer.GetExportedValue<ITwoFactorChallengeHandler>());
144+
var oauthListener = compositionContainer.GetExportedValue<IOAuthCallbackListener>();
145+
var loginManager = new LoginManager(
146+
keychain,
147+
lazy2Fa,
148+
oauthListener,
149+
ApiClientConfiguration.ClientId,
150+
ApiClientConfiguration.ClientSecret,
151+
ApiClientConfiguration.MinimumScopes,
152+
ApiClientConfiguration.RequestedScopes,
153+
ApiClientConfiguration.AuthorizationNote,
154+
ApiClientConfiguration.MachineFingerprint);
155+
return loginManager;
156+
}
151157
}
152158

153159
static TypeCatalog GetCatalog(Assembly assembly)

0 commit comments

Comments
 (0)