11import * as vscode from "vscode" ;
22
3- import { log , logDebug , logError } from "../log" ;
4- import { getWorkflowNodes , WorkflowsRepoNode } from "./workflows/workflowsRepoNode" ;
5-
63import { getGitHubContext } from "../git/repository" ;
4+ import { log , logDebug , logError } from "../log" ;
75import { RunStore } from "../store/store" ;
86import { AttemptNode } from "./shared/attemptNode" ;
97import { AuthenticationNode } from "./shared/authenticationNode" ;
108import { ErrorNode } from "./shared/errorNode" ;
9+ import { GitHubAPIUnreachableNode } from "./shared/gitHubApiUnreachableNode" ;
1110import { NoGitHubRepositoryNode } from "./shared/noGitHubRepositoryNode" ;
1211import { NoWorkflowJobsNode } from "./shared/noWorkflowJobsNode" ;
1312import { PreviousAttemptsNode } from "./shared/previousAttemptsNode" ;
1413import { WorkflowJobNode } from "./shared/workflowJobNode" ;
1514import { WorkflowRunNode } from "./shared/workflowRunNode" ;
1615import { WorkflowRunTreeDataProvider } from "./workflowRunTreeDataProvider" ;
1716import { WorkflowNode } from "./workflows/workflowNode" ;
17+ import { getWorkflowNodes , WorkflowsRepoNode } from "./workflows/workflowsRepoNode" ;
1818import { WorkflowStepNode } from "./workflows/workflowStepNode" ;
19+ import { canReachGitHubAPI } from "../util" ;
1920
2021type WorkflowsTreeNode =
2122 | AuthenticationNode
@@ -26,7 +27,8 @@ type WorkflowsTreeNode =
2627 | AttemptNode
2728 | WorkflowJobNode
2829 | NoWorkflowJobsNode
29- | WorkflowStepNode ;
30+ | WorkflowStepNode
31+ | GitHubAPIUnreachableNode ;
3032
3133export class WorkflowsTreeProvider
3234 extends WorkflowRunTreeDataProvider
@@ -43,9 +45,13 @@ export class WorkflowsTreeProvider
4345 this . _onDidChangeTreeData . fire ( node ) ;
4446 }
4547
46- refresh ( ) : void {
47- logDebug ( "Refreshing workflow tree" ) ;
48- this . _onDidChangeTreeData . fire ( null ) ;
48+ async refresh ( ) : Promise < void > {
49+ // Don't delete all the nodes if we can't reach GitHub API
50+ if ( await canReachGitHubAPI ( ) ) {
51+ this . _onDidChangeTreeData . fire ( null ) ;
52+ } else {
53+ await vscode . window . showWarningMessage ( "Unable to refresh, could not reach GitHub API" ) ;
54+ }
4955 }
5056
5157 getTreeItem ( element : WorkflowsTreeNode ) : vscode . TreeItem | Thenable < vscode . TreeItem > {
@@ -59,8 +65,8 @@ export class WorkflowsTreeProvider
5965 try {
6066 const gitHubContext = await getGitHubContext ( ) ;
6167 if ( ! gitHubContext ) {
62- logDebug ( "could not get github context" ) ;
63- return [ ] ;
68+ logDebug ( "could not get github context for workflows " ) ;
69+ return [ new GitHubAPIUnreachableNode ( ) ] ;
6470 }
6571
6672 if ( gitHubContext . repos . length > 0 ) {
0 commit comments