Update submit next action logic
This commit is contained in:
parent
1aaa5c5c3a
commit
e8e1162698
9 changed files with 168 additions and 125 deletions
|
@ -106,9 +106,11 @@ interface ProductCreatePageProps {
|
|||
fetchCollections: (data: string) => void;
|
||||
fetchProductTypes: (data: string) => void;
|
||||
onBack?();
|
||||
onSubmit?(data: ProductCreatePageSubmitData);
|
||||
onSubmitReject?(nextAction?: ProductCreatePageSubmitNextAction);
|
||||
setSubmitNextAction?(nextAction: ProductCreatePageSubmitNextAction);
|
||||
onSubmit?(
|
||||
data: ProductCreatePageSubmitData,
|
||||
nextAction?: ProductCreatePageSubmitNextAction
|
||||
);
|
||||
onSubmitSkip?(nextAction?: ProductCreatePageSubmitNextAction);
|
||||
}
|
||||
|
||||
export const ProductCreatePage: React.FC<ProductCreatePageProps> = ({
|
||||
|
@ -131,9 +133,7 @@ export const ProductCreatePage: React.FC<ProductCreatePageProps> = ({
|
|||
fetchProductTypes,
|
||||
weightUnit,
|
||||
onSubmit,
|
||||
onSubmitReject,
|
||||
submitNextAction,
|
||||
setSubmitNextAction
|
||||
onSubmitSkip
|
||||
}: ProductCreatePageProps) => {
|
||||
const intl = useIntl();
|
||||
const localizeDate = useDateLocalize();
|
||||
|
@ -210,12 +210,21 @@ export const ProductCreatePage: React.FC<ProductCreatePageProps> = ({
|
|||
value: taxType.taxCode
|
||||
})) || [];
|
||||
|
||||
const handleSubmit = (data: FormData) =>
|
||||
onSubmit({
|
||||
...data,
|
||||
attributes,
|
||||
stocks
|
||||
});
|
||||
const [modalWithAction, setModalWithAction] = React.useState<
|
||||
ProductCreatePageSubmitNextAction
|
||||
>(null);
|
||||
|
||||
const handleSubmit = (data: FormData) => {
|
||||
onSubmit(
|
||||
{
|
||||
...data,
|
||||
attributes,
|
||||
stocks
|
||||
},
|
||||
modalWithAction
|
||||
);
|
||||
setModalWithAction(null);
|
||||
};
|
||||
|
||||
return (
|
||||
<Form onSubmit={handleSubmit} initial={initialData} confirmLeave>
|
||||
|
@ -331,9 +340,10 @@ export const ProductCreatePage: React.FC<ProductCreatePageProps> = ({
|
|||
removeStock(id);
|
||||
}}
|
||||
onWarehouseConfigure={() => {
|
||||
setSubmitNextAction("warehouse-configure");
|
||||
if (disabled || !onSubmit || !hasChanged) {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
} else {
|
||||
setModalWithAction("warehouse-configure");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
@ -429,10 +439,10 @@ export const ProductCreatePage: React.FC<ProductCreatePageProps> = ({
|
|||
submit();
|
||||
}}
|
||||
onRejectChanges={() => {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
}}
|
||||
onClose={() => setSubmitNextAction(null)}
|
||||
open={submitNextAction === "warehouse-configure"}
|
||||
onClose={() => setModalWithAction(null)}
|
||||
open={modalWithAction === "warehouse-configure"}
|
||||
confirmButtonState={saveButtonBarState}
|
||||
/>
|
||||
</Container>
|
||||
|
|
|
@ -88,9 +88,11 @@ export interface ProductUpdatePageProps extends ListActions {
|
|||
onImageReorder?(event: { oldIndex: number; newIndex: number });
|
||||
onImageUpload(file: File);
|
||||
onSeoClick?();
|
||||
onSubmit?(data: ProductUpdatePageSubmitData);
|
||||
onSubmitReject?(nextAction?: ProductUpdatePageSubmitNextAction);
|
||||
setSubmitNextAction?(nextAction: ProductUpdatePageSubmitNextAction);
|
||||
onSubmit?(
|
||||
data: ProductUpdatePageSubmitData,
|
||||
nextAction?: ProductUpdatePageSubmitNextAction
|
||||
);
|
||||
onSubmitSkip?(nextAction?: ProductUpdatePageSubmitNextAction);
|
||||
onVariantAdd?();
|
||||
onSetDefaultVariant();
|
||||
onWarehouseConfigure();
|
||||
|
@ -130,7 +132,7 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
onImageUpload,
|
||||
onSeoClick,
|
||||
onSubmit,
|
||||
onSubmitReject,
|
||||
onSubmitSkip,
|
||||
onVariantAdd,
|
||||
onVariantsAdd,
|
||||
onSetDefaultVariant,
|
||||
|
@ -140,9 +142,7 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
selected,
|
||||
toggle,
|
||||
toggleAll,
|
||||
toolbar,
|
||||
submitNextAction,
|
||||
setSubmitNextAction
|
||||
toolbar
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const localizeDate = useDateLocalize();
|
||||
|
@ -201,6 +201,10 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
value: taxType.taxCode
|
||||
})) || [];
|
||||
|
||||
const [modalWithAction, setModalWithAction] = React.useState<
|
||||
ProductUpdatePageSubmitNextAction
|
||||
>(null);
|
||||
|
||||
const handleSubmit = (data: ProductUpdatePageFormData) => {
|
||||
const metadata = isMetadataModified ? data.metadata : undefined;
|
||||
const privateMetadata = isPrivateMetadataModified
|
||||
|
@ -208,15 +212,18 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
: undefined;
|
||||
|
||||
if (product.productType.hasVariants) {
|
||||
onSubmit({
|
||||
...data,
|
||||
addStocks: [],
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: [],
|
||||
updateStocks: []
|
||||
});
|
||||
onSubmit(
|
||||
{
|
||||
...data,
|
||||
addStocks: [],
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: [],
|
||||
updateStocks: []
|
||||
},
|
||||
modalWithAction
|
||||
);
|
||||
} else {
|
||||
const dataStocks = stocks.map(stock => stock.id);
|
||||
const variantStocks = product.variants[0]?.stocks.map(
|
||||
|
@ -224,20 +231,25 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
);
|
||||
const stockDiff = diff(variantStocks, dataStocks);
|
||||
|
||||
onSubmit({
|
||||
...data,
|
||||
addStocks: stocks.filter(stock =>
|
||||
stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
),
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: stockDiff.removed,
|
||||
updateStocks: stocks.filter(
|
||||
stock => !stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
)
|
||||
});
|
||||
onSubmit(
|
||||
{
|
||||
...data,
|
||||
addStocks: stocks.filter(stock =>
|
||||
stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
),
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: stockDiff.removed,
|
||||
updateStocks: stocks.filter(
|
||||
stock =>
|
||||
!stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
)
|
||||
},
|
||||
modalWithAction
|
||||
);
|
||||
}
|
||||
setModalWithAction(null);
|
||||
};
|
||||
|
||||
return (
|
||||
|
@ -381,9 +393,10 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
removeStock(id);
|
||||
}}
|
||||
onWarehouseConfigure={() => {
|
||||
setSubmitNextAction("warehouse-configure");
|
||||
if (disabled || !onSubmit || !hasChanged) {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
} else {
|
||||
setModalWithAction("warehouse-configure");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
@ -480,10 +493,10 @@ export const ProductUpdatePage: React.FC<ProductUpdatePageProps> = ({
|
|||
submit();
|
||||
}}
|
||||
onRejectChanges={() => {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
}}
|
||||
onClose={() => setSubmitNextAction(null)}
|
||||
open={submitNextAction === "warehouse-configure"}
|
||||
onClose={() => setModalWithAction(null)}
|
||||
open={modalWithAction === "warehouse-configure"}
|
||||
confirmButtonState={saveButtonBarState}
|
||||
/>
|
||||
</Container>
|
||||
|
|
|
@ -57,14 +57,13 @@ interface ProductVariantCreatePageProps {
|
|||
saveButtonBarState: ConfirmButtonTransitionState;
|
||||
warehouses: SearchWarehouses_search_edges_node[];
|
||||
weightUnit: string;
|
||||
submitNextAction?: ProductVariantCreatePageSubmitNextAction;
|
||||
onBack: () => void;
|
||||
onSubmit: (data: ProductVariantCreatePageSubmitData) => void;
|
||||
onSubmitReject?: (
|
||||
onSubmit: (
|
||||
data: ProductVariantCreatePageSubmitData,
|
||||
nextAction?: ProductVariantCreatePageSubmitNextAction
|
||||
) => void;
|
||||
setSubmitNextAction?: (
|
||||
nextAction: ProductVariantCreatePageSubmitNextAction
|
||||
onSubmitSkip?: (
|
||||
nextAction?: ProductVariantCreatePageSubmitNextAction
|
||||
) => void;
|
||||
onVariantClick: (variantId: string) => void;
|
||||
onVariantReorder: ReorderAction;
|
||||
|
@ -81,11 +80,9 @@ const ProductVariantCreatePage: React.FC<ProductVariantCreatePageProps> = ({
|
|||
weightUnit,
|
||||
onBack,
|
||||
onSubmit,
|
||||
onSubmitReject,
|
||||
onSubmitSkip,
|
||||
onVariantClick,
|
||||
onVariantReorder,
|
||||
submitNextAction,
|
||||
setSubmitNextAction
|
||||
onVariantReorder
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const attributeInput = React.useMemo(
|
||||
|
@ -117,12 +114,21 @@ const ProductVariantCreatePage: React.FC<ProductVariantCreatePageProps> = ({
|
|||
weight: ""
|
||||
};
|
||||
|
||||
const handleSubmit = (data: ProductVariantCreatePageFormData) =>
|
||||
onSubmit({
|
||||
...data,
|
||||
attributes,
|
||||
stocks
|
||||
});
|
||||
const [modalWithAction, setModalWithAction] = React.useState<
|
||||
ProductVariantCreatePageSubmitNextAction
|
||||
>(null);
|
||||
|
||||
const handleSubmit = (data: ProductVariantCreatePageFormData) => {
|
||||
onSubmit(
|
||||
{
|
||||
...data,
|
||||
attributes,
|
||||
stocks
|
||||
},
|
||||
modalWithAction
|
||||
);
|
||||
setModalWithAction(null);
|
||||
};
|
||||
|
||||
return (
|
||||
<Form initial={initialForm} onSubmit={handleSubmit}>
|
||||
|
@ -202,9 +208,10 @@ const ProductVariantCreatePage: React.FC<ProductVariantCreatePageProps> = ({
|
|||
removeStock(id);
|
||||
}}
|
||||
onWarehouseConfigure={() => {
|
||||
setSubmitNextAction("warehouse-configure");
|
||||
if (disabled || !onSubmit || !hasChanged) {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
} else {
|
||||
setModalWithAction("warehouse-configure");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
@ -233,10 +240,10 @@ const ProductVariantCreatePage: React.FC<ProductVariantCreatePageProps> = ({
|
|||
submit();
|
||||
}}
|
||||
onRejectChanges={() => {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
}}
|
||||
onClose={() => setSubmitNextAction(null)}
|
||||
open={submitNextAction === "warehouse-configure"}
|
||||
onClose={() => setModalWithAction(null)}
|
||||
open={modalWithAction === "warehouse-configure"}
|
||||
confirmButtonState={saveButtonBarState}
|
||||
/>
|
||||
</Container>
|
||||
|
|
|
@ -65,14 +65,15 @@ interface ProductVariantPageProps {
|
|||
placeholderImage?: string;
|
||||
header: string;
|
||||
warehouses: WarehouseFragment[];
|
||||
submitNextAction?: ProductVariantPageSubmitNextAction;
|
||||
onVariantReorder: ReorderAction;
|
||||
onAdd();
|
||||
onBack();
|
||||
onDelete();
|
||||
onSubmit(data: ProductVariantPageSubmitData);
|
||||
onSubmitReject?(nextAction?: ProductVariantPageSubmitNextAction);
|
||||
setSubmitNextAction?(nextAction: ProductVariantPageSubmitNextAction);
|
||||
onSubmit(
|
||||
data: ProductVariantPageSubmitData,
|
||||
nextAction?: ProductVariantPageSubmitNextAction
|
||||
);
|
||||
onSubmitSkip?(nextAction?: ProductVariantPageSubmitNextAction);
|
||||
onImageSelect(id: string);
|
||||
onVariantClick(variantId: string);
|
||||
onSetDefaultVariant();
|
||||
|
@ -93,13 +94,11 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
|
|||
onDelete,
|
||||
onImageSelect,
|
||||
onSubmit,
|
||||
onSubmitReject,
|
||||
onSubmitSkip,
|
||||
onVariantClick,
|
||||
onVariantReorder,
|
||||
onSetDefaultVariant,
|
||||
onWarehouseConfigure,
|
||||
submitNextAction,
|
||||
setSubmitNextAction
|
||||
onWarehouseConfigure
|
||||
}) => {
|
||||
const attributeInput = React.useMemo(
|
||||
() => getAttributeInputFromVariant(variant),
|
||||
|
@ -149,6 +148,10 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
|
|||
weight: variant?.weight?.value.toString() || ""
|
||||
};
|
||||
|
||||
const [modalWithAction, setModalWithAction] = React.useState<
|
||||
ProductVariantPageSubmitNextAction
|
||||
>(null);
|
||||
|
||||
const handleSubmit = (data: ProductVariantPageFormData) => {
|
||||
const dataStocks = stocks.map(stock => stock.id);
|
||||
const variantStocks = variant.stocks.map(stock => stock.warehouse.id);
|
||||
|
@ -158,19 +161,23 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
|
|||
? data.privateMetadata
|
||||
: undefined;
|
||||
|
||||
onSubmit({
|
||||
...data,
|
||||
addStocks: stocks.filter(stock =>
|
||||
stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
),
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: stockDiff.removed,
|
||||
updateStocks: stocks.filter(
|
||||
stock => !stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
)
|
||||
});
|
||||
onSubmit(
|
||||
{
|
||||
...data,
|
||||
addStocks: stocks.filter(stock =>
|
||||
stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
),
|
||||
attributes,
|
||||
metadata,
|
||||
privateMetadata,
|
||||
removeStocks: stockDiff.removed,
|
||||
updateStocks: stocks.filter(
|
||||
stock => !stockDiff.added.some(addedStock => addedStock === stock.id)
|
||||
)
|
||||
},
|
||||
modalWithAction
|
||||
);
|
||||
setModalWithAction(null);
|
||||
};
|
||||
|
||||
return (
|
||||
|
@ -276,9 +283,10 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
|
|||
removeStock(id);
|
||||
}}
|
||||
onWarehouseConfigure={() => {
|
||||
setSubmitNextAction("warehouse-configure");
|
||||
if (!onSubmit || !hasChanged) {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
} else {
|
||||
setModalWithAction("warehouse-configure");
|
||||
}
|
||||
}}
|
||||
/>
|
||||
|
@ -298,10 +306,10 @@ const ProductVariantPage: React.FC<ProductVariantPageProps> = ({
|
|||
submit();
|
||||
}}
|
||||
onRejectChanges={() => {
|
||||
onSubmitReject("warehouse-configure");
|
||||
onSubmitSkip("warehouse-configure");
|
||||
}}
|
||||
onClose={() => setSubmitNextAction(null)}
|
||||
open={submitNextAction === "warehouse-configure"}
|
||||
onClose={() => setModalWithAction(null)}
|
||||
open={modalWithAction === "warehouse-configure"}
|
||||
confirmButtonState={saveButtonBarState}
|
||||
/>
|
||||
</>
|
||||
|
|
|
@ -97,7 +97,12 @@ export const ProductCreateView: React.FC<ProductCreateViewProps> = ({}) => {
|
|||
}
|
||||
});
|
||||
|
||||
const handleCreate = async (formData: ProductCreatePageSubmitData) => {
|
||||
const handleCreate = async (
|
||||
formData: ProductCreatePageSubmitData,
|
||||
nextAction?: ProductCreatePageSubmitNextAction
|
||||
) => {
|
||||
setSubmitNextAction(nextAction);
|
||||
|
||||
const result = await productCreate({
|
||||
variables: {
|
||||
input: {
|
||||
|
@ -198,15 +203,15 @@ export const ProductCreateView: React.FC<ProductCreateViewProps> = ({}) => {
|
|||
edge => edge.node
|
||||
)}
|
||||
onBack={handleBack}
|
||||
onSubmit={async data => {
|
||||
const errors = await handleSubmit(data);
|
||||
onSubmit={async (data, nextAction) => {
|
||||
const errors = await handleSubmit(data, nextAction);
|
||||
if (errors?.length === 0) {
|
||||
handleSubmitNextAction();
|
||||
handleSubmitNextAction(nextAction);
|
||||
} else {
|
||||
setSubmitNextAction(null);
|
||||
}
|
||||
}}
|
||||
onSubmitReject={handleSubmitNextAction}
|
||||
onSubmitSkip={handleSubmitNextAction}
|
||||
saveButtonBarState={productCreateOpts.status}
|
||||
fetchMoreCategories={{
|
||||
hasMore: searchCategoryOpts.data?.search.pageInfo.hasNextPage,
|
||||
|
@ -223,8 +228,6 @@ export const ProductCreateView: React.FC<ProductCreateViewProps> = ({}) => {
|
|||
loading: searchProductTypesOpts.loading,
|
||||
onFetchMore: loadMoreProductTypes
|
||||
}}
|
||||
submitNextAction={submitNextAction}
|
||||
setSubmitNextAction={setSubmitNextAction}
|
||||
warehouses={
|
||||
warehouses.data?.warehouses.edges.map(edge => edge.node) || []
|
||||
}
|
||||
|
|
|
@ -318,15 +318,15 @@ export const ProductUpdate: React.FC<ProductUpdateProps> = ({ id, params }) => {
|
|||
onBack={handleBack}
|
||||
onDelete={() => openModal("remove")}
|
||||
onImageReorder={handleImageReorder}
|
||||
onSubmit={async data => {
|
||||
onSubmit={async (data, nextAction) => {
|
||||
const errors = await handleSubmit(data);
|
||||
if (errors?.length === 0) {
|
||||
handleSubmitNextAction();
|
||||
handleSubmitNextAction(nextAction);
|
||||
} else {
|
||||
setSubmitNextAction(null);
|
||||
}
|
||||
}}
|
||||
onSubmitReject={handleSubmitNextAction}
|
||||
onSubmitSkip={handleSubmitNextAction}
|
||||
onVariantAdd={handleVariantAdd}
|
||||
onVariantsAdd={() => navigate(productVariantCreatorUrl(id))}
|
||||
onVariantShow={variantId => () =>
|
||||
|
@ -365,8 +365,6 @@ export const ProductUpdate: React.FC<ProductUpdateProps> = ({ id, params }) => {
|
|||
loading: searchCollectionsOpts.loading,
|
||||
onFetchMore: loadMoreCollections
|
||||
}}
|
||||
submitNextAction={submitNextAction}
|
||||
setSubmitNextAction={setSubmitNextAction}
|
||||
/>
|
||||
<ActionDialog
|
||||
open={params.action === "remove"}
|
||||
|
|
|
@ -231,21 +231,19 @@ export const ProductVariant: React.FC<ProductUpdateProps> = ({
|
|||
onBack={handleBack}
|
||||
onDelete={() => openModal("remove")}
|
||||
onImageSelect={handleImageSelect}
|
||||
onSubmit={async data => {
|
||||
onSubmit={async (data, nextAction) => {
|
||||
const errors = await handleSubmit(data);
|
||||
if (errors?.length === 0) {
|
||||
handleSubmitNextAction();
|
||||
handleSubmitNextAction(nextAction);
|
||||
} else {
|
||||
setSubmitNextAction(null);
|
||||
}
|
||||
}}
|
||||
onSubmitReject={handleSubmitNextAction}
|
||||
onSubmitSkip={handleSubmitNextAction}
|
||||
onVariantClick={variantId => {
|
||||
navigate(productVariantEditUrl(productId, variantId));
|
||||
}}
|
||||
onVariantReorder={handleVariantReorder}
|
||||
submitNextAction={submitNextAction}
|
||||
setSubmitNextAction={setSubmitNextAction}
|
||||
/>
|
||||
<ProductVariantDeleteDialog
|
||||
confirmButtonState={deleteVariantOpts.status}
|
||||
|
|
|
@ -91,7 +91,12 @@ export const ProductVariant: React.FC<ProductVariantCreateProps> = ({
|
|||
);
|
||||
|
||||
const handleBack = () => navigate(productUrl(productId));
|
||||
const handleCreate = async (formData: ProductVariantCreatePageSubmitData) => {
|
||||
const handleCreate = async (
|
||||
formData: ProductVariantCreatePageSubmitData,
|
||||
nextAction?: ProductVariantCreatePageSubmitNextAction
|
||||
) => {
|
||||
setSubmitNextAction(nextAction);
|
||||
|
||||
const result = await variantCreate({
|
||||
variables: {
|
||||
input: {
|
||||
|
@ -160,15 +165,15 @@ export const ProductVariant: React.FC<ProductVariantCreateProps> = ({
|
|||
})}
|
||||
product={data?.product}
|
||||
onBack={handleBack}
|
||||
onSubmit={async data => {
|
||||
const errors = await handleSubmit(data);
|
||||
onSubmit={async (data, nextAction) => {
|
||||
const errors = await handleSubmit(data, nextAction);
|
||||
if (errors?.length === 0) {
|
||||
handleSubmitNextAction();
|
||||
handleSubmitNextAction(nextAction);
|
||||
} else {
|
||||
setSubmitNextAction(null);
|
||||
}
|
||||
}}
|
||||
onSubmitReject={handleSubmitNextAction}
|
||||
onSubmitSkip={handleSubmitNextAction}
|
||||
onVariantClick={handleVariantClick}
|
||||
onVariantReorder={handleVariantReorder}
|
||||
saveButtonBarState={variantCreateResult.status}
|
||||
|
@ -176,8 +181,6 @@ export const ProductVariant: React.FC<ProductVariantCreateProps> = ({
|
|||
warehouses.data?.warehouses.edges.map(edge => edge.node) || []
|
||||
}
|
||||
weightUnit={shop?.defaultWeightUnit}
|
||||
submitNextAction={submitNextAction}
|
||||
setSubmitNextAction={setSubmitNextAction}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
|
|
|
@ -10,16 +10,19 @@ import {
|
|||
UpdatePrivateMetadataVariables
|
||||
} from "../metadata/types/UpdatePrivateMetadata";
|
||||
|
||||
function createMetadataCreateHandler<T extends MetadataFormData>(
|
||||
create: (data: T) => Promise<string>,
|
||||
function createMetadataCreateHandler<
|
||||
T extends MetadataFormData,
|
||||
N extends string
|
||||
>(
|
||||
create: (data: T, nextAction?: N) => Promise<string>,
|
||||
setMetadata: MutationFunction<UpdateMetadata, UpdateMetadataVariables>,
|
||||
setPrivateMetadata: MutationFunction<
|
||||
UpdatePrivateMetadata,
|
||||
UpdatePrivateMetadataVariables
|
||||
>
|
||||
) {
|
||||
return async (data: T) => {
|
||||
const id = await create(data);
|
||||
return async (data: T, nextAction?: N) => {
|
||||
const id = await create(data, nextAction);
|
||||
|
||||
if (id === null) {
|
||||
return null;
|
||||
|
|
Loading…
Reference in a new issue