diff --git a/site/src/util/workspace.test.ts b/site/src/util/workspace.test.ts index 3813f1ab50411..bc740beb1b4fe 100644 --- a/site/src/util/workspace.test.ts +++ b/site/src/util/workspace.test.ts @@ -71,6 +71,7 @@ describe("util > workspace", () => { ["owner:me", { owner: "me" }], ["owner:me owner:me2", { owner: "me" }], ["me/dev", { owner: "me", name: "dev" }], + ["me/", { owner: "me" }], [" key:val owner:me ", { owner: "me" }], ])(`query=%p, filter=%p`, (query, filter) => { expect(workspaceQueryToFilter(query)).toEqual(filter) diff --git a/site/src/util/workspace.ts b/site/src/util/workspace.ts index 44dec857ab3d8..8ed7b2347d60a 100644 --- a/site/src/util/workspace.ts +++ b/site/src/util/workspace.ts @@ -218,24 +218,27 @@ export const workspaceQueryToFilter = (query?: string): TypesGen.WorkspaceFilter const parts = preparedQuery.split(" ") for (const part of parts) { - const [key, val] = part.split(":") - if (key && val) { - if (key === "owner") { - return { - owner: val, + if (part.includes(":")) { + const [key, val] = part.split(":") + if (key && val) { + if (key === "owner") { + return { + owner: val, + } } + // skip invalid key pairs + continue } - // skip invalid key pairs - continue } - const [username, name] = part.split("/") - if (username && name) { + if (part.includes("/")) { + const [username, name] = part.split("/") return { owner: username, - name: name, + name: name === "" ? undefined : name, } } + return { name: part, }