Skip to content

Commit cee75f3

Browse files
committed
fix: add additional checks for visualEditing type narrowing
1 parent c675cc5 commit cee75f3

3 files changed

Lines changed: 10 additions & 6 deletions

File tree

src/runtime/plugins/visual-editing.server.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,10 @@ export default defineNuxtPlugin(() => {
1313
// editing is enabled.
1414
if (visualEditing?.previewMode) {
1515
const previewModeCookie = useCookie('__sanity_preview')
16-
visualEditingState.enabled = previewModeCookie.value === visualEditing.previewModeId
16+
visualEditingState.enabled = 'previewModeId' in visualEditing && previewModeCookie.value === visualEditing.previewModeId
1717
// If preview mode is _not_ configured, just enable visual editing.
1818
}
19-
else if (typeof visualEditing === 'object' && !visualEditing.previewMode) {
19+
else if (visualEditing && typeof visualEditing === 'object' && (!('previewMode' in visualEditing) || !visualEditing.previewMode)) {
2020
visualEditingState.enabled = true
2121
}
2222
})

src/runtime/server/routes/preview/enable.ts

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ export default defineEventHandler(async (event) => {
1111
const sanityConfig = import.meta.client ? $config.public.sanity : defu($config.sanity, $config.public.sanity)
1212

1313
const client = sanity.client.withConfig({
14-
token: sanityConfig.visualEditing!.token,
14+
token: sanityConfig.visualEditing && 'token' in sanityConfig.visualEditing ? sanityConfig.visualEditing.token : undefined,
1515
})
1616

1717
const { isValid, redirectTo = '/' } = await validatePreviewUrl(
@@ -26,7 +26,11 @@ export default defineEventHandler(async (event) => {
2626
})
2727
}
2828

29-
setCookie(event, '__sanity_preview', sanityConfig.visualEditing!.previewModeId, {
29+
const id = sanityConfig.visualEditing && 'previewModeId' in sanityConfig.visualEditing
30+
? sanityConfig.visualEditing.previewModeId
31+
: undefined as never
32+
33+
setCookie(event, '__sanity_preview', id, {
3034
httpOnly: true,
3135
sameSite: !import.meta.dev ? 'none' : 'lax',
3236
secure: !import.meta.dev,

src/runtime/server/routes/proxy.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,15 @@ export default defineEventHandler(async (event) => {
1212

1313
const { visualEditing } = import.meta.client ? $config.public.sanity : defu($config.sanity, $config.public.sanity)
1414

15-
if (!visualEditing || previewModeCookie !== visualEditing.previewModeId) {
15+
if (!visualEditing || !('previewModeId' in visualEditing) || previewModeCookie !== visualEditing.previewModeId) {
1616
throw createError({
1717
statusCode: 400,
1818
statusMessage: 'This endpoint should only be used for fetching preview mode data',
1919
})
2020
}
2121

2222
const client = sanity.client.withConfig({
23-
token: visualEditing.token,
23+
token: visualEditing && 'token' in visualEditing ? visualEditing.token : undefined,
2424
useCdn: false,
2525
})
2626

0 commit comments

Comments
 (0)