forked from M3-Academy/challenge-vtex-io
104 lines
3.1 KiB
TypeScript
104 lines
3.1 KiB
TypeScript
|
/* eslint-disable no-inner-declarations */
|
||
|
declare module "vtex.order-manager/OrderQueue" {
|
||
|
export * from "vtex.order-manager/react/OrderQueue";
|
||
|
export { default } from "vtex.order-manager/react/OrderQueue";
|
||
|
|
||
|
export const QueueStatus = {
|
||
|
PENDING: "Pending",
|
||
|
FULFILLED: "Fulfilled",
|
||
|
} as const;
|
||
|
}
|
||
|
|
||
|
declare module "vtex.order-manager/OrderForm" {
|
||
|
import { createContext, useContext } from "react";
|
||
|
import type { DEFAULT_ORDER_FORM } from "@vtex/order-manager/src/constants";
|
||
|
import type { Context, OrderForm } from "@vtex/order-manager/src/typings";
|
||
|
|
||
|
type DefaultOrderForm = typeof DEFAULT_ORDER_FORM;
|
||
|
type DefaultOrderFormOmited = Omit<DefaultOrderForm, "items">;
|
||
|
type DefaultOrderFormUpdated = DefaultOrderFormOmited & {
|
||
|
items: OrderFormItem[] | null;
|
||
|
};
|
||
|
|
||
|
export const OrderFormContext = createContext<Context<OrderForm>>({
|
||
|
orderForm: DefaultOrderFormUpdated,
|
||
|
setOrderForm: noop,
|
||
|
error: undefined,
|
||
|
loading: false,
|
||
|
});
|
||
|
|
||
|
function useOrderForm<O extends OrderForm = DefaultOrderFormUpdated>() {
|
||
|
const context = useContext(OrderFormContext);
|
||
|
|
||
|
if (context === undefined) {
|
||
|
throw new Error(
|
||
|
"useOrderForm must be used within a OrderFormProvider"
|
||
|
);
|
||
|
}
|
||
|
return context as Context<O>;
|
||
|
}
|
||
|
|
||
|
export type OrderFormItem = {
|
||
|
additionalInfo: {
|
||
|
brandName: string;
|
||
|
__typename: string;
|
||
|
};
|
||
|
attachments: Array<any>;
|
||
|
attachmentOfferings: Array<any>;
|
||
|
bundleItems: Array<any>;
|
||
|
parentAssemblyBinding: any;
|
||
|
parentItemIndex: any;
|
||
|
sellingPriceWithAssemblies: any;
|
||
|
options: any;
|
||
|
availability: string;
|
||
|
detailUrl: string;
|
||
|
id: string;
|
||
|
imageUrls: Record<string, string>;
|
||
|
listPrice: number;
|
||
|
manualPrice: any;
|
||
|
measurementUnit: string;
|
||
|
modalType: any;
|
||
|
name: string;
|
||
|
offerings: Array<any>;
|
||
|
price: number;
|
||
|
priceTags: Array<any>;
|
||
|
productCategories: Record<string, string>;
|
||
|
productCategoryIds: string;
|
||
|
productRefId: string;
|
||
|
productId: string;
|
||
|
quantity: number;
|
||
|
seller: string;
|
||
|
sellingPrice: number;
|
||
|
skuName: string;
|
||
|
skuSpecifications: Array<any>;
|
||
|
unitMultiplier: number;
|
||
|
uniqueId: string;
|
||
|
refId: string;
|
||
|
isGift: boolean;
|
||
|
priceDefinition: {
|
||
|
calculatedSellingPrice: number;
|
||
|
total: number;
|
||
|
sellingPrices: Array<{
|
||
|
quantity: number;
|
||
|
value: number;
|
||
|
__typename: string;
|
||
|
}>;
|
||
|
__typename: string;
|
||
|
};
|
||
|
__typename: string;
|
||
|
};
|
||
|
|
||
|
export { OrderFormProvider, useOrderForm };
|
||
|
declare const _default: {
|
||
|
OrderFormProvider: import("react").FC<Record<string, never>>;
|
||
|
useOrderForm: typeof useOrderForm;
|
||
|
};
|
||
|
export default _default;
|
||
|
}
|
||
|
|
||
|
declare module "vtex.order-manager/constants" {
|
||
|
export * from "vtex.order-manager/react/constants";
|
||
|
}
|
||
|
|
||
|
|