@@ -10,6 +10,7 @@ import type { OpenWorkspaceLocation } from '../../system/-webview/vscode';
1010import { openWorkspace } from '../../system/-webview/vscode' ;
1111import { log } from '../../system/decorators/log' ;
1212import { normalizePath } from '../../system/path' ;
13+ import { getSettledValue } from '../../system/promise' ;
1314import type { SubscriptionChangeEvent } from '../gk/subscriptionService' ;
1415import { isSubscriptionStatePaidOrTrial } from '../gk/utils/subscription.utils' ;
1516import type { CloudWorkspaceData , CloudWorkspaceRepositoryDescriptor } from './models/cloudWorkspace' ;
@@ -474,13 +475,12 @@ export class WorkspacesService implements Disposable {
474475 const repoPath = repo . uri . fsPath ;
475476
476477 const remotes = await repo . git . remotes ( ) . getRemotes ( ) ;
477- const remoteUrls : string [ ] = [ ] ;
478- for ( const remote of remotes ) {
479- const remoteUrl = remote . provider ?. url ( { type : RemoteResourceType . Repo } ) ;
480- if ( remoteUrl != null ) {
481- remoteUrls . push ( remoteUrl ) ;
482- }
483- }
478+ const remoteUrlPromises : Promise < string | undefined > [ ] = remotes . map ( async remote => {
479+ return remote . provider ?. url ( { type : RemoteResourceType . Repo } ) ;
480+ } ) ;
481+ const remoteUrls : string [ ] = ( await Promise . allSettled ( remoteUrlPromises ) )
482+ . map ( r => getSettledValue ( r ) )
483+ . filter ( r => r != null ) ;
484484
485485 for ( const remoteUrl of remoteUrls ) {
486486 await this . _repositoryLocator ?. storeLocation ( repoPath , remoteUrl ) ;
@@ -907,7 +907,7 @@ export class WorkspacesService implements Disposable {
907907 if ( repo == null ) continue ;
908908 const remote =
909909 ( await repo . git . remotes ( ) . getRemote ( 'origin' ) ) || ( await repo . git . remotes ( ) . getRemotes ( ) ) ?. [ 0 ] ;
910- const remoteDescriptor = getRemoteDescriptor ( remote ) ;
910+ const remoteDescriptor = await getRemoteDescriptor ( remote ) ;
911911 if ( remoteDescriptor == null ) continue ;
912912 repoInputs . push ( {
913913 owner : remoteDescriptor . owner ,
@@ -1043,7 +1043,7 @@ export class WorkspacesService implements Disposable {
10431043 if ( workspace instanceof CloudWorkspace ) {
10441044 const remotes = await repo . git . remotes ( ) . getRemotes ( ) ;
10451045 for ( const remote of remotes ) {
1046- const remoteDescriptor = getRemoteDescriptor ( remote ) ;
1046+ const remoteDescriptor = await getRemoteDescriptor ( remote ) ;
10471047 if ( remoteDescriptor == null ) continue ;
10481048 reposProviderMap . set (
10491049 `${ remoteDescriptor . provider } /${ remoteDescriptor . owner } /${ remoteDescriptor . repoName } ` ,
@@ -1325,15 +1325,15 @@ export class WorkspacesService implements Disposable {
13251325 }
13261326}
13271327
1328- function getRemoteDescriptor ( remote : GitRemote ) : RemoteDescriptor | undefined {
1328+ async function getRemoteDescriptor ( remote : GitRemote ) : Promise < RemoteDescriptor | undefined > {
13291329 if ( remote . provider ?. owner == null ) return undefined ;
13301330 const remoteRepoName = remote . provider . path . split ( '/' ) . pop ( ) ;
13311331 if ( remoteRepoName == null ) return undefined ;
13321332 return {
13331333 provider : remote . provider . id . toLowerCase ( ) ,
13341334 owner : remote . provider . owner . toLowerCase ( ) ,
13351335 repoName : remoteRepoName . toLowerCase ( ) ,
1336- url : remote . provider . url ( { type : RemoteResourceType . Repo } ) ,
1336+ url : await remote . provider . url ( { type : RemoteResourceType . Repo } ) ,
13371337 } ;
13381338}
13391339
0 commit comments