Skip to content

Commit 666f557

Browse files
committed
fix: consider basePath when generating presenter URLs
1 parent fa85375 commit 666f557

File tree

2 files changed

+39
-2
lines changed

2 files changed

+39
-2
lines changed

packages/client/logic/slides.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,9 @@ export function getSlidePath(
2020
if (typeof route === 'number' || typeof route === 'string')
2121
route = getSlide(route)!
2222
const no = route.meta.slide?.frontmatter.routeAlias ?? route.no
23-
return exporting ? `/export/${no}` : presenter ? `/presenter/${no}` : `/${no}`
23+
const basePath = import.meta.env.BASE_URL.replace(/\/$/, '') ?? ''
24+
const path = exporting ? `/export/${no}` : presenter ? `/presenter/${no}` : `/${no}`
25+
return `${basePath}${path}`
2426
}
2527

2628
export function useIsSlideActive() {

test/utils.test.ts

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
import type { ResolvedFontOptions, SlideInfo } from '@slidev/types'
1+
import type { ResolvedFontOptions, SlideInfo, SlideRoute } from '@slidev/types'
22
import { relative, resolve } from 'node:path'
33
import { slash } from '@antfu/utils'
4+
import { getSlidePath } from '@slidev/client/logic/slides'
45
import MarkdownIt from 'markdown-it'
56
import { describe, expect, it } from 'vitest'
67
import YAML from 'yaml'
@@ -145,4 +146,38 @@ describe('utils', () => {
145146
"
146147
`)
147148
})
149+
150+
it('getSlidePath with base path', () => {
151+
// Mock import.meta.env.BASE_URL
152+
const originalBaseUrl = import.meta.env.BASE_URL
153+
154+
// Test with base path
155+
import.meta.env.BASE_URL = '/my_monorepo/my_prez/'
156+
157+
const mockRoute: SlideRoute = {
158+
no: 2,
159+
meta: {
160+
slide: {
161+
frontmatter: {},
162+
},
163+
},
164+
}
165+
166+
expect(getSlidePath(mockRoute, false, false)).toBe(
167+
'/my_monorepo/my_prez/2',
168+
)
169+
expect(getSlidePath(mockRoute, true, false)).toBe(
170+
'/my_monorepo/my_prez/presenter/2',
171+
)
172+
expect(getSlidePath(mockRoute, false, true)).toBe(
173+
'/my_monorepo/my_prez/export/2',
174+
)
175+
176+
// Test with root path
177+
import.meta.env.BASE_URL = '/'
178+
expect(getSlidePath(mockRoute, false, false)).toBe('/2')
179+
180+
// Restore original
181+
import.meta.env.BASE_URL = originalBaseUrl
182+
})
148183
})

0 commit comments

Comments
 (0)