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 = {