Skip to content

Commit 445046f

Browse files
authored
Fix uncaught errors reported by telemetry (#1621)
1 parent b3cbd15 commit 445046f

File tree

3 files changed

+15
-10
lines changed

3 files changed

+15
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@
8585
{
8686
"view": "ObjectScriptExplorer",
8787
"contents": "Connect a local workspace folder to an [InterSystems server](https://docs.intersystems.com/components/csp/docbook/DocBook.UI.Page.cls?KEY=GVSCO_clientflow) if you want to export or import ObjectScript code.\n[Choose Server and Namespace](command:vscode-objectscript.connectFolderToServerNamespace)",
88-
"when": "vscode-objectscript.explorerRootCount == 0"
88+
"when": "vscode-objectscript.explorerRootCount == 0 && workspaceFolderCount != 0"
8989
},
9090
{
9191
"view": "ObjectScriptProjectsExplorer",

src/commands/connectFolderToServerNamespace.ts

Lines changed: 12 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,20 @@ interface ConnSettings {
1010
}
1111

1212
export async function connectFolderToServerNamespace(): Promise<void> {
13+
if (!vscode.workspace.workspaceFolders?.length) {
14+
vscode.window.showErrorMessage("No folders in the workspace.", "Dismiss");
15+
return;
16+
}
1317
const serverManagerApi = await getServerManagerApi();
1418
if (!serverManagerApi) {
1519
vscode.window.showErrorMessage(
16-
"Connecting a folder to a server namespace requires the [InterSystems Server Manager extension](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) to be installed and enabled."
20+
"Connecting a folder to a server namespace requires the [InterSystems Server Manager extension](https://marketplace.visualstudio.com/items?itemName=intersystems-community.servermanager) to be installed and enabled.",
21+
"Dismiss"
1722
);
1823
return;
1924
}
2025
// Which folder?
21-
const allFolders = vscode.workspace.workspaceFolders;
22-
const items: vscode.QuickPickItem[] = allFolders
26+
const items: vscode.QuickPickItem[] = vscode.workspace.workspaceFolders
2327
.filter((folder) => notIsfs(folder.uri))
2428
.map((folder) => {
2529
const config = vscode.workspace.getConfiguration("objectscript", folder);
@@ -31,14 +35,14 @@ export async function connectFolderToServerNamespace(): Promise<void> {
3135
};
3236
});
3337
if (!items.length) {
34-
vscode.window.showErrorMessage("No local folders in the workspace.");
38+
vscode.window.showErrorMessage("No local folders in the workspace.", "Dismiss");
3539
return;
3640
}
3741
const pick =
3842
items.length === 1 && !items[0].detail
3943
? items[0]
4044
: await vscode.window.showQuickPick(items, { title: "Pick a folder" });
41-
const folder = allFolders.find((el) => el.name === pick.label);
45+
const folder = vscode.workspace.workspaceFolders.find((el) => el.name === pick.label);
4246
// Get user's choice of server
4347
const options: vscode.QuickPickOptions = {};
4448
const serverName: string = await serverManagerApi.pickServer(undefined, options);
@@ -60,7 +64,8 @@ export async function connectFolderToServerNamespace(): Promise<void> {
6064
.catch((reason) => {
6165
// Notify user about serverInfo failure
6266
vscode.window.showErrorMessage(
63-
reason.message || `Failed to fetch namespace list from server at ${connDisplayString}`
67+
reason.message || `Failed to fetch namespace list from server at ${connDisplayString}`,
68+
"Dismiss"
6469
);
6570
return undefined;
6671
});
@@ -73,7 +78,7 @@ export async function connectFolderToServerNamespace(): Promise<void> {
7378
}
7479
// Handle serverInfo having returned no namespaces
7580
if (!allNamespaces.length) {
76-
vscode.window.showErrorMessage(`No namespace list returned by server at ${connDisplayString}`);
81+
vscode.window.showErrorMessage(`No namespace list returned by server at ${connDisplayString}`, "Dismiss");
7782
return;
7883
}
7984
// Get user's choice of namespace

src/utils/index.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -412,7 +412,7 @@ export function uriOfWorkspaceFolder(workspaceFolder: string = currentWorkspaceF
412412
return (
413413
vscode.workspace.workspaceFolders.find((el): boolean => el.name.toLowerCase() === workspaceFolder.toLowerCase()) ||
414414
vscode.workspace.workspaceFolders.find((el): boolean => el.uri.authority == workspaceFolder)
415-
).uri;
415+
)?.uri;
416416
}
417417

418418
export function onlyUnique(value: { name: string }, index: number, self: { name: string }[]): boolean {
@@ -655,7 +655,7 @@ export async function addWsServerRootFolderData(wsFolders: readonly vscode.Works
655655
* is required but not supported by the server and `err` was passed.
656656
*/
657657
export function redirectDotvscodeRoot(uri: vscode.Uri, err?: vscode.FileSystemError): vscode.Uri {
658-
if (notIsfs(uri)) return;
658+
if (notIsfs(uri)) return uri;
659659
const dotMatch = uri.path.match(/^(.*)\/\.vscode(\/.*)?$/);
660660
if (dotMatch) {
661661
const dotvscodeRoot = uri.with({ path: dotMatch[1] || "/" });

0 commit comments

Comments
 (0)