Skip to content

Commit ce3cfaa

Browse files
committed
Merge branch 'main' into add-webapps
2 parents 86f2504 + f3adb75 commit ce3cfaa

File tree

1 file changed

+35
-14
lines changed

1 file changed

+35
-14
lines changed

src/extension.ts

Lines changed: 35 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,10 @@ export function activate(context: vscode.ExtensionContext) {
5555
);
5656
context.subscriptions.push(
5757
vscode.commands.registerCommand(`${extensionId}.addServer`, async () => {
58-
await addServer();
58+
const name = await addServer();
59+
if (name) {
60+
await view.addToRecents(name);
61+
}
5962
})
6063
);
6164
context.subscriptions.push(
@@ -210,22 +213,40 @@ export function activate(context: vscode.ExtensionContext) {
210213
const namespace = pathParts[3];
211214
const serverSpec = await getServerSpec(serverName, undefined, undefined, true);
212215
if (serverSpec) {
213-
const uri = vscode.Uri.parse(`isfs${readonly ? "-readonly" : ""}://${serverName}:${namespace}/${serverSpec.webServer.pathPrefix || ''}${csp ? '?csp' : ''}`);
214-
const label = `${serverName}:${namespace}${csp ? ' webfiles' : ''}${readonly ? " (read-only)" : ""}`;
215-
const added = vscode.workspace.updateWorkspaceFolders(
216-
vscode.workspace.workspaceFolders ? vscode.workspace.workspaceFolders.length : 0,
217-
0,
218-
{ uri, name: label }
219-
);
220-
// Switch to Explorer view so user sees the outcome
221-
await vscode.commands.executeCommand("workbench.view.explorer");
222-
// Handle failure
223-
if (added) {
224-
await view.addToRecents(serverName);
216+
const ISFS_ID = 'intersystems-community.vscode-objectscript';
217+
const isfsExtension = vscode.extensions.getExtension(ISFS_ID);
218+
if (isfsExtension) {
219+
if (!isfsExtension.isActive) {
220+
await isfsExtension.activate();
221+
if (!isfsExtension.isActive) {
222+
vscode.window.showErrorMessage(`${ISFS_ID} could not be activated.`, "Close")
223+
return;
224+
}
225+
}
225226
}
226227
else {
227-
vscode.window.showErrorMessage(`Folder ${uri.toString()} could not be added. Maybe it already exists in the workspace.`, "Close")
228+
vscode.window.showErrorMessage(`${ISFS_ID} is not installed.`, "Close")
229+
return;
230+
}
231+
232+
const uri = vscode.Uri.parse(`isfs${readonly ? "-readonly" : ""}://${serverName}:${namespace}/${serverSpec.webServer.pathPrefix || ''}${csp ? '?csp' : ''}`);
233+
if ((vscode.workspace.workspaceFolders || []).filter((workspaceFolder) => workspaceFolder.uri.toString() === uri.toString()).length === 0) {
234+
const label = `${serverName}:${namespace}${csp ? ' webfiles' : ''}${readonly ? " (read-only)" : ""}`;
235+
const added = vscode.workspace.updateWorkspaceFolders(
236+
vscode.workspace.workspaceFolders ? vscode.workspace.workspaceFolders.length : 0,
237+
0,
238+
{ uri, name: label }
239+
);
240+
// Handle failure
241+
if (added) {
242+
await view.addToRecents(serverName);
243+
}
244+
else {
245+
vscode.window.showErrorMessage(`Folder ${uri.toString()} could not be added.`, "Close")
246+
}
228247
}
248+
// Switch to Explorer view and focus on the folder
249+
await vscode.commands.executeCommand("revealInExplorer", uri);
229250
}
230251
}
231252
}

0 commit comments

Comments
 (0)