@@ -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' ;
@@ -473,13 +474,12 @@ export class WorkspacesService implements Disposable {
473474 const repoPath = repo . uri . fsPath ;
474475
475476 const remotes = await repo . git . remotes ( ) . getRemotes ( ) ;
476- const remoteUrls : string [ ] = [ ] ;
477- for ( const remote of remotes ) {
478- const remoteUrl = remote . provider ?. url ( { type : RemoteResourceType . Repo } ) ;
479- if ( remoteUrl != null ) {
480- remoteUrls . push ( remoteUrl ) ;
481- }
482- }
477+ const remoteUrlPromises : Promise < string | undefined > [ ] = remotes . map ( async remote => {
478+ return remote . provider ?. url ( { type : RemoteResourceType . Repo } ) ;
479+ } ) ;
480+ const remoteUrls : string [ ] = ( await Promise . allSettled ( remoteUrlPromises ) )
481+ . map ( r => getSettledValue ( r ) )
482+ . filter ( r => r != null ) ;
483483
484484 for ( const remoteUrl of remoteUrls ) {
485485 await this . _repositoryLocator ?. storeLocation ( repoPath , remoteUrl ) ;
@@ -906,7 +906,7 @@ export class WorkspacesService implements Disposable {
906906 if ( repo == null ) continue ;
907907 const remote =
908908 ( await repo . git . remotes ( ) . getRemote ( 'origin' ) ) || ( await repo . git . remotes ( ) . getRemotes ( ) ) ?. [ 0 ] ;
909- const remoteDescriptor = getRemoteDescriptor ( remote ) ;
909+ const remoteDescriptor = await getRemoteDescriptor ( remote ) ;
910910 if ( remoteDescriptor == null ) continue ;
911911 repoInputs . push ( {
912912 owner : remoteDescriptor . owner ,
@@ -1042,7 +1042,7 @@ export class WorkspacesService implements Disposable {
10421042 if ( workspace instanceof CloudWorkspace ) {
10431043 const remotes = await repo . git . remotes ( ) . getRemotes ( ) ;
10441044 for ( const remote of remotes ) {
1045- const remoteDescriptor = getRemoteDescriptor ( remote ) ;
1045+ const remoteDescriptor = await getRemoteDescriptor ( remote ) ;
10461046 if ( remoteDescriptor == null ) continue ;
10471047 reposProviderMap . set (
10481048 `${ remoteDescriptor . provider } /${ remoteDescriptor . owner } /${ remoteDescriptor . repoName } ` ,
@@ -1324,15 +1324,15 @@ export class WorkspacesService implements Disposable {
13241324 }
13251325}
13261326
1327- function getRemoteDescriptor ( remote : GitRemote ) : RemoteDescriptor | undefined {
1327+ async function getRemoteDescriptor ( remote : GitRemote ) : Promise < RemoteDescriptor | undefined > {
13281328 if ( remote . provider ?. owner == null ) return undefined ;
13291329 const remoteRepoName = remote . provider . path . split ( '/' ) . pop ( ) ;
13301330 if ( remoteRepoName == null ) return undefined ;
13311331 return {
13321332 provider : remote . provider . id . toLowerCase ( ) ,
13331333 owner : remote . provider . owner . toLowerCase ( ) ,
13341334 repoName : remoteRepoName . toLowerCase ( ) ,
1335- url : remote . provider . url ( { type : RemoteResourceType . Repo } ) ,
1335+ url : await remote . provider . url ( { type : RemoteResourceType . Repo } ) ,
13361336 } ;
13371337}
13381338
0 commit comments