import React from "react"; import { getMutationProviderData } from "../../misc"; import { PartialMutationProviderOutput } from "../../types"; import { TypedOrderAddNoteMutation, TypedOrderCancelMutation, TypedOrderCaptureMutation, TypedOrderCreateFulfillmentMutation, TypedOrderDraftCancelMutation, TypedOrderDraftFinalizeMutation, TypedOrderDraftUpdateMutation, TypedOrderFulfillmentCancelMutation, TypedOrderFulfillmentUpdateTrackingMutation, TypedOrderLineDeleteMutation, TypedOrderLinesAddMutation, TypedOrderLineUpdateMutation, TypedOrderMarkAsPaidMutation, TypedOrderRefundMutation, TypedOrderShippingMethodUpdateMutation, TypedOrderUpdateMutation, TypedOrderVoidMutation } from "../mutations"; import { OrderAddNote, OrderAddNoteVariables } from "../types/OrderAddNote"; import { OrderCancel, OrderCancelVariables } from "../types/OrderCancel"; import { OrderCapture, OrderCaptureVariables } from "../types/OrderCapture"; import { OrderCreateFulfillment, OrderCreateFulfillmentVariables } from "../types/OrderCreateFulfillment"; import { OrderDraftCancel, OrderDraftCancelVariables } from "../types/OrderDraftCancel"; import { OrderDraftFinalize, OrderDraftFinalizeVariables } from "../types/OrderDraftFinalize"; import { OrderDraftUpdate, OrderDraftUpdateVariables } from "../types/OrderDraftUpdate"; import { OrderFulfillmentCancel, OrderFulfillmentCancelVariables } from "../types/OrderFulfillmentCancel"; import { OrderFulfillmentUpdateTracking, OrderFulfillmentUpdateTrackingVariables } from "../types/OrderFulfillmentUpdateTracking"; import { OrderLineDelete, OrderLineDeleteVariables } from "../types/OrderLineDelete"; import { OrderLinesAdd, OrderLinesAddVariables } from "../types/OrderLinesAdd"; import { OrderLineUpdate, OrderLineUpdateVariables } from "../types/OrderLineUpdate"; import { OrderMarkAsPaid, OrderMarkAsPaidVariables } from "../types/OrderMarkAsPaid"; import { OrderRefund, OrderRefundVariables } from "../types/OrderRefund"; import { OrderShippingMethodUpdate, OrderShippingMethodUpdateVariables } from "../types/OrderShippingMethodUpdate"; import { OrderUpdate, OrderUpdateVariables } from "../types/OrderUpdate"; import { OrderVoid, OrderVoidVariables } from "../types/OrderVoid"; interface OrderOperationsProps { order: string; children: (props: { orderAddNote: PartialMutationProviderOutput< OrderAddNote, OrderAddNoteVariables >; orderCancel: PartialMutationProviderOutput< OrderCancel, OrderCancelVariables >; orderCreateFulfillment: PartialMutationProviderOutput< OrderCreateFulfillment, OrderCreateFulfillmentVariables >; orderFulfillmentCancel: PartialMutationProviderOutput< OrderFulfillmentCancel, OrderFulfillmentCancelVariables >; orderFulfillmentUpdateTracking: PartialMutationProviderOutput< OrderFulfillmentUpdateTracking, OrderFulfillmentUpdateTrackingVariables >; orderPaymentCapture: PartialMutationProviderOutput< OrderCapture, OrderCaptureVariables >; orderPaymentRefund: PartialMutationProviderOutput< OrderRefund, OrderRefundVariables >; orderPaymentMarkAsPaid: PartialMutationProviderOutput< OrderMarkAsPaid, OrderMarkAsPaidVariables >; orderVoid: PartialMutationProviderOutput; orderUpdate: PartialMutationProviderOutput< OrderUpdate, OrderUpdateVariables >; orderDraftCancel: PartialMutationProviderOutput< OrderDraftCancel, OrderDraftCancelVariables >; orderDraftFinalize: PartialMutationProviderOutput< OrderDraftFinalize, OrderDraftFinalizeVariables >; orderDraftUpdate: PartialMutationProviderOutput< OrderDraftUpdate, OrderDraftUpdateVariables >; orderShippingMethodUpdate: PartialMutationProviderOutput< OrderShippingMethodUpdate, OrderShippingMethodUpdateVariables >; orderLineDelete: PartialMutationProviderOutput< OrderLineDelete, OrderLineDeleteVariables >; orderLinesAdd: PartialMutationProviderOutput< OrderLinesAdd, OrderLinesAddVariables >; orderLineUpdate: PartialMutationProviderOutput< OrderLineUpdate, OrderLineUpdateVariables >; }) => React.ReactNode; onOrderFulfillmentCancel: (data: OrderFulfillmentCancel) => void; onOrderFulfillmentCreate: (data: OrderCreateFulfillment) => void; onOrderFulfillmentUpdate: (data: OrderFulfillmentUpdateTracking) => void; onOrderCancel: (data: OrderCancel) => void; onOrderVoid: (data: OrderVoid) => void; onOrderMarkAsPaid: (data: OrderMarkAsPaid) => void; onNoteAdd: (data: OrderAddNote) => void; onPaymentCapture: (data: OrderCapture) => void; onPaymentRefund: (data: OrderRefund) => void; onUpdate: (data: OrderUpdate) => void; onDraftCancel: (data: OrderDraftCancel) => void; onDraftFinalize: (data: OrderDraftFinalize) => void; onDraftUpdate: (data: OrderDraftUpdate) => void; onShippingMethodUpdate: (data: OrderShippingMethodUpdate) => void; onOrderLineDelete: (data: OrderLineDelete) => void; onOrderLinesAdd: (data: OrderLinesAdd) => void; onOrderLineUpdate: (data: OrderLineUpdate) => void; } const OrderOperations: React.StatelessComponent = ({ children, onDraftUpdate, onOrderFulfillmentCreate, onNoteAdd, onOrderCancel, onOrderLinesAdd, onOrderLineDelete, onOrderLineUpdate, onOrderVoid, onPaymentCapture, onPaymentRefund, onShippingMethodUpdate, onUpdate, onDraftCancel, onDraftFinalize, onOrderFulfillmentCancel, onOrderFulfillmentUpdate, onOrderMarkAsPaid }) => ( {(...orderVoid) => ( {(...orderCancel) => ( {(...paymentCapture) => ( {(...paymentRefund) => ( {(...createFulfillment) => ( {(...addNote) => ( {(...update) => ( {(...updateDraft) => ( {(...updateShippingMethod) => ( {(...deleteOrderLine) => ( {(...addOrderLine) => ( {(...updateOrderLine) => ( {(...cancelFulfillment) => ( {( ...updateTrackingNumber ) => ( {( ...finalizeDraft ) => ( {( ...cancelDraft ) => ( {( ...markAsPaid ) => children({ orderAddNote: getMutationProviderData( ...addNote ), orderCancel: getMutationProviderData( ...orderCancel ), orderCreateFulfillment: getMutationProviderData( ...createFulfillment ), orderDraftCancel: getMutationProviderData( ...cancelDraft ), orderDraftFinalize: getMutationProviderData( ...finalizeDraft ), orderDraftUpdate: getMutationProviderData( ...updateDraft ), orderFulfillmentCancel: getMutationProviderData( ...cancelFulfillment ), orderFulfillmentUpdateTracking: getMutationProviderData( ...updateTrackingNumber ), orderLineDelete: getMutationProviderData( ...deleteOrderLine ), orderLineUpdate: getMutationProviderData( ...updateOrderLine ), orderLinesAdd: getMutationProviderData( ...addOrderLine ), orderPaymentCapture: getMutationProviderData( ...paymentCapture ), orderPaymentMarkAsPaid: getMutationProviderData( ...markAsPaid ), orderPaymentRefund: getMutationProviderData( ...paymentRefund ), orderShippingMethodUpdate: getMutationProviderData( ...updateShippingMethod ), orderUpdate: getMutationProviderData( ...update ), orderVoid: getMutationProviderData( ...orderVoid ) }) } )} )} )} )} )} )} )} )} )} )} )} )} )} )} )} )} ); export default OrderOperations;