@saleor/sdk
Version:
Saleor TS SDK
26 lines (20 loc) • 706 B
text/typescript
import { useContext } from "react";
import { SaleorClient } from "../../core/types";
import { SaleorContext } from "../components/SaleorProvider";
const CreateSaleorHook = <T extends keyof SaleorClient>(
key: T
): SaleorClient[T] => {
const saleorClient = useContext(SaleorContext);
if (!saleorClient) {
throw new Error(
"Could not find saleor's apollo client in the context. Did you forget to wrap the root component in a <SaleorProvider>?"
);
}
const getHookData = (): SaleorClient[T] => {
return saleorClient[key];
};
return getHookData();
};
export const hookFactory = <T extends keyof SaleorClient>(
query: T
) => (): SaleorClient[T] => CreateSaleorHook(query);