@@ -550,6 +550,19 @@ export function registerCommands(
550550 }
551551 } ;
552552
553+ interface SessionMetadata {
554+ owner ?: string ;
555+ repo ?: string ;
556+ [ key : string ] : unknown ;
557+ }
558+
559+ function getFolderManagerFromMetadata ( metadata : SessionMetadata | undefined ) : FolderRepositoryManager | undefined {
560+ if ( metadata ?. owner && metadata ?. repo ) {
561+ return reposManager . getManagerForRepository ( metadata . owner , metadata . repo ) ?? reposManager . folderManagers [ 0 ] ;
562+ }
563+ return reposManager . folderManagers [ 0 ] ;
564+ }
565+
553566 function contextHasPath ( ctx : OverviewContext | { path : string } | undefined ) : ctx is { path : string } {
554567 const contextAsPath : Partial < { path : string } > = ( ctx as { path : string } ) ;
555568 return ! ! contextAsPath . path ;
@@ -567,7 +580,7 @@ export function registerCommands(
567580 }
568581 }
569582
570- context . subscriptions . push ( vscode . commands . registerCommand ( 'pr.checkoutFromDescription' , async ( ctx : OverviewContext | { path : string } | undefined , metadata ?: { owner ?: string ; repo ?: string ; [ key : string ] : unknown } ) => {
583+ context . subscriptions . push ( vscode . commands . registerCommand ( 'pr.checkoutFromDescription' , async ( ctx : OverviewContext | { path : string } | undefined , metadata ?: SessionMetadata ) => {
571584 if ( ! ctx ) {
572585 return vscode . window . showErrorMessage ( vscode . l10n . t ( 'No pull request context provided for checkout.' ) ) ;
573586 }
@@ -579,11 +592,7 @@ export function registerCommands(
579592 return vscode . window . showErrorMessage ( vscode . l10n . t ( 'No pull request number found in context path.' ) ) ;
580593 }
581594 // Use metadata to find the correct repository if available
582- let folderManager : FolderRepositoryManager | undefined ;
583- if ( metadata ?. owner && metadata ?. repo ) {
584- folderManager = reposManager . getManagerForRepository ( metadata . owner , metadata . repo ) ;
585- }
586- folderManager = folderManager ?? reposManager . folderManagers [ 0 ] ;
595+ const folderManager = getFolderManagerFromMetadata ( metadata ) ;
587596 if ( ! folderManager ) {
588597 return vscode . window . showErrorMessage ( vscode . l10n . t ( 'Unable to find repository manager.' ) ) ;
589598 }
@@ -603,7 +612,7 @@ export function registerCommands(
603612
604613 } ) ) ;
605614
606- context . subscriptions . push ( vscode . commands . registerCommand ( 'pr.applyChangesFromDescription' , async ( ctx : OverviewContext | { path : string } | undefined , metadata ?: { owner ?: string ; repo ?: string ; [ key : string ] : unknown } ) => {
615+ context . subscriptions . push ( vscode . commands . registerCommand ( 'pr.applyChangesFromDescription' , async ( ctx : OverviewContext | { path : string } | undefined , metadata ?: SessionMetadata ) => {
607616 if ( ! ctx ) {
608617 return vscode . window . showErrorMessage ( vscode . l10n . t ( 'No pull request context provided for applying changes.' ) ) ;
609618 }
@@ -625,11 +634,7 @@ export function registerCommands(
625634 task . report ( { increment : 30 } ) ;
626635
627636 // Use metadata to find the correct repository if available
628- let folderManager : FolderRepositoryManager | undefined ;
629- if ( metadata ?. owner && metadata ?. repo ) {
630- folderManager = reposManager . getManagerForRepository ( metadata . owner , metadata . repo ) ;
631- }
632- folderManager = folderManager ?? reposManager . folderManagers [ 0 ] ;
637+ const folderManager = getFolderManagerFromMetadata ( metadata ) ;
633638 if ( ! folderManager ) {
634639 return vscode . window . showErrorMessage ( vscode . l10n . t ( 'Unable to find repository manager.' ) ) ;
635640 }
0 commit comments