Skip to content

Commit 08554b7

Browse files
committed
feat: add support for sanity-preview-perspective in loadQuery
- Enhanced multiple page components to accept a new `perspective` parameter for improved visual editing. - Updated the `loadQuery` function to handle the `perspective` parameter, allowing for dynamic content fetching based on the selected preview perspective. - Implemented message handling in visual editing script to synchronize perspective changes from the Studio.
1 parent a21ddff commit 08554b7

File tree

14 files changed

+109
-31
lines changed

14 files changed

+109
-31
lines changed

apps/web/src/pages/[slug].astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ if (reservedSlugs.includes(slug!)) {
1616
}
1717
1818
const draftMode = Astro.cookies.has("__sanity_preview");
19-
const { data: page } = await loadQuery<any>({ query: pageQuery, params: { slug }, draftMode });
19+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
20+
const { data: page } = await loadQuery<any>({ query: pageQuery, params: { slug }, draftMode, perspective });
2021
2122
if (!page) {
2223
return new Response(null, { status: 404 });

apps/web/src/pages/author/[slug].astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export const prerender = false;
99
1010
const { slug } = Astro.params;
1111
const draftMode = Astro.cookies.has("__sanity_preview");
12-
const { data: author } = await loadQuery<any>({ query: authorQuery, params: { slug }, draftMode });
12+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
13+
const { data: author } = await loadQuery<any>({ query: authorQuery, params: { slug }, draftMode, perspective });
1314
1415
if (!author) {
1516
return Astro.redirect("/404");

apps/web/src/pages/authors.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ const perPage = 12;
1414
const offset = (page - 1) * perPage;
1515
1616
const draftMode = Astro.cookies.has("__sanity_preview");
17+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
1718
const [itemsResult, totalCount] = await Promise.all([
18-
loadQuery<any[]>({ query: authorListQuery, params: { offset, end: offset + perPage }, draftMode }),
19+
loadQuery<any[]>({ query: authorListQuery, params: { offset, end: offset + perPage }, draftMode, perspective }),
1920
sanityFetch<number>(authorCountQuery),
2021
]);
2122
const items = itemsResult.data;

apps/web/src/pages/blog.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,9 @@ const perPage = 12;
1717
const offset = (page - 1) * perPage;
1818
1919
const draftMode = Astro.cookies.has("__sanity_preview");
20+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
2021
const [postsResult, totalCount] = await Promise.all([
21-
loadQuery<any[]>({ query: postListQuery, params: { offset, end: offset + perPage }, draftMode }),
22+
loadQuery<any[]>({ query: postListQuery, params: { offset, end: offset + perPage }, draftMode, perspective }),
2223
sanityFetch<number>(postCountQuery),
2324
]);
2425
const posts = postsResult.data;

apps/web/src/pages/guest/[slug].astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ export const prerender = false;
99
1010
const { slug } = Astro.params;
1111
const draftMode = Astro.cookies.has("__sanity_preview");
12-
const { data: guest } = await loadQuery<any>({ query: guestQuery, params: { slug }, draftMode });
12+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
13+
const { data: guest } = await loadQuery<any>({ query: guestQuery, params: { slug }, draftMode, perspective });
1314
1415
if (!guest) {
1516
return Astro.redirect("/404");

apps/web/src/pages/guests.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,9 @@ const perPage = 12;
1414
const offset = (page - 1) * perPage;
1515
1616
const draftMode = Astro.cookies.has("__sanity_preview");
17+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
1718
const [itemsResult, totalCount] = await Promise.all([
18-
loadQuery<any[]>({ query: guestListQuery, params: { offset, end: offset + perPage }, draftMode }),
19+
loadQuery<any[]>({ query: guestListQuery, params: { offset, end: offset + perPage }, draftMode, perspective }),
1920
sanityFetch<number>(guestCountQuery),
2021
]);
2122
const items = itemsResult.data;

apps/web/src/pages/index.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import { homePageQuery } from "@/lib/queries";
1111
export const prerender = false;
1212
1313
const draftMode = Astro.cookies.has("__sanity_preview");
14-
const { data: homePage } = await loadQuery<any>({ query: homePageQuery, draftMode });
14+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
15+
const { data: homePage } = await loadQuery<any>({ query: homePageQuery, draftMode, perspective });
1516
1617
const siteUrl = Astro.url.origin;
1718
const ogImage = `${siteUrl}/api/og/default.png?title=${encodeURIComponent("CodingCat.dev")}&subtitle=${encodeURIComponent("Purrfect Web Development Tutorials")}`;

apps/web/src/pages/podcast/[slug].astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@ export const prerender = false;
1313
1414
const { slug } = Astro.params;
1515
const draftMode = Astro.cookies.has("__sanity_preview");
16-
const { data: podcast } = await loadQuery<any>({ query: podcastQuery, params: { slug }, draftMode });
16+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
17+
const { data: podcast } = await loadQuery<any>({ query: podcastQuery, params: { slug }, draftMode, perspective });
1718
1819
if (!podcast) {
1920
return Astro.redirect("/404");

apps/web/src/pages/podcasts.astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,9 @@ const perPage = 12;
1616
const offset = (page - 1) * perPage;
1717
1818
const draftMode = Astro.cookies.has("__sanity_preview");
19+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
1920
const [podcastsResult, totalCount] = await Promise.all([
20-
loadQuery<any[]>({ query: podcastListQuery, params: { offset, end: offset + perPage }, draftMode }),
21+
loadQuery<any[]>({ query: podcastListQuery, params: { offset, end: offset + perPage }, draftMode, perspective }),
2122
sanityFetch<number>(podcastCountQuery),
2223
]);
2324
const podcasts = podcastsResult.data;

apps/web/src/pages/post/[slug].astro

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ export const prerender = false;
1212
1313
const { slug } = Astro.params;
1414
const draftMode = Astro.cookies.has("__sanity_preview");
15-
const { data: post } = await loadQuery<any>({ query: postQuery, params: { slug }, draftMode });
15+
const perspective = Astro.url.searchParams.get("sanity-preview-perspective") ?? undefined;
16+
const { data: post } = await loadQuery<any>({ query: postQuery, params: { slug }, draftMode, perspective });
1617
1718
if (!post) {
1819
return Astro.redirect("/404");

0 commit comments

Comments
 (0)