Skip to content

Commit

Permalink
Merge pull request #13 from thomasKn/thomas/fv-223-fix-usesanitydata-…
Browse files Browse the repository at this point in the history
…to-use-rootloaderdata

Update useSanityData to use root loader data
  • Loading branch information
thomasKn authored Jan 30, 2024
2 parents 18565d9 + c444a13 commit 354d90e
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 6 deletions.
8 changes: 6 additions & 2 deletions app/hooks/useSanityData.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import {useEncodeDataAttribute} from '@sanity/react-loader';
import {useQuery} from '~/lib/sanity/sanity.loader';

import {useEnvironmentVariables} from './useEnvironmentVariables';
import {useRootLoaderData} from './useRootLoaderData';

type Initial = {
data: unknown;
Expand All @@ -22,17 +23,20 @@ type InitialData<U> = U extends {data: infer V} ? V : never;
* The `useSanityData` hook is needed to preview live data from Sanity Studio.
* It must be used within a route that has a loader that returns a `sanityPreviewPayload` object.
*/
export function useSanityData<T extends Initial>(initial: T) {
export function useSanityData<T extends Initial>(initial: T, routeId?: string) {
const loaderData = useLoaderData<{
sanity?: {
params?: QueryParams;
query?: string;
};
}>();
const sanity = loaderData?.sanity;
const rootLoaderData = useRootLoaderData();
const env = useEnvironmentVariables();
const studioUrl = env?.SANITY_STUDIO_URL!;

const sanity =
routeId && routeId === 'root' ? rootLoaderData?.sanity : loaderData?.sanity;

if (sanity === undefined) {
// eslint-disable-next-line no-console
console.warn(
Expand Down
7 changes: 5 additions & 2 deletions app/hooks/useSanityRoot.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@ import {useSanityData} from './useSanityData';

export function useSanityRoot() {
const rootLoaderdata = useRootLoaderData();

const sanityGlobal = rootLoaderdata?.sanityRoot!;
const {data, encodeDataAttribute, loading, sourceMap} =
useSanityData(sanityGlobal);
const {data, encodeDataAttribute, loading, sourceMap} = useSanityData(
sanityGlobal,
'root',
);

return {data, encodeDataAttribute, loading, sourceMap};
}
2 changes: 1 addition & 1 deletion app/root.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ export default function App() {
<Links />
<style dangerouslySetInnerHTML={{__html: cssVars}} />
</head>
<body className="bg-background text-foreground flex min-h-screen flex-col [&_main]:grow">
<body className="flex min-h-screen flex-col bg-background text-foreground [&_main]:grow">
<Layout>
<Outlet />
</Layout>
Expand Down
2 changes: 1 addition & 1 deletion studio/schemas/objects/sections/collectionBanner.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ export default defineField({
select: {
settings: 'settings',
},
prepare({settings}:any) {
prepare({settings}: any) {
return {
title: 'Collection Banner',
media: () => settings.hide ? <EyeOff/> : <Image />,
Expand Down

0 comments on commit 354d90e

Please sign in to comment.