diff --git a/apps/dotcom-worker/src/lib/TLDrawDurableObject.ts b/apps/dotcom-worker/src/lib/TLDrawDurableObject.ts
index bb7c720b2..af2dfd5e0 100644
--- a/apps/dotcom-worker/src/lib/TLDrawDurableObject.ts
+++ b/apps/dotcom-worker/src/lib/TLDrawDurableObject.ts
@@ -97,22 +97,22 @@ export class TLDrawDurableObject extends TLServer {
readonly router = Router()
.get(
- `${ROOM_PREFIX}/:roomId`,
+ `/${ROOM_PREFIX}/:roomId`,
(req) => this.extractDocumentInfoFromRequest(req, ROOM_OPEN_MODE.READ_WRITE),
(req) => this.onRequest(req)
)
.get(
- `${READ_ONLY_LEGACY_PREFIX}/:roomId`,
+ `/${READ_ONLY_LEGACY_PREFIX}/:roomId`,
(req) => this.extractDocumentInfoFromRequest(req, ROOM_OPEN_MODE.READ_ONLY_LEGACY),
(req) => this.onRequest(req)
)
.get(
- `${READ_ONLY_PREFIX}/:roomId`,
+ `/${READ_ONLY_PREFIX}/:roomId`,
(req) => this.extractDocumentInfoFromRequest(req, ROOM_OPEN_MODE.READ_ONLY),
(req) => this.onRequest(req)
)
.post(
- `${ROOM_PREFIX}/:roomId/restore`,
+ `/${ROOM_PREFIX}/:roomId/restore`,
(req) => this.extractDocumentInfoFromRequest(req, ROOM_OPEN_MODE.READ_WRITE),
(req) => this.onRestore(req)
)
diff --git a/apps/dotcom-worker/src/lib/routes/forwardRoomRequest.ts b/apps/dotcom-worker/src/lib/routes/forwardRoomRequest.ts
index 697d35760..350c445f3 100644
--- a/apps/dotcom-worker/src/lib/routes/forwardRoomRequest.ts
+++ b/apps/dotcom-worker/src/lib/routes/forwardRoomRequest.ts
@@ -12,6 +12,6 @@ export async function forwardRoomRequest(request: IRequest, env: Environment): P
if (isRoomIdTooLong(roomId)) return roomIdIsTooLong()
// Set up the durable object for this room
- const id = env.TLDR_DOC.idFromName(`${ROOM_PREFIX}/${roomId}`)
+ const id = env.TLDR_DOC.idFromName(`/${ROOM_PREFIX}/${roomId}`)
return env.TLDR_DOC.get(id).fetch(request)
}
diff --git a/apps/dotcom-worker/src/lib/routes/joinExistingRoom.ts b/apps/dotcom-worker/src/lib/routes/joinExistingRoom.ts
index 2d6225fcd..eab25c614 100644
--- a/apps/dotcom-worker/src/lib/routes/joinExistingRoom.ts
+++ b/apps/dotcom-worker/src/lib/routes/joinExistingRoom.ts
@@ -17,7 +17,7 @@ export async function joinExistingRoom(
// This needs to be a websocket request!
if (request.headers.get('upgrade')?.toLowerCase() === 'websocket') {
// Set up the durable object for this room
- const id = env.TLDR_DOC.idFromName(`${ROOM_PREFIX}/${roomId}`)
+ const id = env.TLDR_DOC.idFromName(`/${ROOM_PREFIX}/${roomId}`)
return env.TLDR_DOC.get(id).fetch(request)
}
diff --git a/apps/dotcom-worker/src/lib/worker.ts b/apps/dotcom-worker/src/lib/worker.ts
index 2fd69f50f..88bbc4e9e 100644
--- a/apps/dotcom-worker/src/lib/worker.ts
+++ b/apps/dotcom-worker/src/lib/worker.ts
@@ -31,19 +31,19 @@ const router = Router()
.post('/new-room', createRoom)
.post('/snapshots', createRoomSnapshot)
.get('/snapshot/:roomId', getRoomSnapshot)
- .get(`${ROOM_PREFIX}/:roomId`, (req, env) =>
+ .get(`/${ROOM_PREFIX}/:roomId`, (req, env) =>
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_WRITE)
)
- .get(`${READ_ONLY_LEGACY_PREFIX}/:roomId`, (req, env) =>
+ .get(`/${READ_ONLY_LEGACY_PREFIX}/:roomId`, (req, env) =>
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_ONLY_LEGACY)
)
- .get(`${READ_ONLY_PREFIX}/:roomId`, (req, env) =>
+ .get(`/${READ_ONLY_PREFIX}/:roomId`, (req, env) =>
joinExistingRoom(req, env, ROOM_OPEN_MODE.READ_ONLY)
)
- .get(`${ROOM_PREFIX}/:roomId/history`, getRoomHistory)
- .get(`${ROOM_PREFIX}/:roomId/history/:timestamp`, getRoomHistorySnapshot)
+ .get(`/${ROOM_PREFIX}/:roomId/history`, getRoomHistory)
+ .get(`/${ROOM_PREFIX}/:roomId/history/:timestamp`, getRoomHistorySnapshot)
.get('/readonly-slug/:roomId', getReadonlySlug)
- .post(`${ROOM_PREFIX}/:roomId/restore`, forwardRoomRequest)
+ .post(`/${ROOM_PREFIX}/:roomId/restore`, forwardRoomRequest)
.all('*', fourOhFour)
const Worker = {
diff --git a/apps/dotcom/src/components/BoardHistorySnapshot/BoardHistorySnapshot.tsx b/apps/dotcom/src/components/BoardHistorySnapshot/BoardHistorySnapshot.tsx
index 0b5214aed..e8a07d470 100644
--- a/apps/dotcom/src/components/BoardHistorySnapshot/BoardHistorySnapshot.tsx
+++ b/apps/dotcom/src/components/BoardHistorySnapshot/BoardHistorySnapshot.tsx
@@ -32,7 +32,7 @@ export function BoardHistorySnapshot({
const sure = window.confirm('Are you sure?')
if (!sure) return
- const res = await fetch(`/api${ROOM_PREFIX}/${roomId}/restore`, {
+ const res = await fetch(`/api/${ROOM_PREFIX}/${roomId}/restore`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
diff --git a/apps/dotcom/src/components/ShareMenu.tsx b/apps/dotcom/src/components/ShareMenu.tsx
index 5cbbb7dc0..65a229703 100644
--- a/apps/dotcom/src/components/ShareMenu.tsx
+++ b/apps/dotcom/src/components/ShareMenu.tsx
@@ -44,7 +44,7 @@ function isSharedReadonlyUrl(pathname: string) {
}
function isSharedReadWriteUrl(pathname: string) {
- return pathname.startsWith(`${ROOM_PREFIX}/`)
+ return pathname.startsWith(`/${ROOM_PREFIX}/`)
}
function getFreshShareState(): ShareState {
diff --git a/apps/dotcom/src/pages/history-snapshot.tsx b/apps/dotcom/src/pages/history-snapshot.tsx
index e9c100fa8..90d861608 100644
--- a/apps/dotcom/src/pages/history-snapshot.tsx
+++ b/apps/dotcom/src/pages/history-snapshot.tsx
@@ -12,7 +12,7 @@ const { loader, useData } = defineLoader(async (args) => {
if (!roomId) return null
- const result = await fetch(`/api${ROOM_PREFIX}/${roomId}/history/${timestamp}`, {
+ const result = await fetch(`/api/${ROOM_PREFIX}/${roomId}/history/${timestamp}`, {
headers: {},
})
if (!result.ok) return null
diff --git a/apps/dotcom/src/pages/history.tsx b/apps/dotcom/src/pages/history.tsx
index 977792a9f..cbe37b800 100644
--- a/apps/dotcom/src/pages/history.tsx
+++ b/apps/dotcom/src/pages/history.tsx
@@ -9,7 +9,7 @@ const { loader, useData } = defineLoader(async (args) => {
if (!boardId) return null
- const result = await fetch(`/api${ROOM_PREFIX}/${boardId}/history`, {
+ const result = await fetch(`/api/${ROOM_PREFIX}/${boardId}/history`, {
headers: {},
})
if (!result.ok) return null
diff --git a/apps/dotcom/src/pages/new.tsx b/apps/dotcom/src/pages/new.tsx
index 8ac9c98ff..6dd611b07 100644
--- a/apps/dotcom/src/pages/new.tsx
+++ b/apps/dotcom/src/pages/new.tsx
@@ -36,5 +36,5 @@ export function Component() {
}}
/>
)
- return
+ return
}
diff --git a/apps/dotcom/src/routes.tsx b/apps/dotcom/src/routes.tsx
index 30f80afef..9789aa0e3 100644
--- a/apps/dotcom/src/routes.tsx
+++ b/apps/dotcom/src/routes.tsx
@@ -1,7 +1,7 @@
import { captureException } from '@sentry/react'
import { READ_ONLY_LEGACY_PREFIX, READ_ONLY_PREFIX, ROOM_PREFIX } from '@tldraw/dotcom-shared'
import { useEffect } from 'react'
-import { createRoutesFromElements, Outlet, Route, useRouteError } from 'react-router-dom'
+import { Outlet, Route, createRoutesFromElements, useRouteError } from 'react-router-dom'
import { DefaultErrorFallback } from './components/DefaultErrorFallback/DefaultErrorFallback'
import { ErrorPage } from './components/ErrorPage/ErrorPage'
@@ -30,20 +30,20 @@ export const router = createRoutesFromElements(
>
}>
import('./pages/root')} />
- import('./pages/new')} />
+ import('./pages/new')} />
import('./pages/new')} />
- import('./pages/public-multiplayer')} />
- import('./pages/history')} />
+ import('./pages/public-multiplayer')} />
+ import('./pages/history')} />
import('./pages/history-snapshot')}
/>
import('./pages/public-snapshot')} />
import('./pages/public-readonly-legacy')}
/>
- import('./pages/public-readonly')} />
+ import('./pages/public-readonly')} />
import('./pages/not-found')} />
diff --git a/apps/dotcom/src/utils/sharing.ts b/apps/dotcom/src/utils/sharing.ts
index 64ba07bc1..d562a6820 100644
--- a/apps/dotcom/src/utils/sharing.ts
+++ b/apps/dotcom/src/utils/sharing.ts
@@ -133,7 +133,7 @@ export function useSharing(): TLUiOverrides {
const query = getViewportUrlQuery(editor)
const origin = window.location.origin
- const pathname = `${ROOM_PREFIX}/${response.slug}?${new URLSearchParams(query ?? {}).toString()}`
+ const pathname = `/${ROOM_PREFIX}/${response.slug}?${new URLSearchParams(query ?? {}).toString()}`
if (runningInIFrame) {
window.open(`${origin}${pathname}`)
} else {
diff --git a/packages/dotcom-shared/src/routes.ts b/packages/dotcom-shared/src/routes.ts
index 0f4bd9ea3..6107ba470 100644
--- a/packages/dotcom-shared/src/routes.ts
+++ b/packages/dotcom-shared/src/routes.ts
@@ -7,11 +7,11 @@ export const ROOM_OPEN_MODE = {
export type RoomOpenMode = (typeof ROOM_OPEN_MODE)[keyof typeof ROOM_OPEN_MODE]
/** @public */
-export const READ_ONLY_PREFIX = '/ro'
+export const READ_ONLY_PREFIX = 'ro'
/** @public */
-export const READ_ONLY_LEGACY_PREFIX = '/v'
+export const READ_ONLY_LEGACY_PREFIX = 'v'
/** @public */
-export const ROOM_PREFIX = '/r'
+export const ROOM_PREFIX = 'r'
/** @public */
export const RoomOpenModeToPath: Record = {