44 *--------------------------------------------------------------------------------------------*/
55
66import * as vscode from 'vscode' ;
7- import { RemoteOnlyRepository } from '../api/remoteOnlyRepository' ;
8- import { Disposable } from '../common/lifecycle' ;
9- import { IThemeWatcher } from '../themeWatcher' ;
10- import { CredentialStore } from './credentials' ;
11- import { FolderRepositoryManager } from './folderRepositoryManager' ;
7+ import { FolderRepositoryManagerResolver } from './folderRepositoryManagerResolver' ;
128import { IssueOverviewPanel } from './issueOverview' ;
139import { PullRequestOverviewPanel } from './pullRequestOverview' ;
14- import { RepositoriesManager } from './repositoriesManager' ;
15- import { GitApiImpl } from '../api/api1' ;
1610import { getGitHubIssueOrPullRequestUriOpenerPriority , openWithDefaultExternalOpener , parseGitHubIssueOrPullRequestUri } from '../common/externalUri' ;
11+ import { Disposable } from '../common/lifecycle' ;
1712import { OPEN_PULL_LINKS , PR_SETTINGS_NAMESPACE } from '../common/settingKeys' ;
1813import { ITelemetry } from '../common/telemetry' ;
1914import { EXTENSION_ID } from '../constants' ;
20- import { CreatePullRequestHelper } from '../view/createPullRequestHelper' ;
21- import { ThemeData } from '../view/theme' ;
2215
2316class GitHubIssueOrPullRequestExternalUriOpener extends Disposable implements vscode . ExternalUriOpener {
24- private _remoteFolderRepositoryManager : FolderRepositoryManager | undefined ;
2517
2618 constructor (
2719 private readonly _context : vscode . ExtensionContext ,
28- private readonly _repositoriesManager : RepositoriesManager ,
29- private readonly _credentialStore : CredentialStore ,
20+ private readonly _folderRepositoryManagerResolver : FolderRepositoryManagerResolver ,
3021 private readonly _telemetry : ITelemetry ,
3122 ) {
3223 super ( ) ;
@@ -51,7 +42,7 @@ class GitHubIssueOrPullRequestExternalUriOpener extends Disposable implements vs
5142 return ;
5243 }
5344
54- const folderRepositoryManager = this . getFolderRepositoryManager ( identity . owner , identity . repo ) ;
45+ const folderRepositoryManager = this . _folderRepositoryManagerResolver . getManagerForRepository ( identity . owner , identity . repo ) ;
5546 if ( identity . kind === 'pullRequest' ) {
5647 const pullRequest = await folderRepositoryManager . resolvePullRequest ( identity . owner , identity . repo , identity . number , true ) ;
5748 if ( token . isCancellationRequested ) {
@@ -91,43 +82,12 @@ class GitHubIssueOrPullRequestExternalUriOpener extends Disposable implements vs
9182 return vscode . workspace . getConfiguration ( PR_SETTINGS_NAMESPACE ) . get < boolean > ( OPEN_PULL_LINKS , true ) ;
9283 }
9384
94- private getFolderRepositoryManager ( owner : string , repo : string ) : FolderRepositoryManager {
95- const existingManager = this . _repositoriesManager . getManagerForRepository ( owner , repo )
96- ?? this . _repositoriesManager . folderManagers [ 0 ] ;
97- if ( existingManager ) {
98- return existingManager ;
99- }
100- if ( this . _remoteFolderRepositoryManager ) {
101- return this . _remoteFolderRepositoryManager ;
102- }
103-
104- const repository = this . _register ( new RemoteOnlyRepository ( ) ) ;
105- const git = this . _register ( new GitApiImpl ( this . _repositoriesManager ) ) ;
106- const createPullRequestHelper = this . _register ( new CreatePullRequestHelper ( ) ) ;
107- const onDidChangeTheme = this . _register ( new vscode . EventEmitter < ThemeData | undefined > ( ) ) ;
108- const themeWatcher : IThemeWatcher = {
109- onDidChangeTheme : onDidChangeTheme . event ,
110- themeData : undefined ,
111- } ;
112- this . _remoteFolderRepositoryManager = this . _register ( new FolderRepositoryManager (
113- - 1 ,
114- this . _context ,
115- repository ,
116- this . _telemetry ,
117- git ,
118- this . _credentialStore ,
119- createPullRequestHelper ,
120- themeWatcher ,
121- ) ) ;
122- return this . _remoteFolderRepositoryManager ;
123- }
12485}
12586
12687export function registerGitHubIssueOrPullRequestExternalUriOpener (
12788 context : vscode . ExtensionContext ,
128- repositoriesManager : RepositoriesManager ,
129- credentialStore : CredentialStore ,
89+ folderRepositoryManagerResolver : FolderRepositoryManagerResolver ,
13090 telemetry : ITelemetry ,
13191) : vscode . Disposable {
132- return new GitHubIssueOrPullRequestExternalUriOpener ( context , repositoriesManager , credentialStore , telemetry ) ;
92+ return new GitHubIssueOrPullRequestExternalUriOpener ( context , folderRepositoryManagerResolver , telemetry ) ;
13393}
0 commit comments