diff --git a/src/settingsManager.ts b/src/settingsManager.ts index a470936..ce85848 100644 --- a/src/settingsManager.ts +++ b/src/settingsManager.ts @@ -177,7 +177,7 @@ export class SettingsManager { const document = await workspace.openTextDocument(settingFileUri); await window.showTextDocument(document); } catch (error: any) { - window.showErrorMessage(`Failed to create ${settingFileName}. Error: ${error}`) + window.showErrorMessage(`Failed to create ${settingFileName}. Error: ${error}`); } } } @@ -242,7 +242,7 @@ export class SettingsManager { await workspace.fs.stat(Uri.file(settingFile.path)); window.showErrorMessage(`Failed to delete file. Error ${error}`); return; - } catch (error) { } + } catch (error: any) { } } await this.removeSettingFile(workspaceFolder, settingFile, storageKey); diff --git a/src/views/settings/settingsTreeDataProvider.ts b/src/views/settings/settingsTreeDataProvider.ts index 5eb1913..8a90368 100644 --- a/src/views/settings/settingsTreeDataProvider.ts +++ b/src/views/settings/settingsTreeDataProvider.ts @@ -1,4 +1,4 @@ -import { CancellationToken, commands, EventEmitter, ExtensionContext, QuickPickItem, QuickPickItemKind, ThemeIcon, TreeCheckboxChangeEvent, TreeDataProvider, TreeItem, TreeItemCheckboxState, window, workspace } from "vscode"; +import { CancellationToken, commands, EventEmitter, ExtensionContext, QuickPickItem, QuickPickItemKind, ThemeIcon, TreeCheckboxChangeEvent, TreeDataProvider, TreeItem, TreeItemCheckboxState, Uri, window, workspace } from "vscode"; import { act } from "../../extension"; import { SettingFileName, Visibility } from "../../settingsManager"; import { StorageKey } from "../../storageManager"; @@ -126,8 +126,17 @@ export default class SettingsTreeDataProvider implements TreeDataProvider { - const document = await workspace.openTextDocument(settingFileTreeItem.settingFile.path); - await window.showTextDocument(document); + try { + const document = await workspace.openTextDocument(settingFileTreeItem.settingFile.path); + await window.showTextDocument(document); + } catch (error: any) { + try { + await workspace.fs.stat(Uri.file(settingFileTreeItem.settingFile.path)); + window.showErrorMessage(`Failed to open file. Error: ${error}`); + } catch (error: any) { + window.showErrorMessage(`File ${settingFileTreeItem.settingFile.name} not found.`); + } + } }), commands.registerCommand('githubLocalActions.removeSettingFile', async (settingFileTreeItem: SettingFileTreeItem) => { await act.settingsManager.removeSettingFile(settingFileTreeItem.workspaceFolder, settingFileTreeItem.settingFile, settingFileTreeItem.storageKey); diff --git a/src/views/workflows/workflowsTreeDataProvider.ts b/src/views/workflows/workflowsTreeDataProvider.ts index 4ceb13f..48e6f00 100644 --- a/src/views/workflows/workflowsTreeDataProvider.ts +++ b/src/views/workflows/workflowsTreeDataProvider.ts @@ -1,3 +1,4 @@ +import * as path from "path"; import { CancellationToken, commands, EventEmitter, ExtensionContext, TreeDataProvider, TreeItem, window, workspace } from "vscode"; import { Event } from "../../act"; import { act } from "../../extension"; @@ -37,8 +38,17 @@ export default class WorkflowsTreeDataProvider implements TreeDataProvider { - const document = await workspace.openTextDocument(workflowTreeItem.workflow.uri); - await window.showTextDocument(document); + try { + const document = await workspace.openTextDocument(workflowTreeItem.workflow.uri); + await window.showTextDocument(document); + } catch (error: any) { + try { + await workspace.fs.stat(workflowTreeItem.workflow.uri); + window.showErrorMessage(`Failed to open workflow. Error: ${error}`); + } catch (error: any) { + window.showErrorMessage(`Workflow ${path.parse(workflowTreeItem.workflow.uri.fsPath).base} not found.`); + } + } }), commands.registerCommand('githubLocalActions.runWorkflow', async (workflowTreeItem: WorkflowTreeItem) => { await act.runWorkflow(workflowTreeItem.workspaceFolder, workflowTreeItem.workflow);