File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 66import * as vscode from 'vscode' ;
77import { GitApiImpl } from '../api/api1' ;
88import { Disposable } from '../common/lifecycle' ;
9+ import Logger from '../common/logger' ;
910import { onceEvent } from '../common/utils' ;
1011import { issueMarkdown } from '../github/markdownUtils' ;
1112import { PullRequestModel } from '../github/pullRequestModel' ;
@@ -24,6 +25,8 @@ export namespace PRChatContextItem {
2425}
2526
2627export class WorkspaceContextProvider extends Disposable implements vscode . ChatWorkspaceContextProvider {
28+ private static readonly ID = 'WorkspaceContextProvider' ;
29+
2730 private readonly _onDidChangeWorkspaceChatContext = this . _register ( new vscode . EventEmitter < void > ( ) ) ;
2831 readonly onDidChangeWorkspaceChatContext = this . _onDidChangeWorkspaceChatContext . event ;
2932
@@ -70,7 +73,15 @@ export class WorkspaceContextProvider extends Disposable implements vscode.ChatW
7073 if ( folderManager . gitHubRepositories . length === 0 ) {
7174 continue ;
7275 }
73- const defaults = await folderManager . getPullRequestDefaults ( ) ;
76+ let defaults ;
77+ try {
78+ defaults = await folderManager . getPullRequestDefaults ( ) ;
79+ } catch ( e ) {
80+ // The folder may have no upstream, a detached HEAD, or an upstream that is not a GitHub
81+ // repository. Skip it instead of letting the rejection escape as an unhandled promise.
82+ Logger . debug ( `Skipping workspace chat context for folder ${ folderManager . repository . rootUri . toString ( ) } : ${ e . message ?? e } ` , WorkspaceContextProvider . ID ) ;
83+ continue ;
84+ }
7485
7586 let value = `Repository name: ${ defaults . repo }
7687Owner: ${ defaults . owner }
Original file line number Diff line number Diff line change @@ -297,7 +297,7 @@ export class CategoryTreeNode extends TreeNode implements vscode.TreeItem {
297297 hasMorePages = response . hasMorePages ;
298298 hasUnsearchedRepositories = response . hasUnsearchedRepositories ;
299299 } catch ( e ) {
300- if ( this . isCopilot && ( e . response . status === 422 ) && e . message . includes ( 'the users do not exist' ) ) {
300+ if ( this . isCopilot && ( e ? .response ? .status === 422 ) && e . message ? .includes ( 'the users do not exist' ) ) {
301301 // Skip it, it's copilot and the repo doesn't have copilot
302302 } else {
303303 const error = formatError ( e ) ;
You can’t perform that action at this time.
0 commit comments