umwd-components 0.1.661 → 0.1.662
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.ai/prompts/update-form-and-actions.prompt.md +5 -0
- package/dist/node_modules/base64-js/index.js +1 -1
- package/dist/node_modules/ieee754/index.js +1 -1
- package/dist/src/components/logistics/ipo/AddIPOForm.js +1 -1
- package/dist/src/components/logistics/vendor/AddVendorForm.js +1 -1
- package/dist/src/components/logistics/vendor/EditVendorForm.js +1 -1
- package/dist/src/data/actions/logistics/vendor/createVendorAction.js +1 -1
- package/dist/src/data/actions/logistics/vendor/updateVendorAction.js +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/components/logistics/vendor/AddVendorForm.d.ts +7 -2
- package/dist/types/components/logistics/vendor/EditVendorForm.d.ts +5 -2
- package/dist/types/data/actions/logistics/vendor/updateVendorAction.d.ts +9 -1
- package/package.json +1 -1
- package/src/components/logistics/ipo/AddIPOForm.tsx +0 -4
- package/src/components/logistics/vendor/AddVendorForm.tsx +46 -36
- package/src/components/logistics/vendor/EditVendorForm.tsx +48 -35
- package/src/data/actions/logistics/vendor/createVendorAction.tsx +43 -27
- package/src/data/actions/logistics/vendor/updateVendorAction.tsx +59 -27
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import React from "react";
|
|
2
2
|
import { ProductName } from "../../../types/e-commerce/product/types";
|
|
3
|
-
|
|
3
|
+
import { SxProps } from "@mui/system";
|
|
4
|
+
interface AddVendorFormProps {
|
|
4
5
|
productNamesArr: ProductName[];
|
|
5
6
|
revalidateCallback?: () => void;
|
|
6
|
-
|
|
7
|
+
handleClose?: () => void;
|
|
8
|
+
sx?: SxProps;
|
|
9
|
+
}
|
|
10
|
+
export declare function AddVendorForm({ productNamesArr, revalidateCallback, handleClose, sx, }: AddVendorFormProps): React.JSX.Element;
|
|
11
|
+
export {};
|
|
@@ -2,9 +2,12 @@ import React from "react";
|
|
|
2
2
|
import { Vendor } from "../../../types/logistics/Vendor";
|
|
3
3
|
import { ProductName } from "../../../types/e-commerce/product/types";
|
|
4
4
|
import { SxProps } from "@mui/material/styles";
|
|
5
|
-
|
|
5
|
+
interface EditVendorFormProps {
|
|
6
6
|
data: Vendor;
|
|
7
7
|
productNamesArr: ProductName[];
|
|
8
8
|
revalidateCallback?: () => void;
|
|
9
|
+
handleClose?: () => void;
|
|
9
10
|
sx?: SxProps;
|
|
10
|
-
}
|
|
11
|
+
}
|
|
12
|
+
export declare function EditVendorForm({ data, productNamesArr, revalidateCallback, handleClose, sx, }: EditVendorFormProps): React.JSX.Element;
|
|
13
|
+
export {};
|
|
@@ -1 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
interface UpdateVendorState {
|
|
2
|
+
data: any | null;
|
|
3
|
+
message: string | null;
|
|
4
|
+
severity: "success" | "error" | "info" | "warning" | null;
|
|
5
|
+
strapiErrors: any | null;
|
|
6
|
+
zodErrors: any | null;
|
|
7
|
+
}
|
|
8
|
+
export declare function updateVendorAction(prevState: any, formData: FormData): Promise<UpdateVendorState>;
|
|
9
|
+
export {};
|
package/package.json
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
3
|
import React, { useEffect, useState } from "react";
|
|
4
|
-
import Paper from "@mui/material/Paper";
|
|
5
4
|
import Box from "@mui/material/Box";
|
|
6
5
|
import Stack from "@mui/material/Stack";
|
|
7
6
|
import Alert from "@mui/material/Alert";
|
|
@@ -12,7 +11,6 @@ import Button from "@mui/material/Button";
|
|
|
12
11
|
|
|
13
12
|
import { SubmitButton } from "../../SubmitButton";
|
|
14
13
|
import { useFormState } from "react-dom";
|
|
15
|
-
import { StrapiErrors } from "../../StrapiErrors";
|
|
16
14
|
import { createIPOAction } from "../../../data/actions/logistics/ipo/createIPOAction";
|
|
17
15
|
import Grid from "@mui/material/Grid";
|
|
18
16
|
|
|
@@ -92,11 +90,9 @@ export function AddIPOForm({
|
|
|
92
90
|
return (
|
|
93
91
|
<Box
|
|
94
92
|
sx={[
|
|
95
|
-
{ p: 2 },
|
|
96
93
|
// You cannot spread `sx` directly because `SxProps` (typeof sx) can be an array.
|
|
97
94
|
...(Array.isArray(sx) ? sx : [sx]),
|
|
98
95
|
]}
|
|
99
|
-
component={Paper}
|
|
100
96
|
>
|
|
101
97
|
<form action={formAction}>
|
|
102
98
|
<Grid container spacing={2}>
|
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import React, { useState, useEffect
|
|
4
|
-
import Paper from "@mui/material/Paper";
|
|
3
|
+
import React, { useState, useEffect } from "react";
|
|
5
4
|
import Box from "@mui/material/Box";
|
|
6
5
|
import Stack from "@mui/material/Stack";
|
|
7
|
-
import
|
|
6
|
+
import Button from "@mui/material/Button";
|
|
8
7
|
import TextField from "@mui/material/TextField";
|
|
9
8
|
import Typography from "@mui/material/Typography";
|
|
10
9
|
import { SubmitButton } from "../../SubmitButton";
|
|
11
10
|
import { useFormState } from "react-dom";
|
|
12
|
-
import {
|
|
11
|
+
import { useSnackbar } from "../../../context/common/SnackbarContext";
|
|
13
12
|
import { createVendorAction } from "../../../data/actions/logistics/vendor/createVendorAction";
|
|
14
13
|
import Grid from "@mui/material/Grid";
|
|
15
14
|
import { BusinessCredentialsFields } from "../../../components/e-commerce/customer/BusinessCredentials";
|
|
@@ -17,8 +16,8 @@ import { AddressFields } from "../../../components/common/Address";
|
|
|
17
16
|
import { ProductName } from "../../../types/e-commerce/product/types";
|
|
18
17
|
import ProductSelector from "../../../components/e-commerce/products/ProductSelector";
|
|
19
18
|
import { ContactsFields } from "../../../components/common/Contacts";
|
|
20
|
-
import Button from "@mui/material/Button";
|
|
21
19
|
import AddIcon from "@mui/icons-material/Add";
|
|
20
|
+
import { SxProps } from "@mui/system";
|
|
22
21
|
import {
|
|
23
22
|
ContactsFieldsProps,
|
|
24
23
|
ContactType,
|
|
@@ -30,44 +29,59 @@ const INITIAL_STATE = {
|
|
|
30
29
|
strapiErrors: null,
|
|
31
30
|
data: null,
|
|
32
31
|
message: null,
|
|
32
|
+
severity: null,
|
|
33
33
|
};
|
|
34
34
|
|
|
35
|
+
interface AddVendorFormProps {
|
|
36
|
+
productNamesArr: ProductName[];
|
|
37
|
+
revalidateCallback?: () => void;
|
|
38
|
+
handleClose?: () => void;
|
|
39
|
+
sx?: SxProps;
|
|
40
|
+
}
|
|
41
|
+
|
|
35
42
|
export function AddVendorForm({
|
|
36
43
|
productNamesArr,
|
|
37
44
|
revalidateCallback,
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
}) {
|
|
45
|
+
handleClose,
|
|
46
|
+
sx,
|
|
47
|
+
}: AddVendorFormProps) {
|
|
42
48
|
const [formState, formAction] = useFormState(
|
|
43
49
|
createVendorAction,
|
|
44
50
|
INITIAL_STATE
|
|
45
51
|
);
|
|
46
|
-
|
|
52
|
+
const { handleAddMessage } = useSnackbar();
|
|
47
53
|
const [newContacts, setNewContacts] = useState<ContactsFieldsProps[]>([]);
|
|
48
54
|
|
|
49
55
|
const handleDeleteContact = (index: number) => {
|
|
50
|
-
console.log("delete", index);
|
|
51
56
|
const newContactsArr = newContacts.filter((_, i) => i !== index);
|
|
52
|
-
|
|
53
57
|
setNewContacts(newContactsArr);
|
|
54
58
|
};
|
|
55
59
|
|
|
56
60
|
useEffect(() => {
|
|
57
|
-
if (formState?.
|
|
58
|
-
|
|
61
|
+
if (formState?.message) {
|
|
62
|
+
handleAddMessage({
|
|
63
|
+
message: formState.message,
|
|
64
|
+
severity: formState.severity || "error",
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
if (formState.severity === "success") {
|
|
68
|
+
revalidateCallback && revalidateCallback();
|
|
69
|
+
handleClose && handleClose();
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}, [formState?.message]);
|
|
73
|
+
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (formState?.strapiErrors) {
|
|
76
|
+
handleAddMessage({
|
|
77
|
+
message: formState.strapiErrors.message || "Error creating vendor",
|
|
78
|
+
severity: "error",
|
|
79
|
+
});
|
|
59
80
|
}
|
|
60
|
-
}, [formState
|
|
81
|
+
}, [formState?.strapiErrors]);
|
|
61
82
|
|
|
62
83
|
return (
|
|
63
|
-
<Box
|
|
64
|
-
/* sx={[
|
|
65
|
-
// You cannot spread `sx` directly because `SxProps` (typeof sx) can be an array.
|
|
66
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
67
|
-
]} */
|
|
68
|
-
component={Paper}
|
|
69
|
-
sx={{ p: 2 }}
|
|
70
|
-
>
|
|
84
|
+
<Box sx={[...(Array.isArray(sx) ? sx : [sx])]}>
|
|
71
85
|
<form action={formAction}>
|
|
72
86
|
<Grid container spacing={2}>
|
|
73
87
|
<Grid item xs={12}>
|
|
@@ -176,24 +190,20 @@ export function AddVendorForm({
|
|
|
176
190
|
</Button>
|
|
177
191
|
</Grid>
|
|
178
192
|
</Grid>
|
|
179
|
-
</Grid>
|
|
193
|
+
</Grid>{" "}
|
|
180
194
|
<Grid item xs={12}>
|
|
181
195
|
<Stack
|
|
182
|
-
direction="row
|
|
196
|
+
direction="row"
|
|
183
197
|
spacing={2}
|
|
184
|
-
|
|
185
|
-
sx={{
|
|
186
|
-
py: 1,
|
|
187
|
-
}}
|
|
198
|
+
justifyContent="flex-end"
|
|
199
|
+
sx={{ mt: 2 }}
|
|
188
200
|
>
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
{formState?.message && (
|
|
195
|
-
<Alert severity="error">{formState?.message}</Alert>
|
|
201
|
+
{handleClose && (
|
|
202
|
+
<Button onClick={handleClose} variant="outlined">
|
|
203
|
+
Cancel
|
|
204
|
+
</Button>
|
|
196
205
|
)}
|
|
206
|
+
<SubmitButton text="Create Vendor" loadingText="Creating..." />
|
|
197
207
|
</Stack>
|
|
198
208
|
</Grid>
|
|
199
209
|
</Grid>
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
|
|
3
|
-
import React, { useState } from "react";
|
|
3
|
+
import React, { useState, useEffect } from "react";
|
|
4
4
|
import Paper from "@mui/material/Paper";
|
|
5
5
|
import Box from "@mui/material/Box";
|
|
6
6
|
import Stack from "@mui/material/Stack";
|
|
7
|
-
import
|
|
7
|
+
import Button from "@mui/material/Button";
|
|
8
8
|
import TextField from "@mui/material/TextField";
|
|
9
9
|
import Typography from "@mui/material/Typography";
|
|
10
10
|
import { SubmitButton } from "../../SubmitButton";
|
|
11
11
|
import { useFormState } from "react-dom";
|
|
12
|
-
import {
|
|
12
|
+
import { useSnackbar } from "../../../context/common/SnackbarContext";
|
|
13
13
|
import { updateVendorAction } from "../../../data/actions/logistics/vendor/updateVendorAction";
|
|
14
14
|
import Grid from "@mui/material/Grid";
|
|
15
15
|
import { Vendor } from "../../../types/logistics/Vendor";
|
|
@@ -34,19 +34,24 @@ const INITIAL_STATE = {
|
|
|
34
34
|
strapiErrors: null,
|
|
35
35
|
data: null,
|
|
36
36
|
message: null,
|
|
37
|
+
severity: null as "success" | "error" | "info" | "warning" | null,
|
|
37
38
|
};
|
|
38
39
|
|
|
40
|
+
interface EditVendorFormProps {
|
|
41
|
+
data: Vendor;
|
|
42
|
+
productNamesArr: ProductName[];
|
|
43
|
+
revalidateCallback?: () => void;
|
|
44
|
+
handleClose?: () => void;
|
|
45
|
+
sx?: SxProps;
|
|
46
|
+
}
|
|
47
|
+
|
|
39
48
|
export function EditVendorForm({
|
|
40
49
|
data,
|
|
41
50
|
productNamesArr,
|
|
42
51
|
revalidateCallback,
|
|
52
|
+
handleClose,
|
|
43
53
|
sx,
|
|
44
|
-
}: {
|
|
45
|
-
data: Vendor;
|
|
46
|
-
productNamesArr: ProductName[];
|
|
47
|
-
revalidateCallback?: () => void;
|
|
48
|
-
sx?: SxProps;
|
|
49
|
-
}) {
|
|
54
|
+
}: EditVendorFormProps) {
|
|
50
55
|
const {
|
|
51
56
|
id,
|
|
52
57
|
website_url,
|
|
@@ -64,6 +69,30 @@ export function EditVendorForm({
|
|
|
64
69
|
updateVendorAction,
|
|
65
70
|
INITIAL_STATE
|
|
66
71
|
);
|
|
72
|
+
const { handleAddMessage } = useSnackbar();
|
|
73
|
+
|
|
74
|
+
useEffect(() => {
|
|
75
|
+
if (formState?.message) {
|
|
76
|
+
handleAddMessage({
|
|
77
|
+
message: formState.message,
|
|
78
|
+
severity: formState.severity || "error",
|
|
79
|
+
});
|
|
80
|
+
|
|
81
|
+
if (formState.severity === "success") {
|
|
82
|
+
revalidateCallback && revalidateCallback();
|
|
83
|
+
handleClose && handleClose();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
}, [formState?.message]);
|
|
87
|
+
|
|
88
|
+
useEffect(() => {
|
|
89
|
+
if (formState?.strapiErrors) {
|
|
90
|
+
handleAddMessage({
|
|
91
|
+
message: formState.strapiErrors.message || "Error updating vendor",
|
|
92
|
+
severity: "error",
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
}, [formState?.strapiErrors]);
|
|
67
96
|
|
|
68
97
|
const initialProducts = products?.data || [];
|
|
69
98
|
|
|
@@ -93,14 +122,7 @@ export function EditVendorForm({
|
|
|
93
122
|
const [newContacts, setNewContacts] = useState<ContactsFieldsProps[]>([]);
|
|
94
123
|
|
|
95
124
|
return (
|
|
96
|
-
<Box
|
|
97
|
-
sx={[
|
|
98
|
-
// You cannot spread `sx` directly because `SxProps` (typeof sx) can be an array.
|
|
99
|
-
{ p: 2 },
|
|
100
|
-
...(Array.isArray(sx) ? sx : [sx]),
|
|
101
|
-
]}
|
|
102
|
-
component={Paper}
|
|
103
|
-
>
|
|
125
|
+
<Box sx={[...(Array.isArray(sx) ? sx : [sx])]}>
|
|
104
126
|
<form action={formAction}>
|
|
105
127
|
{id && <input id="id" type="hidden" name="id" value={id} />}
|
|
106
128
|
<Grid container spacing={2}>
|
|
@@ -172,11 +194,9 @@ export function EditVendorForm({
|
|
|
172
194
|
currentValue={initialProducts.map((prod) => prod.id)}
|
|
173
195
|
/>
|
|
174
196
|
</Grid>
|
|
175
|
-
|
|
176
197
|
<Grid item xs={12} sx={{ mt: 1 }}>
|
|
177
198
|
<Typography variant="h6">Contacts</Typography>
|
|
178
199
|
</Grid>
|
|
179
|
-
|
|
180
200
|
{oldContacts?.map((contact, index) => {
|
|
181
201
|
if (contact.data?.id) {
|
|
182
202
|
if (open.includes(contact.data?.id)) {
|
|
@@ -219,7 +239,6 @@ export function EditVendorForm({
|
|
|
219
239
|
}
|
|
220
240
|
return null;
|
|
221
241
|
})}
|
|
222
|
-
|
|
223
242
|
{newContacts.map((contact, index) => {
|
|
224
243
|
return (
|
|
225
244
|
<Grid item xs={12} md={6} lg={4} key={contact.data?.uuid}>
|
|
@@ -245,7 +264,6 @@ export function EditVendorForm({
|
|
|
245
264
|
</Grid>
|
|
246
265
|
);
|
|
247
266
|
})}
|
|
248
|
-
|
|
249
267
|
<Grid
|
|
250
268
|
item
|
|
251
269
|
xs={12}
|
|
@@ -285,25 +303,20 @@ export function EditVendorForm({
|
|
|
285
303
|
) : (
|
|
286
304
|
<Typography>No notes to display</Typography>
|
|
287
305
|
)}
|
|
288
|
-
</Grid>
|
|
289
|
-
|
|
306
|
+
</Grid>{" "}
|
|
290
307
|
<Grid item xs={12}>
|
|
291
308
|
<Stack
|
|
292
|
-
direction="row
|
|
309
|
+
direction="row"
|
|
293
310
|
spacing={2}
|
|
294
|
-
|
|
295
|
-
sx={{
|
|
296
|
-
py: 1,
|
|
297
|
-
}}
|
|
311
|
+
justifyContent="flex-end"
|
|
312
|
+
sx={{ mt: 2 }}
|
|
298
313
|
>
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
{formState?.message && (
|
|
305
|
-
<Alert severity="error">{formState?.message}</Alert>
|
|
314
|
+
{handleClose && (
|
|
315
|
+
<Button onClick={handleClose} variant="outlined">
|
|
316
|
+
Cancel
|
|
317
|
+
</Button>
|
|
306
318
|
)}
|
|
319
|
+
<SubmitButton text="Update Vendor" loadingText="Updating..." />
|
|
307
320
|
</Stack>
|
|
308
321
|
</Grid>
|
|
309
322
|
</Grid>
|
|
@@ -5,44 +5,60 @@ import { flattenAttributes } from "../../../../lib/utils";
|
|
|
5
5
|
import { parseFormData } from "../../../../lib/parseFormData";
|
|
6
6
|
|
|
7
7
|
export async function createVendorAction(prevState: any, formData: FormData) {
|
|
8
|
-
|
|
8
|
+
try {
|
|
9
|
+
const parsedFormData = parseFormData(formData);
|
|
9
10
|
|
|
10
|
-
|
|
11
|
+
if (parsedFormData.data.products) {
|
|
12
|
+
parsedFormData.data.products = JSON.parse(parsedFormData.data.products);
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
const responseData = await mutateData(
|
|
16
|
+
"POST",
|
|
17
|
+
`/api/vendor-profiles`,
|
|
18
|
+
parsedFormData
|
|
19
|
+
);
|
|
20
|
+
|
|
21
|
+
if (!responseData) {
|
|
22
|
+
return {
|
|
23
|
+
...prevState,
|
|
24
|
+
strapiErrors: null,
|
|
25
|
+
zodErrors: null,
|
|
26
|
+
message:
|
|
27
|
+
"Something went wrong while creating the vendor. Please try again.",
|
|
28
|
+
severity: "error" as const,
|
|
29
|
+
};
|
|
30
|
+
}
|
|
15
31
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
32
|
+
if (responseData.error) {
|
|
33
|
+
return {
|
|
34
|
+
...prevState,
|
|
35
|
+
strapiErrors: responseData.error,
|
|
36
|
+
zodErrors: null,
|
|
37
|
+
message:
|
|
38
|
+
"Failed to create vendor. Please check the form and try again.",
|
|
39
|
+
severity: "error" as const,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
21
42
|
|
|
22
|
-
|
|
43
|
+
const flattenedData = flattenAttributes(responseData);
|
|
23
44
|
|
|
24
|
-
if (!responseData) {
|
|
25
45
|
return {
|
|
26
46
|
...prevState,
|
|
47
|
+
data: flattenedData,
|
|
27
48
|
strapiErrors: null,
|
|
28
|
-
|
|
49
|
+
zodErrors: null,
|
|
50
|
+
message: "Vendor created successfully!",
|
|
51
|
+
severity: "success" as const,
|
|
29
52
|
};
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
if (responseData.error) {
|
|
53
|
+
} catch (error) {
|
|
54
|
+
console.error("Error creating vendor:", error);
|
|
33
55
|
return {
|
|
34
56
|
...prevState,
|
|
35
|
-
|
|
36
|
-
|
|
57
|
+
data: null,
|
|
58
|
+
strapiErrors: null,
|
|
59
|
+
zodErrors: null,
|
|
60
|
+
message: "An unexpected error occurred. Please try again later.",
|
|
61
|
+
severity: "error" as const,
|
|
37
62
|
};
|
|
38
63
|
}
|
|
39
|
-
|
|
40
|
-
const flattenedData = flattenAttributes(responseData);
|
|
41
|
-
|
|
42
|
-
return {
|
|
43
|
-
...prevState,
|
|
44
|
-
message: "New Vendor Created",
|
|
45
|
-
data: flattenedData,
|
|
46
|
-
strapiErrors: null,
|
|
47
|
-
};
|
|
48
64
|
}
|
|
@@ -4,43 +4,75 @@ import { mutateData } from "../../../services/mutate-data";
|
|
|
4
4
|
import { flattenAttributes } from "../../../../lib/utils";
|
|
5
5
|
import { parseFormData } from "../../../../lib/parseFormData";
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
interface UpdateVendorState {
|
|
8
|
+
data: any | null;
|
|
9
|
+
message: string | null;
|
|
10
|
+
severity: "success" | "error" | "info" | "warning" | null;
|
|
11
|
+
strapiErrors: any | null;
|
|
12
|
+
zodErrors: any | null;
|
|
13
|
+
}
|
|
9
14
|
|
|
10
|
-
|
|
15
|
+
export async function updateVendorAction(
|
|
16
|
+
prevState: any,
|
|
17
|
+
formData: FormData
|
|
18
|
+
): Promise<UpdateVendorState> {
|
|
19
|
+
try {
|
|
20
|
+
const rawFormData = Object.fromEntries(formData);
|
|
21
|
+
const parsedFormData = parseFormData(formData);
|
|
11
22
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
23
|
+
if (parsedFormData.data.products) {
|
|
24
|
+
parsedFormData.data.products = JSON.parse(parsedFormData.data.products);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const responseData = await mutateData(
|
|
28
|
+
"PUT",
|
|
29
|
+
`/api/vendor-profiles/${rawFormData.id}`,
|
|
30
|
+
parsedFormData
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
if (!responseData) {
|
|
34
|
+
return {
|
|
35
|
+
...prevState,
|
|
36
|
+
data: null,
|
|
37
|
+
strapiErrors: null,
|
|
38
|
+
zodErrors: null,
|
|
39
|
+
message:
|
|
40
|
+
"Something went wrong while updating the vendor. Please try again.",
|
|
41
|
+
severity: "error" as const,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
if (responseData.error) {
|
|
46
|
+
return {
|
|
47
|
+
...prevState,
|
|
48
|
+
data: null,
|
|
49
|
+
strapiErrors: responseData.error,
|
|
50
|
+
zodErrors: null,
|
|
51
|
+
message:
|
|
52
|
+
"Failed to update vendor. Please check the form and try again.",
|
|
53
|
+
severity: "error" as const,
|
|
54
|
+
};
|
|
55
|
+
}
|
|
15
56
|
|
|
16
|
-
|
|
17
|
-
"PUT",
|
|
18
|
-
`/api/vendor-profiles/${rawFormData.id}`,
|
|
19
|
-
parsedFormData
|
|
20
|
-
);
|
|
57
|
+
const flattenedData = flattenAttributes(responseData);
|
|
21
58
|
|
|
22
|
-
if (!responseData) {
|
|
23
59
|
return {
|
|
24
60
|
...prevState,
|
|
61
|
+
data: flattenedData,
|
|
25
62
|
strapiErrors: null,
|
|
26
|
-
|
|
63
|
+
zodErrors: null,
|
|
64
|
+
message: "Vendor updated successfully!",
|
|
65
|
+
severity: "success" as const,
|
|
27
66
|
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
if (responseData.error) {
|
|
67
|
+
} catch (error) {
|
|
68
|
+
console.error("Error updating vendor:", error);
|
|
31
69
|
return {
|
|
32
70
|
...prevState,
|
|
33
|
-
|
|
34
|
-
|
|
71
|
+
data: null,
|
|
72
|
+
strapiErrors: null,
|
|
73
|
+
zodErrors: null,
|
|
74
|
+
message: "An unexpected error occurred. Please try again later.",
|
|
75
|
+
severity: "error" as const,
|
|
35
76
|
};
|
|
36
77
|
}
|
|
37
|
-
|
|
38
|
-
const flattenedData = flattenAttributes(responseData);
|
|
39
|
-
|
|
40
|
-
return {
|
|
41
|
-
...prevState,
|
|
42
|
-
message: "Vendor Updated",
|
|
43
|
-
data: flattenedData,
|
|
44
|
-
strapiErrors: null,
|
|
45
|
-
};
|
|
46
78
|
}
|