diff --git a/shared/utils/parseDocumentSlug.test.ts b/shared/utils/parseDocumentSlug.test.ts index 296e946ba..a1122e752 100644 --- a/shared/utils/parseDocumentSlug.test.ts +++ b/shared/utils/parseDocumentSlug.test.ts @@ -1,5 +1,8 @@ +import sharedEnv from "@shared/env"; import parseDocumentSlug from "./parseDocumentSlug"; +sharedEnv.URL = "https://app.outline.dev"; + describe("#parseDocumentSlug", () => { it("should work with fully qualified url", () => { expect( @@ -34,4 +37,10 @@ describe("#parseDocumentSlug", () => { "my-doc-y4j4tR4UuV" ); }); + + it("should work with path and hash", () => { + expect(parseDocumentSlug("/doc/my-doc-y4j4tR4UuV#my-heading-hash")).toEqual( + "my-doc-y4j4tR4UuV" + ); + }); }); diff --git a/shared/utils/parseDocumentSlug.ts b/shared/utils/parseDocumentSlug.ts index 4e9b49b55..b1174a9ef 100644 --- a/shared/utils/parseDocumentSlug.ts +++ b/shared/utils/parseDocumentSlug.ts @@ -1,3 +1,5 @@ +import sharedEnv from "@shared/env"; + /** * Parse the likely document identifier from a given url. * @@ -8,13 +10,13 @@ export default function parseDocumentSlug(url: string) { let parsed; if (url[0] === "/") { - parsed = url; - } else { - try { - parsed = new URL(url).pathname; - } catch (err) { - return; - } + url = `${sharedEnv.URL}${url}`; + } + + try { + parsed = new URL(url).pathname; + } catch (err) { + return; } const split = parsed.split("/");