Skip to content

Commit 394a1c0

Browse files
authored
Fix Servers tree action buttons for servers defined in a workspace folder (#287)
1 parent 3aed3ad commit 394a1c0

File tree

3 files changed

+17
-12
lines changed

3 files changed

+17
-12
lines changed

package.json

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -581,33 +581,33 @@
581581
{
582582
"command": "intersystems-community.servermanager.editNamespace",
583583
"alt": "intersystems-community.servermanager.editNamespaceWebAppFiles",
584-
"when": "view == intersystems-community_servermanager && viewItem =~ /namespace$/",
584+
"when": "view == intersystems-community_servermanager && viewItem =~ /namespace$/ && !(viewItem =~ /\\/wsFolder\\//)",
585585
"group": "inline@10"
586586
},
587587
{
588588
"command": "intersystems-community.servermanager.viewNamespace",
589589
"alt": "intersystems-community.servermanager.viewNamespaceWebAppFiles",
590-
"when": "view == intersystems-community_servermanager && viewItem =~ /namespace$/",
590+
"when": "view == intersystems-community_servermanager && viewItem =~ /namespace$/ && !(viewItem =~ /\\/wsFolder\\//)",
591591
"group": "inline@20"
592592
},
593593
{
594594
"command": "intersystems-community.servermanager.editProject",
595-
"when": "view == intersystems-community_servermanager && viewItem =~ /project$/",
595+
"when": "view == intersystems-community_servermanager && viewItem =~ /project$/ && !(viewItem =~ /\\/wsFolder\\//)",
596596
"group": "inline@10"
597597
},
598598
{
599599
"command": "intersystems-community.servermanager.viewProject",
600-
"when": "view == intersystems-community_servermanager && viewItem =~ /project$/",
600+
"when": "view == intersystems-community_servermanager && viewItem =~ /project$/ && !(viewItem =~ /\\/wsFolder\\//)",
601601
"group": "inline@20"
602602
},
603603
{
604604
"command": "intersystems-community.servermanager.editWebApp",
605-
"when": "view == intersystems-community_servermanager && viewItem =~ /webapp$/",
605+
"when": "view == intersystems-community_servermanager && viewItem =~ /webapp$/ && !(viewItem =~ /\\/wsFolder\\//)",
606606
"group": "inline@10"
607607
},
608608
{
609609
"command": "intersystems-community.servermanager.viewWebApp",
610-
"when": "view == intersystems-community_servermanager && viewItem =~ /webapp$/",
610+
"when": "view == intersystems-community_servermanager && viewItem =~ /webapp$/ && !(viewItem =~ /\\/wsFolder\\//)",
611611
"group": "inline@20"
612612
},
613613
{

src/commonActivate.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ export function commonActivate(context: vscode.ExtensionContext, view: ServerMan
169169
}),
170170
vscode.commands.registerCommand(`${extensionId}.openPortalExternal`, (server?: ServerTreeItem) => {
171171
if (server?.contextValue?.match(/\.server\./) && server.name) {
172-
getPortalUriWithToken(BrowserTarget.EXTERNAL, server.name).then((uriWithToken) => {
172+
getPortalUriWithToken(BrowserTarget.EXTERNAL, server.name, undefined, undefined, server?.params?.serverSummary?.scope).then((uriWithToken) => {
173173
if (uriWithToken) {
174174
vscode.env.openExternal(uriWithToken);
175175
}
@@ -178,7 +178,7 @@ export function commonActivate(context: vscode.ExtensionContext, view: ServerMan
178178
}),
179179
vscode.commands.registerCommand(`${extensionId}.openPortalTab`, (server?: ServerTreeItem) => {
180180
if (server?.contextValue?.match(/\.server\./) && server.name) {
181-
getPortalUriWithToken(BrowserTarget.SIMPLE, server.name).then((uriWithToken) => {
181+
getPortalUriWithToken(BrowserTarget.SIMPLE, server.name, undefined, undefined, server?.params?.serverSummary?.scope).then((uriWithToken) => {
182182
if (uriWithToken) {
183183
//
184184
// It is essential to pass skipEncoding=true when converting the uri to a string,
@@ -194,7 +194,7 @@ export function commonActivate(context: vscode.ExtensionContext, view: ServerMan
194194
if (pathParts && pathParts.length === 4) {
195195
const serverName = pathParts[1];
196196
const namespace = pathParts[3];
197-
getPortalUriWithToken(BrowserTarget.EXTERNAL, serverName, "/csp/sys/exp/%25CSP.UI.Portal.ClassList.zen", namespace).then((uriWithToken) => {
197+
getPortalUriWithToken(BrowserTarget.EXTERNAL, serverName, "/csp/sys/exp/%25CSP.UI.Portal.ClassList.zen", namespace, namespaceTreeItem.parent?.parent?.params?.serverSummary?.scope).then((uriWithToken) => {
198198
if (uriWithToken) {
199199
vscode.env.openExternal(uriWithToken);
200200
}

src/ui/serverManagerView.ts

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -522,6 +522,11 @@ async function serverNamespaces(element: ServerTreeItem, params?: any): Promise<
522522
return children;
523523
}
524524

525+
/** Returns `true` if `server` is a tree item representing a server defined at the workspace folder level */
526+
function serverItemIsWsFolder(server?: SMTreeItem): boolean {
527+
return typeof server?.label == "string" && server.label.includes("(") && server.label.endsWith(")");
528+
}
529+
525530
// tslint:disable-next-line: max-classes-per-file
526531
export class NamespaceTreeItem extends SMTreeItem {
527532
public readonly name: string;
@@ -543,7 +548,7 @@ export class NamespaceTreeItem extends SMTreeItem {
543548
params: { serverName, serverSpec, serverApiVersion }
544549
});
545550
this.name = name;
546-
this.contextValue = `${serverApiVersion.toString()}/${name === "%SYS" ? "sysnamespace" : "namespace"}`;
551+
this.contextValue = `${serverApiVersion.toString()}${serverItemIsWsFolder(element?.parent?.parent) ? "/wsFolder" : ""}/${name === "%SYS" ? "sysnamespace" : "namespace"}`;
547552
this.iconPath = new vscode.ThemeIcon("archive");
548553
}
549554
}
@@ -645,7 +650,7 @@ export class ProjectTreeItem extends SMTreeItem {
645650
tooltip: description
646651
});
647652
this.name = name;
648-
this.contextValue = serverApiVersion.toString() + '/project';
653+
this.contextValue = `${serverApiVersion.toString()}${serverItemIsWsFolder(element?.parent?.parent?.parent?.parent) ? "/wsFolder" : ""}/project`;
649654
this.iconPath = new vscode.ThemeIcon('files');
650655
}
651656
}
@@ -720,7 +725,7 @@ export class WebAppTreeItem extends SMTreeItem {
720725
id
721726
});
722727
this.name = name;
723-
this.contextValue = serverApiVersion.toString() + '/webapp';
728+
this.contextValue = `${serverApiVersion.toString()}${serverItemIsWsFolder(element?.parent?.parent?.parent?.parent) ? "/wsFolder" : ""}/webapp`;
724729
this.iconPath = new vscode.ThemeIcon('file-code');
725730
}
726731
}

0 commit comments

Comments
 (0)