diff --git a/.changeset/brown-avocados-dream.md b/.changeset/brown-avocados-dream.md new file mode 100644 index 00000000000..90aacc3970c --- /dev/null +++ b/.changeset/brown-avocados-dream.md @@ -0,0 +1,12 @@ +--- +"@builder.io/sdk-angular": patch +"@builder.io/sdk-react-nextjs": patch +"@builder.io/sdk-qwik": patch +"@builder.io/sdk-react": patch +"@builder.io/sdk-react-native": patch +"@builder.io/sdk-solid": patch +"@builder.io/sdk-svelte": patch +"@builder.io/sdk-vue": patch +--- + +docs: document `getBuilderSearchParams` and `isPreviewing` diff --git a/packages/sdks/e2e/angular-16-ssr/src/app/app.resolver.ts b/packages/sdks/e2e/angular-16-ssr/src/app/app.resolver.ts index e4ffbdb5b67..4c187b8767c 100644 --- a/packages/sdks/e2e/angular-16-ssr/src/app/app.resolver.ts +++ b/packages/sdks/e2e/angular-16-ssr/src/app/app.resolver.ts @@ -1,19 +1,13 @@ import type { ActivatedRouteSnapshot, ResolveFn } from '@angular/router'; -import { - _processContentResult, - fetchOneEntry, - getBuilderSearchParams, -} from '@builder.io/sdk-angular'; +import { _processContentResult, fetchOneEntry } from '@builder.io/sdk-angular'; import { getProps } from '@sdk/tests'; export const appResolver: ResolveFn = (route: ActivatedRouteSnapshot) => { const urlPath = `/${route.url.join('/')}`; - const searchParams = getBuilderSearchParams(route.queryParams); return getProps({ pathname: urlPath, _processContentResult, - options: searchParams, fetchOneEntry, }); }; diff --git a/packages/sdks/e2e/angular-16/src/app/app.component.ts b/packages/sdks/e2e/angular-16/src/app/app.component.ts index 184bfb17bed..1a7646e6dab 100644 --- a/packages/sdks/e2e/angular-16/src/app/app.component.ts +++ b/packages/sdks/e2e/angular-16/src/app/app.component.ts @@ -2,7 +2,6 @@ import { Component } from '@angular/core'; import { _processContentResult, fetchOneEntry, - getBuilderSearchParams, type RegisteredComponent, } from '@builder.io/sdk-angular'; import { getProps } from '@sdk/tests'; @@ -62,9 +61,6 @@ export class AppComponent { const builderProps = await getProps({ pathname: urlPath, _processContentResult, - options: getBuilderSearchParams( - new URLSearchParams(window.location.search) - ), fetchOneEntry, }); diff --git a/packages/sdks/e2e/angular-19-ssr/src/app/catch-all.component.ts b/packages/sdks/e2e/angular-19-ssr/src/app/catch-all.component.ts index 90901232e10..da67c74a42c 100644 --- a/packages/sdks/e2e/angular-19-ssr/src/app/catch-all.component.ts +++ b/packages/sdks/e2e/angular-19-ssr/src/app/catch-all.component.ts @@ -7,7 +7,6 @@ import { Content, _processContentResult, fetchOneEntry, - getBuilderSearchParams, type RegisteredComponent, } from '@builder.io/sdk-angular'; import { getProps } from '@sdk/tests'; @@ -94,7 +93,6 @@ export class CatchAllComponent { const builderProps = await getProps({ pathname: urlPath, _processContentResult, - options: getBuilderSearchParams(searchParams), fetchOneEntry: (args) => { return fetchOneEntry({ ...args, diff --git a/packages/sdks/e2e/nextjs-sdk-next-app/src/app/[[...slug]]/page.tsx b/packages/sdks/e2e/nextjs-sdk-next-app/src/app/[[...slug]]/page.tsx index 5e04b42a490..a8af36fcefd 100644 --- a/packages/sdks/e2e/nextjs-sdk-next-app/src/app/[[...slug]]/page.tsx +++ b/packages/sdks/e2e/nextjs-sdk-next-app/src/app/[[...slug]]/page.tsx @@ -5,7 +5,6 @@ import { Content, _processContentResult, fetchOneEntry, - getBuilderSearchParams, } from '@builder.io/sdk-react-nextjs'; import { getProps } from '@sdk/tests'; import MyTextBox from '../../components/MyTextBox/MyTextBox'; @@ -73,7 +72,6 @@ export default async function Page(props: MyPageProps) { const builderProps = await getProps({ pathname: urlPath, _processContentResult, - options: getBuilderSearchParams(props.searchParams), fetchOneEntry, }); diff --git a/packages/sdks/e2e/qwik-city/src/routes/[...index]/index.tsx b/packages/sdks/e2e/qwik-city/src/routes/[...index]/index.tsx index 8216eef61ae..204c22fb1ef 100644 --- a/packages/sdks/e2e/qwik-city/src/routes/[...index]/index.tsx +++ b/packages/sdks/e2e/qwik-city/src/routes/[...index]/index.tsx @@ -59,6 +59,7 @@ export const useBuilderContentLoader = routeLoader$(async (event) => { export default component$(() => { const contentProps = useBuilderContentLoader(); + return ( <> {contentProps.value.addTopPadding && ( diff --git a/packages/sdks/e2e/react-sdk-next-14-app/src/app/[[...slug]]/page.tsx b/packages/sdks/e2e/react-sdk-next-14-app/src/app/[[...slug]]/page.tsx index e7424dc0a9e..182b3dce06f 100644 --- a/packages/sdks/e2e/react-sdk-next-14-app/src/app/[[...slug]]/page.tsx +++ b/packages/sdks/e2e/react-sdk-next-14-app/src/app/[[...slug]]/page.tsx @@ -3,7 +3,6 @@ import { Content, _processContentResult, fetchOneEntry, - getBuilderSearchParams, } from '@builder.io/sdk-react'; import { getProps } from '@sdk/tests'; @@ -63,7 +62,6 @@ export default async function Page(props: PageProps) { const builderProps = await getProps({ pathname: urlPath, _processContentResult, - options: getBuilderSearchParams(props.searchParams), fetchOneEntry, }); diff --git a/packages/sdks/e2e/react-sdk-next-15-app/src/app/[[...slug]]/page.tsx b/packages/sdks/e2e/react-sdk-next-15-app/src/app/[[...slug]]/page.tsx index cf982b07aac..8384512b08e 100644 --- a/packages/sdks/e2e/react-sdk-next-15-app/src/app/[[...slug]]/page.tsx +++ b/packages/sdks/e2e/react-sdk-next-15-app/src/app/[[...slug]]/page.tsx @@ -4,7 +4,6 @@ import { Content, _processContentResult, fetchOneEntry, - getBuilderSearchParams, } from '@builder.io/sdk-react'; import { getProps } from '@sdk/tests'; @@ -22,7 +21,6 @@ export default async function Page(props: PageProps) { const builderProps = await getProps({ pathname: urlPath, _processContentResult, - options: getBuilderSearchParams(await props.searchParams), fetchOneEntry, }); diff --git a/packages/sdks/snippets/angular-16-ssr/src/app/announcement-bar/announcement-bar.resolver.ts b/packages/sdks/snippets/angular-16-ssr/src/app/announcement-bar/announcement-bar.resolver.ts index 952ce2e111b..5c01e1b544d 100644 --- a/packages/sdks/snippets/angular-16-ssr/src/app/announcement-bar/announcement-bar.resolver.ts +++ b/packages/sdks/snippets/angular-16-ssr/src/app/announcement-bar/announcement-bar.resolver.ts @@ -1,11 +1,10 @@ import type { ActivatedRouteSnapshot, ResolveFn } from '@angular/router'; -import { fetchOneEntry, getBuilderSearchParams } from '@builder.io/sdk-angular'; +import { fetchOneEntry } from '@builder.io/sdk-angular'; export const announcementBarResolver: ResolveFn = ( route: ActivatedRouteSnapshot ) => { const urlPath = `/${route.url.join('/')}`; - const searchParams = getBuilderSearchParams(route.queryParams); return fetchOneEntry({ apiKey: 'ee9f13b4981e489a9a1209887695ef2b', @@ -13,6 +12,5 @@ export const announcementBarResolver: ResolveFn = ( userAttributes: { urlPath, }, - options: searchParams, }); }; diff --git a/packages/sdks/snippets/hydrogen/app/components/AnnouncementBarPage.tsx b/packages/sdks/snippets/hydrogen/app/components/AnnouncementBarPage.tsx index 911884f94f6..225c2a19632 100644 --- a/packages/sdks/snippets/hydrogen/app/components/AnnouncementBarPage.tsx +++ b/packages/sdks/snippets/hydrogen/app/components/AnnouncementBarPage.tsx @@ -3,11 +3,7 @@ * snippets/hydrogen/app/components/AnnouncementBarPage.tsx */ -import { - Content, - fetchOneEntry, - getBuilderSearchParams, -} from '@builder.io/sdk-react'; +import {Content, fetchOneEntry} from '@builder.io/sdk-react'; import type {LoaderFunction} from '@remix-run/node'; import {useLoaderData} from '@remix-run/react'; import {useNonce} from '@shopify/hydrogen'; @@ -29,7 +25,6 @@ export const announcementsLoader: LoaderFunction = async ({ userAttributes: { urlPath: pathname, }, - options: getBuilderSearchParams(url.searchParams), }); return {content, model}; diff --git a/packages/sdks/snippets/hydrogen/app/components/app.tsx b/packages/sdks/snippets/hydrogen/app/components/app.tsx index 67dc4edc666..25e0b23ce6b 100644 --- a/packages/sdks/snippets/hydrogen/app/components/app.tsx +++ b/packages/sdks/snippets/hydrogen/app/components/app.tsx @@ -26,7 +26,6 @@ export const builderLoader: LoaderFunction = async ({params, request}) => { userAttributes: { urlPath: pathname, }, - options: getBuilderSearchParams(url.searchParams), }); return {content, model}; } catch (e) { diff --git a/packages/sdks/snippets/nextjs-sdk-next-app/app/[[...slug]]/page.tsx b/packages/sdks/snippets/nextjs-sdk-next-app/app/[[...slug]]/page.tsx index 655f96e0665..68ea91c14a3 100644 --- a/packages/sdks/snippets/nextjs-sdk-next-app/app/[[...slug]]/page.tsx +++ b/packages/sdks/snippets/nextjs-sdk-next-app/app/[[...slug]]/page.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isPreviewing, } from '@builder.io/sdk-react-nextjs'; @@ -23,7 +22,6 @@ export default async function Page(props: PageProps) { const urlPath = '/' + (props.params?.slug?.join('/') || ''); const content = await fetchOneEntry({ - options: getBuilderSearchParams(props.searchParams), apiKey: PUBLIC_API_KEY, model: 'page', userAttributes: { urlPath }, diff --git a/packages/sdks/snippets/nextjs-sdk-next-app/app/announcements/[...slug]/page.tsx b/packages/sdks/snippets/nextjs-sdk-next-app/app/announcements/[...slug]/page.tsx index 14f90f35db5..a25887e0851 100644 --- a/packages/sdks/snippets/nextjs-sdk-next-app/app/announcements/[...slug]/page.tsx +++ b/packages/sdks/snippets/nextjs-sdk-next-app/app/announcements/[...slug]/page.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isEditing, isPreviewing, } from '@builder.io/sdk-react-nextjs'; @@ -27,7 +26,7 @@ export default async function Page(props: PageProps) { const content = await fetchOneEntry({ apiKey, model, - options: getBuilderSearchParams(props.searchParams), + userAttributes: { urlPath }, }); diff --git a/packages/sdks/snippets/nuxt/pages/[...app].vue b/packages/sdks/snippets/nuxt/pages/[...app].vue index ff00915bd60..d610881ef21 100644 --- a/packages/sdks/snippets/nuxt/pages/[...app].vue +++ b/packages/sdks/snippets/nuxt/pages/[...app].vue @@ -22,7 +22,7 @@ const { data: content } = await useAsyncData( fetchOneEntry({ model, apiKey, - options: getBuilderSearchParams(route.query), + userAttributes: { urlPath: route.path }, }) ); diff --git a/packages/sdks/snippets/nuxt/pages/announcements/[...app].vue b/packages/sdks/snippets/nuxt/pages/announcements/[...app].vue index 5c1473c41a5..670e45e69a0 100644 --- a/packages/sdks/snippets/nuxt/pages/announcements/[...app].vue +++ b/packages/sdks/snippets/nuxt/pages/announcements/[...app].vue @@ -23,7 +23,7 @@ const { data: announcement } = await useAsyncData( fetchOneEntry({ model, apiKey, - options: getBuilderSearchParams(route.query), + userAttributes: { urlPath: route.path }, }) ); diff --git a/packages/sdks/snippets/qwik-city/src/routes/[...index]/index.tsx b/packages/sdks/snippets/qwik-city/src/routes/[...index]/index.tsx index 88f8d082b06..5913f15cff7 100644 --- a/packages/sdks/snippets/qwik-city/src/routes/[...index]/index.tsx +++ b/packages/sdks/snippets/qwik-city/src/routes/[...index]/index.tsx @@ -4,11 +4,7 @@ */ import { component$ } from '@builder.io/qwik'; import { routeLoader$ } from '@builder.io/qwik-city'; -import { - Content, - fetchOneEntry, - getBuilderSearchParams, -} from '@builder.io/sdk-qwik'; +import { Content, fetchOneEntry } from '@builder.io/sdk-qwik'; // Define Builder's public API key and content model. // TO DO: Replace with your Public API Key @@ -22,7 +18,6 @@ export const useBuilderContent = routeLoader$(async ({ url }) => { const builderContent = await fetchOneEntry({ model: BUILDER_MODEL, apiKey: BUILDER_PUBLIC_API_KEY, - options: getBuilderSearchParams(url.searchParams), userAttributes: { urlPath: url.pathname, }, diff --git a/packages/sdks/snippets/qwik-city/src/routes/announcements/[...index]/index.tsx b/packages/sdks/snippets/qwik-city/src/routes/announcements/[...index]/index.tsx index 0ba4fb55632..12a23db84d2 100644 --- a/packages/sdks/snippets/qwik-city/src/routes/announcements/[...index]/index.tsx +++ b/packages/sdks/snippets/qwik-city/src/routes/announcements/[...index]/index.tsx @@ -8,7 +8,6 @@ import { routeLoader$ } from '@builder.io/qwik-city'; import { Content, fetchOneEntry, - getBuilderSearchParams, } from '@builder.io/sdk-qwik'; export const BUILDER_PUBLIC_API_KEY = 'ee9f13b4981e489a9a1209887695ef2b'; @@ -18,7 +17,7 @@ export const useBuilderContent = routeLoader$(async ({ url }) => { const announcementBar = await fetchOneEntry({ model: BUILDER_MODEL, apiKey: BUILDER_PUBLIC_API_KEY, - options: getBuilderSearchParams(url.searchParams), + userAttributes: { urlPath: url.pathname, }, diff --git a/packages/sdks/snippets/react-sdk-next-14-app/app/[[...slug]]/page.tsx b/packages/sdks/snippets/react-sdk-next-14-app/app/[[...slug]]/page.tsx index a8d5f7c464e..c1a80631f6d 100644 --- a/packages/sdks/snippets/react-sdk-next-14-app/app/[[...slug]]/page.tsx +++ b/packages/sdks/snippets/react-sdk-next-14-app/app/[[...slug]]/page.tsx @@ -3,12 +3,7 @@ * snippets/nextjs-app-dir-client/app/[[...slug]].tsx * Uses @builder.io/sdk-react */ -import { - Content, - fetchOneEntry, - getBuilderSearchParams, - isPreviewing, -} from '@builder.io/sdk-react'; +import { Content, fetchOneEntry, isPreviewing } from '@builder.io/sdk-react'; interface PageProps { params: { @@ -23,7 +18,6 @@ export default async function Page(props: PageProps) { const urlPath = '/' + (props.params?.slug?.join('/') || ''); const content = await fetchOneEntry({ - options: getBuilderSearchParams(props.searchParams), apiKey: PUBLIC_API_KEY, model: 'page', userAttributes: { urlPath }, @@ -32,12 +26,8 @@ export default async function Page(props: PageProps) { const canShowContent = content || isPreviewing(props.searchParams); if (!canShowContent) { - return ( - <> -

404

-

Make sure you have your content published at Builder.io.

- - ); + return

Not Found

; } + return ; } diff --git a/packages/sdks/snippets/react-sdk-next-14-app/app/announcements/[...slug]/page.tsx b/packages/sdks/snippets/react-sdk-next-14-app/app/announcements/[...slug]/page.tsx index a4efdfae86e..9e620673ed9 100644 --- a/packages/sdks/snippets/react-sdk-next-14-app/app/announcements/[...slug]/page.tsx +++ b/packages/sdks/snippets/react-sdk-next-14-app/app/announcements/[...slug]/page.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isEditing, isPreviewing, } from '@builder.io/sdk-react'; @@ -27,7 +26,6 @@ export default async function Page(props: PageProps) { const announcementBar = await fetchOneEntry({ apiKey, model, - options: getBuilderSearchParams(props.searchParams), userAttributes: { urlPath }, }); diff --git a/packages/sdks/snippets/react/src/routes/AnnouncementBar.tsx b/packages/sdks/snippets/react/src/routes/AnnouncementBar.tsx index 7c36b6357ae..e41f66d4104 100644 --- a/packages/sdks/snippets/react/src/routes/AnnouncementBar.tsx +++ b/packages/sdks/snippets/react/src/routes/AnnouncementBar.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, type BuilderContent, } from '@builder.io/sdk-react'; import { useEffect, useState } from 'react'; @@ -24,7 +23,6 @@ export default function AnnouncementBar() { userAttributes: { urlPath: window.location.pathname, }, - options: getBuilderSearchParams(new URL(location.href).searchParams), }) .then((content) => { if (content) { diff --git a/packages/sdks/snippets/react/src/routes/IntegratingPages.tsx b/packages/sdks/snippets/react/src/routes/IntegratingPages.tsx index 9da40949106..e376465b91f 100644 --- a/packages/sdks/snippets/react/src/routes/IntegratingPages.tsx +++ b/packages/sdks/snippets/react/src/routes/IntegratingPages.tsx @@ -5,7 +5,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isPreviewing, type BuilderContent, } from '@builder.io/sdk-react'; @@ -29,7 +28,6 @@ export default function App() { userAttributes: { urlPath: window.location.pathname, }, - options: getBuilderSearchParams(new URL(location.href).searchParams), }) .then((content) => { if (content) { diff --git a/packages/sdks/snippets/react/src/routes/custom-components/advanced-child.tsx b/packages/sdks/snippets/react/src/routes/custom-components/advanced-child.tsx index 79d5f7b3935..87a2f64ad83 100644 --- a/packages/sdks/snippets/react/src/routes/custom-components/advanced-child.tsx +++ b/packages/sdks/snippets/react/src/routes/custom-components/advanced-child.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isPreviewing, type BuilderContent, } from '@builder.io/sdk-react'; @@ -28,7 +27,6 @@ export default function AdvancedChildRoute() { userAttributes: { urlPath: window.location.pathname, }, - options: getBuilderSearchParams(new URL(location.href).searchParams), }) .then((content) => { if (content) { diff --git a/packages/sdks/snippets/react/src/routes/custom-components/custom-child.tsx b/packages/sdks/snippets/react/src/routes/custom-components/custom-child.tsx index b79d13704aa..e96cc6bc915 100644 --- a/packages/sdks/snippets/react/src/routes/custom-components/custom-child.tsx +++ b/packages/sdks/snippets/react/src/routes/custom-components/custom-child.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isPreviewing, type BuilderContent, } from '@builder.io/sdk-react'; @@ -28,7 +27,6 @@ export default function CustomChildRoute() { userAttributes: { urlPath: window.location.pathname, }, - options: getBuilderSearchParams(new URL(location.href).searchParams), }) .then((content) => { if (content) { diff --git a/packages/sdks/snippets/react/src/routes/custom-components/editable-region.tsx b/packages/sdks/snippets/react/src/routes/custom-components/editable-region.tsx index da64789644f..2217c1ac0e3 100644 --- a/packages/sdks/snippets/react/src/routes/custom-components/editable-region.tsx +++ b/packages/sdks/snippets/react/src/routes/custom-components/editable-region.tsx @@ -6,7 +6,6 @@ import { Content, fetchOneEntry, - getBuilderSearchParams, isPreviewing, type BuilderContent, } from '@builder.io/sdk-react'; @@ -28,7 +27,6 @@ export default function EditableRegionRoute() { userAttributes: { urlPath: window.location.pathname, }, - options: getBuilderSearchParams(new URL(location.href).searchParams), }) .then((content) => { if (content) { diff --git a/packages/sdks/snippets/sveltekit/src/routes/[...catchall]/+page.server.js b/packages/sdks/snippets/sveltekit/src/routes/[...catchall]/+page.server.js index d979ada725e..47baeec866d 100644 --- a/packages/sdks/snippets/sveltekit/src/routes/[...catchall]/+page.server.js +++ b/packages/sdks/snippets/sveltekit/src/routes/[...catchall]/+page.server.js @@ -2,7 +2,7 @@ * Quickstart snippet * snippets/sveltekit/src/routes/[...catchall]/+page.server.js */ -import { fetchOneEntry, getBuilderSearchParams } from '@builder.io/sdk-svelte'; +import { fetchOneEntry } from '@builder.io/sdk-svelte'; /** @type {import('../$types').PageServerLoad} */ export async function load(event) { @@ -10,7 +10,6 @@ export async function load(event) { const content = await fetchOneEntry({ model: 'page', apiKey: 'ee9f13b4981e489a9a1209887695ef2b', // TO DO: Add your Public API Key - options: getBuilderSearchParams(event.url.searchParams), userAttributes: { urlPath: event.url.pathname || '/', }, diff --git a/packages/sdks/snippets/sveltekit/src/routes/announcements/[...catchall]/+page.server.js b/packages/sdks/snippets/sveltekit/src/routes/announcements/[...catchall]/+page.server.js index 57a9b6b4951..dfc7ccc423e 100644 --- a/packages/sdks/snippets/sveltekit/src/routes/announcements/[...catchall]/+page.server.js +++ b/packages/sdks/snippets/sveltekit/src/routes/announcements/[...catchall]/+page.server.js @@ -3,7 +3,7 @@ * https://www.builder.io/c/blueprints/announcement-bar * src/routes/announcements/[...catchall]/+page.server.js */ -import { fetchOneEntry, getBuilderSearchParams } from '@builder.io/sdk-svelte'; +import { fetchOneEntry } from '@builder.io/sdk-svelte'; /** @type {import('../../$types').PageServerLoad} */ export async function load(event) { @@ -11,7 +11,7 @@ export async function load(event) { const content = await fetchOneEntry({ model: 'announcement-bar', apiKey: 'ee9f13b4981e489a9a1209887695ef2b', // TO DO: Add your Public API Key - options: getBuilderSearchParams(event.url.searchParams), + userAttributes: { urlPath: event.url.pathname || '/', }, diff --git a/packages/sdks/snippets/vue/src/views/AnnouncementBar.vue b/packages/sdks/snippets/vue/src/views/AnnouncementBar.vue index d3c54887edb..b05b2966abf 100644 --- a/packages/sdks/snippets/vue/src/views/AnnouncementBar.vue +++ b/packages/sdks/snippets/vue/src/views/AnnouncementBar.vue @@ -6,7 +6,6 @@ import { Content, type BuilderContent, fetchOneEntry, - getBuilderSearchParams, isPreviewing, } from '@builder.io/sdk-vue'; import { onMounted, ref } from 'vue'; @@ -20,7 +19,6 @@ onMounted(async () => { content.value = await fetchOneEntry({ model, apiKey, - options: getBuilderSearchParams(new URL(location.href).searchParams), userAttributes: { urlPath: window.location.pathname, }, diff --git a/packages/sdks/snippets/vue/src/views/QuickStart.vue b/packages/sdks/snippets/vue/src/views/QuickStart.vue index 0e5981593cf..f2b8ceb67d2 100644 --- a/packages/sdks/snippets/vue/src/views/QuickStart.vue +++ b/packages/sdks/snippets/vue/src/views/QuickStart.vue @@ -20,7 +20,7 @@ onMounted(async () => { content.value = await fetchOneEntry({ model, apiKey, - options: getBuilderSearchParams(new URL(location.href).searchParams), + userAttributes: { urlPath: window.location.pathname, }, diff --git a/packages/sdks/src/functions/get-builder-search-params/index.ts b/packages/sdks/src/functions/get-builder-search-params/index.ts index 8bdefdee125..54042c11117 100644 --- a/packages/sdks/src/functions/get-builder-search-params/index.ts +++ b/packages/sdks/src/functions/get-builder-search-params/index.ts @@ -6,8 +6,14 @@ const BUILDER_SEARCHPARAMS_PREFIX = 'builder.'; const BUILDER_OPTIONS_PREFIX = 'options.'; /** - * Receives a `URLSearchParams` object or a regular query object, and returns the subset of query params that are - * relevant to the Builder SDK. + * Receives a `URLSearchParams` object or a regular query object, and returns + * the subset of query params that are relevant to the Builder SDK. + * + * Outputs a key-value object to be passed to `fetchOneEntry` or `fetchEntries` + * functions as the `options` argument. + * + * NOTE: This function is generally not needed. Instead, it is recommended to use `isPreviewing()` + * to check if the current page requires previewed content. * * @returns */ diff --git a/packages/sdks/src/functions/is-previewing.ts b/packages/sdks/src/functions/is-previewing.ts index 96a76eddf08..3f4ffe70e1f 100644 --- a/packages/sdks/src/functions/is-previewing.ts +++ b/packages/sdks/src/functions/is-previewing.ts @@ -2,18 +2,29 @@ import type { Search } from '../helpers/search/search.js'; import { getSearchString } from '../helpers/search/search.js'; import { isBrowser } from './is-browser.js'; -export function isPreviewing(_search?: Search) { - const search = _search || (isBrowser() ? window.location.search : undefined); +/** + * Checks the current URL's search parameters to see if it is attempting to + * preview Builder Content. + * + * When called on the client, it uses `window.location.search`. + * When called on the server (SSR), it requires a `search` argument. + * + * @param search - The search parameters to check. Can be a URL string (containing the search parameters), `URLSearchParams`, or a key-value object containing the search parameters. + * @returns `true` if the current page is being previewed, `false` otherwise. + */ +export function isPreviewing(search?: Search) { + const searchToUse = + search || (isBrowser() ? window.location.search : undefined); /** * If this function is called on the server without an explicit `search` argument, * then it can't check if the user is previewing, and will return `false`. */ - if (!search) { + if (!searchToUse) { return false; } - const normalizedSearch = getSearchString(search); + const normalizedSearch = getSearchString(searchToUse); return Boolean(normalizedSearch.indexOf('builder.preview=') !== -1); }