use-shopify
Version:
React hooks to work with Shopify's Storefront API
50 lines (49 loc) • 1.99 kB
TypeScript
import { DocumentNode } from 'graphql';
import { UserError, QueryFunction, Checkout, CheckoutLineItemInput, CheckoutLineItemUpdateInput } from '../types';
import { CheckoutCreateInput, CheckoutAttributesUpdateV2Input } from './queries';
/**
* API
*/
export interface UseCheckoutConfig {
foo?: string;
}
interface UseCheckoutArguments {
query: QueryFunction;
queries?: Partial<UseCheckoutQueries>;
config?: Partial<UseCheckoutConfig>;
}
export interface UseCheckoutQueries {
CHECKOUT_CREATE: string | DocumentNode;
CHECKOUT_FETCH: string | DocumentNode;
CHECKOUT_DISCOUNT_CODE_APPLY: string | DocumentNode;
CHECKOUT_DISCOUNT_CODE_REMOVE: string | DocumentNode;
CHECKOUT_LINE_ITEMS_ADD: string | DocumentNode;
CHECKOUT_LINE_ITEMS_UPDATE: string | DocumentNode;
}
export interface UseCheckoutValues extends CheckoutState {
checkoutCreate: (args: CheckoutCreateInput) => Promise<CheckoutAndErrors>;
checkoutLineItemsAdd: (lineItems: CheckoutLineItemInput[]) => Promise<void>;
checkoutLineItemsUpdate: (lineItems: CheckoutLineItemUpdateInput[]) => Promise<void>;
checkoutDiscountCodeApply: (discountCode: string) => Promise<void>;
checkoutDiscountCodeRemove: () => Promise<void>;
checkoutAttributesUpdate: (args: CheckoutAttributesUpdateV2Input) => Promise<void>;
addLineItem: (lineItem: CheckoutLineItemInput) => Promise<void>;
updateLineItem: (lineItem: CheckoutLineItemUpdateInput) => Promise<void>;
clearCheckout: () => Promise<void>;
addNote: (note: string) => Promise<void>;
}
/**
* State
*/
export interface CheckoutState {
loading: boolean;
ready: boolean;
checkoutUserErrors: UserError[];
checkout: Checkout | void;
}
interface CheckoutAndErrors {
checkout?: Checkout;
checkoutUserErrors?: UserError[];
}
export declare const useCheckout: ({ queries: userQueries, query, }: UseCheckoutArguments) => UseCheckoutValues;
export {};