import {useLoaderData, Link} from 'react-router'; import type {Route} from './+types/policies._index'; import type {PoliciesQuery, PolicyItemFragment} from 'storefrontapi.generated'; export async function loader({context}: Route.LoaderArgs) { const data: PoliciesQuery = await context.storefront.query(POLICIES_QUERY); const shopPolicies = data.shop; const policies: PolicyItemFragment[] = [ shopPolicies?.privacyPolicy, shopPolicies?.shippingPolicy, shopPolicies?.termsOfService, shopPolicies?.refundPolicy, shopPolicies?.subscriptionPolicy, ].filter((policy): policy is PolicyItemFragment => policy != null); if (!policies.length) { throw new Response('No policies found', {status: 404}); } return {policies}; } export default function Policies() { const {policies} = useLoaderData(); return (

Policies

{policies.map((policy) => (
{policy.title}
))}
); } const POLICIES_QUERY = `#graphql fragment PolicyItem on ShopPolicy { id title handle } query Policies ($country: CountryCode, $language: LanguageCode) @inContext(country: $country, language: $language) { shop { privacyPolicy { ...PolicyItem } shippingPolicy { ...PolicyItem } termsOfService { ...PolicyItem } refundPolicy { ...PolicyItem } subscriptionPolicy { id title handle } } } ` as const;