@shopify/cli
Version:
A CLI tool to build for the Shopify platform
47 lines (39 loc) • 1.13 kB
text/typescript
import { useLocation } from 'react-router';
import type {SelectedOption} from '@shopify/hydrogen/storefront-api-types';
import {useMemo} from 'react';
export function useVariantUrl(
handle: string,
selectedOptions?: SelectedOption[],
) {
const {pathname} = useLocation();
return useMemo(() => {
return getVariantUrl({
handle,
pathname,
searchParams: new URLSearchParams(),
selectedOptions,
});
}, [handle, selectedOptions, pathname]);
}
export function getVariantUrl({
handle,
pathname,
searchParams,
selectedOptions,
}: {
handle: string;
pathname: string;
searchParams: URLSearchParams;
selectedOptions?: SelectedOption[];
}) {
const match = /(\/[a-zA-Z]{2}-[a-zA-Z]{2}\/)/g.exec(pathname);
const isLocalePathname = match && match.length > 0;
const path = isLocalePathname
? `${match![0]}products/${handle}`
: `/products/${handle}`;
selectedOptions?.forEach((option) => {
searchParams.set(option.name, option.value);
});
const searchString = searchParams.toString();
return path + (searchString ? '?' + searchParams.toString() : '');
}