Skip to content

Commit 01f4743

Browse files
committed
Add open recent option to VS Code desktop
1 parent dcd605c commit 01f4743

File tree

2 files changed

+34
-11
lines changed

2 files changed

+34
-11
lines changed

vscode-desktop/main.test.ts

+23-1
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,35 @@ describe("vscode-desktop", async () => {
1818
agent_id: "foo",
1919
});
2020
expect(state.outputs.vscode_url.value).toBe(
21-
"vscode://coder.coder-remote/open?owner=default&workspace=default&token=$SESSION_TOKEN",
21+
"vscode://coder.coder-remote/open?owner=default&workspace=default&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
2222
);
2323

2424
const resources: any = state.resources;
2525
expect(resources[1].instances[0].attributes.order).toBeNull();
2626
});
2727

28+
it("opens recent", async () => {
29+
const state = await runTerraformApply(import.meta.dir, {
30+
agent_id: "foo",
31+
folder: "/foo/bar",
32+
open_recent: true,
33+
});
34+
expect(state.outputs.vscode_url.value).toBe(
35+
"vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&openRecent&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
36+
);
37+
});
38+
39+
it("does not open recent", async () => {
40+
const state = await runTerraformApply(import.meta.dir, {
41+
agent_id: "foo",
42+
folder: "/foo/bar",
43+
openRecent: false,
44+
});
45+
expect(state.outputs.vscode_url.value).toBe(
46+
"vscode://coder.coder-remote/open?owner=default&workspace=default&folder=/foo/bar&url=https://mydeployment.coder.com&token=$SESSION_TOKEN",
47+
);
48+
});
49+
2850
it("expect order to be set", async () => {
2951
const state = await runTerraformApply(import.meta.dir, {
3052
agent_id: "foo",

vscode-desktop/main.tf

+11-10
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,12 @@ variable "folder" {
2020
default = ""
2121
}
2222

23+
variable "open_recent" {
24+
type = bool
25+
description = "Open the most recent workspace or folder. Falls back to the folder if there is no recent workspace or folder to open."
26+
default = false
27+
}
28+
2329
variable "order" {
2430
type = number
2531
description = "The order determines the position of app in the UI presentation. The lowest order is shown first and apps with equal order are sorted by name (ascending order)."
@@ -35,22 +41,17 @@ resource "coder_app" "vscode" {
3541
slug = "vscode"
3642
display_name = "VS Code Desktop"
3743
order = var.order
38-
url = var.folder != "" ? join("", [
39-
"vscode://coder.coder-remote/open?owner=",
44+
url = join("", [
45+
"vscode://coder.coder-remote/open",
46+
"?owner=",
4047
data.coder_workspace.me.owner,
4148
"&workspace=",
4249
data.coder_workspace.me.name,
43-
"&folder=",
44-
var.folder,
50+
var.folder != "" ? join("", ["&folder=", var.folder]) : "",
51+
var.open_recent ? "&openRecent" : "",
4552
"&url=",
4653
data.coder_workspace.me.access_url,
4754
"&token=$SESSION_TOKEN",
48-
]) : join("", [
49-
"vscode://coder.coder-remote/open?owner=",
50-
data.coder_workspace.me.owner,
51-
"&workspace=",
52-
data.coder_workspace.me.name,
53-
"&token=$SESSION_TOKEN",
5455
])
5556
}
5657

0 commit comments

Comments
 (0)