Skip to content

Commit 891548e

Browse files
Copilotalexr00
andcommitted
Refactor: Extract SessionMetadata type and getFolderManagerFromMetadata helper
Co-authored-by: alexr00 <38270282+alexr00@users.noreply.github.com>
1 parent 3908eca commit 891548e

1 file changed

Lines changed: 17 additions & 12 deletions

File tree

src/commands.ts

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)