Skip to content

Commit e4b4248

Browse files
committed
Add helper for getting a query variable's value
1 parent 293962a commit e4b4248

File tree

3 files changed

+16
-3
lines changed

3 files changed

+16
-3
lines changed

src/extension.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
handleInspectCommand,
1212
handleShowLogsCommand,
1313
} from "./logs"
14-
import { context, debug } from "./utils"
14+
import { context, debug, getQueryValue } from "./utils"
1515
import {
1616
CoderWorkspacesProvider,
1717
rebuildWorkspace,
@@ -43,8 +43,7 @@ export const uriHandler: vscode.UriHandler = {
4343
debug(`Handling URI: ${uri}`)
4444
switch (action) {
4545
case "open-workspace": {
46-
const version = Array.isArray(query.version) ? query.version[0] : query.version
47-
return preflight(version).then(() => openWorkspace(resource))
46+
return preflight(getQueryValue(query.version)).then(() => openWorkspace(resource))
4847
}
4948
default:
5049
vscode.window.showErrorMessage(`Unknown action "${action}"`)

src/utils.test.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,4 +86,11 @@ suite("Utils", () => {
8686
assert.strictEqual(content2, "archive content\n")
8787
}
8888
})
89+
90+
test("getQueryValue", () => {
91+
assert.strictEqual(utils.getQueryValue(undefined), undefined)
92+
assert.strictEqual(utils.getQueryValue("foo"), "foo")
93+
assert.strictEqual(utils.getQueryValue(["bar"]), "bar")
94+
assert.strictEqual(utils.getQueryValue(["bazzle", "qux"]), "bazzle")
95+
})
8996
})

src/utils.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -204,3 +204,10 @@ export const getAssetUrl = (version: string): string => {
204204
? `https://github.com/cdr/coder-cli/releases/${version}/download/${assetFilename}`
205205
: `https://github.com/cdr/coder-cli/releases/download/${version}/${assetFilename}`
206206
}
207+
208+
/**
209+
* Get the first or only value from a query parameter.
210+
*/
211+
export const getQueryValue = (val: string[] | string | undefined): string | undefined => {
212+
return Array.isArray(val) ? val[0] : val
213+
}

0 commit comments

Comments
 (0)