umwd-components 0.1.783 → 0.1.784
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/dist/cjs/src/components/common/AmountUpdater.js +1 -1
- package/dist/cjs/src/components/common/NumberInput.js +1 -1
- package/dist/cjs/src/components/common/TextualAmountUpdater.js +1 -1
- package/dist/cjs/src/components/common/media/minio/UploadMinioMediaForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/IroItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/RmaForm.js +1 -1
- package/dist/cjs/src/components/e-commerce/iro/TextualIROItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/OpoItemUpdater.js +1 -1
- package/dist/cjs/src/components/e-commerce/opo/TextualOpoItemUpdater.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/IPOItemUpdater.js +1 -1
- package/dist/cjs/src/components/logistics/ipo/TextualIPOItemUpdater.js +1 -1
- package/dist/cjs/src/data/actions/media/minio/uploadMinioMediaAction.js +1 -1
- package/dist/cjs/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/src/components/common/AmountUpdater.js +10 -10
- package/dist/esm/src/components/common/NumberInput.js +13 -13
- package/dist/esm/src/components/common/TextualAmountUpdater.js +11 -11
- package/dist/esm/src/components/common/media/minio/UploadMinioMediaForm.js +97 -55
- package/dist/esm/src/components/e-commerce/iro/IroItemUpdater.js +3 -3
- package/dist/esm/src/components/e-commerce/iro/RmaForm.js +14 -5
- package/dist/esm/src/components/e-commerce/iro/TextualIROItemUpdater.js +3 -3
- package/dist/esm/src/components/e-commerce/opo/OpoItemUpdater.js +3 -3
- package/dist/esm/src/components/e-commerce/opo/TextualOpoItemUpdater.js +3 -3
- package/dist/esm/src/components/logistics/ipo/IPOItemUpdater.js +3 -3
- package/dist/esm/src/components/logistics/ipo/TextualIPOItemUpdater.js +3 -3
- package/dist/esm/src/components/logistics/report/SimpleReportFields.js +1 -1
- package/dist/esm/src/data/actions/media/minio/uploadMinioMediaAction.js +82 -56
- package/dist/esm/tsconfig.build.tsbuildinfo +1 -1
- package/dist/esm/types/components/common/AmountUpdater.d.ts +1 -1
- package/dist/esm/types/components/common/NumberInput.d.ts +2 -2
- package/dist/esm/types/components/common/TextualAmountUpdater.d.ts +1 -1
- package/dist/esm/types/components/common/media/minio/UploadMinioMediaForm.d.ts +7 -1
- package/dist/esm/types/types/common/AmountUpdater.d.ts +4 -4
- package/package.json +1 -1
|
@@ -7,97 +7,122 @@
|
|
|
7
7
|
import { minioUploadService } from '../../../services/common/media/minio/minioUploadService.js';
|
|
8
8
|
import { flattenAttributes } from '../../../../lib/utils.js';
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
"image/jpeg",
|
|
14
|
-
"image/jpg",
|
|
15
|
-
"image/png",
|
|
16
|
-
"image/webp",
|
|
17
|
-
]; */
|
|
18
|
-
// VALIDATE IMAGE WITH ZOD
|
|
19
|
-
/* const imageSchema = z.object({
|
|
20
|
-
image: z
|
|
10
|
+
// VALIDATE FILES WITH ZOD
|
|
11
|
+
/* const filesSchema = z.object({
|
|
12
|
+
files: z
|
|
21
13
|
.any()
|
|
22
|
-
.refine((
|
|
23
|
-
if (
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
14
|
+
.refine((files) => {
|
|
15
|
+
if (files instanceof FileList) {
|
|
16
|
+
return Array.from(files).every(file => file.size > 0 && file.name !== undefined);
|
|
17
|
+
}
|
|
18
|
+
if (files instanceof File) {
|
|
19
|
+
return files.size > 0 && files.name !== undefined;
|
|
20
|
+
}
|
|
21
|
+
return false;
|
|
22
|
+
}, "Please select valid files.")
|
|
27
23
|
.refine(
|
|
28
|
-
(
|
|
29
|
-
|
|
24
|
+
(files) => {
|
|
25
|
+
const fileArray = files instanceof FileList ? Array.from(files) : [files];
|
|
26
|
+
return fileArray.every(file => ACCEPTED_FILE_TYPES.includes(file?.type));
|
|
27
|
+
},
|
|
28
|
+
"Invalid file types selected."
|
|
30
29
|
)
|
|
31
|
-
.refine(
|
|
30
|
+
.refine(
|
|
31
|
+
(files) => {
|
|
32
|
+
const fileArray = files instanceof FileList ? Array.from(files) : [files];
|
|
33
|
+
return fileArray.every(file => file.size <= MAX_FILE_SIZE);
|
|
34
|
+
},
|
|
35
|
+
`Max file size is 5MB.`
|
|
36
|
+
),
|
|
32
37
|
}); */
|
|
33
38
|
async function uploadMinioMediaAction(prevState, formData) {
|
|
34
39
|
try {
|
|
35
|
-
// CONVERT FORM DATA TO
|
|
40
|
+
// CONVERT FORM DATA TO OBJECT
|
|
36
41
|
const rawFormData = Object.fromEntries(formData);
|
|
37
42
|
const bucketName = rawFormData.bucketName;
|
|
38
|
-
const
|
|
39
|
-
const files = rawFormData.files;
|
|
43
|
+
const files = formData.getAll("files");
|
|
40
44
|
const reference = rawFormData.reference;
|
|
41
45
|
const refID = rawFormData.refID;
|
|
42
46
|
const field = rawFormData.field;
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
console.log("fileName:", fileName);
|
|
47
|
-
console.log("bucketName:", bucketName);
|
|
48
|
-
console.log("reference:", reference);
|
|
49
|
-
console.log("refID:", refID);
|
|
50
|
-
console.log("field:", field);
|
|
51
|
-
// Check if files is a File object
|
|
52
|
-
if (!(files instanceof File)) {
|
|
47
|
+
// Filter out empty files and ensure we have File objects
|
|
48
|
+
const validFiles = files.filter((file) => file instanceof File && file.size > 0 && file.name !== undefined);
|
|
49
|
+
if (validFiles.length === 0) {
|
|
53
50
|
return {
|
|
54
51
|
...prevState,
|
|
55
52
|
strapiErrors: null,
|
|
56
53
|
zodErrors: null,
|
|
57
|
-
message: "No valid
|
|
54
|
+
message: "No valid files provided",
|
|
55
|
+
severity: "error",
|
|
58
56
|
};
|
|
59
57
|
}
|
|
60
|
-
//
|
|
61
|
-
const arrayBuffer = await files.arrayBuffer();
|
|
62
|
-
console.log("arrayBuffer:", arrayBuffer);
|
|
63
|
-
const fileContent = Buffer.from(arrayBuffer).toString("base64");
|
|
64
|
-
console.log("fileContent length:", fileContent.length);
|
|
65
|
-
// VALIDATE THE IMAGE
|
|
58
|
+
// VALIDATE THE FILES
|
|
66
59
|
const validatedFields = {
|
|
67
60
|
success: true,
|
|
68
61
|
};
|
|
69
|
-
/*
|
|
70
|
-
|
|
71
|
-
|
|
62
|
+
/* filesSchema.safeParse({
|
|
63
|
+
files: validFiles.length === 1 ? validFiles[0] : validFiles,
|
|
64
|
+
}); */
|
|
72
65
|
if (!validatedFields.success) ;
|
|
73
|
-
console.log(
|
|
74
|
-
//
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
66
|
+
console.log(`Uploading ${validFiles.length} file(s):`);
|
|
67
|
+
// Upload each file
|
|
68
|
+
const uploadResults = [];
|
|
69
|
+
const errors = [];
|
|
70
|
+
for (const file of validFiles) {
|
|
71
|
+
try {
|
|
72
|
+
// Convert file to ArrayBuffer first, then to Buffer, then to base64 string
|
|
73
|
+
const arrayBuffer = await file.arrayBuffer();
|
|
74
|
+
const fileContent = Buffer.from(arrayBuffer).toString("base64");
|
|
75
|
+
console.log("Uploading file:", file.name, "Size:", Math.round(fileContent.length / 1024 / 1024), "MB");
|
|
76
|
+
// UPLOAD FILE TO MINIO
|
|
77
|
+
const fileUploadResponse = reference && refID && field
|
|
78
|
+
? await minioUploadService(bucketName, file.name, fileContent, reference, refID, field)
|
|
79
|
+
: await minioUploadService(bucketName, file.name, fileContent);
|
|
80
|
+
if (!fileUploadResponse) {
|
|
81
|
+
errors.push(`Failed to upload ${file.name}`);
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
if (fileUploadResponse.error) {
|
|
85
|
+
errors.push(`Failed to upload ${file.name}: ${fileUploadResponse.error.message || 'Unknown error'}`);
|
|
86
|
+
continue;
|
|
87
|
+
}
|
|
88
|
+
const flattenedData = flattenAttributes(fileUploadResponse);
|
|
89
|
+
uploadResults.push({
|
|
90
|
+
fileName: file.name,
|
|
91
|
+
data: flattenedData
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
catch (fileError) {
|
|
95
|
+
console.error(`Error uploading ${file.name}:`, fileError);
|
|
96
|
+
errors.push(`Failed to process ${file.name}`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Check results
|
|
100
|
+
if (uploadResults.length === 0) {
|
|
79
101
|
return {
|
|
80
102
|
...prevState,
|
|
81
|
-
strapiErrors: null,
|
|
103
|
+
strapiErrors: errors.length > 0 ? { message: errors.join(', ') } : null,
|
|
82
104
|
zodErrors: null,
|
|
83
|
-
message: "
|
|
105
|
+
message: "Failed to upload any files",
|
|
106
|
+
severity: "error",
|
|
84
107
|
};
|
|
85
108
|
}
|
|
86
|
-
if (
|
|
109
|
+
if (errors.length > 0 && uploadResults.length > 0) {
|
|
87
110
|
return {
|
|
88
111
|
...prevState,
|
|
89
|
-
|
|
112
|
+
data: uploadResults,
|
|
90
113
|
zodErrors: null,
|
|
91
|
-
|
|
114
|
+
strapiErrors: null,
|
|
115
|
+
message: `Uploaded ${uploadResults.length} file(s) successfully. ${errors.length} file(s) failed: ${errors.join(', ')}`,
|
|
116
|
+
severity: "warning",
|
|
92
117
|
};
|
|
93
118
|
}
|
|
94
|
-
const flattenedData = flattenAttributes(fileUploadResponse);
|
|
95
119
|
return {
|
|
96
120
|
...prevState,
|
|
97
|
-
data:
|
|
121
|
+
data: uploadResults,
|
|
98
122
|
zodErrors: null,
|
|
99
123
|
strapiErrors: null,
|
|
100
|
-
message:
|
|
124
|
+
message: `Successfully uploaded ${uploadResults.length} file(s)`,
|
|
125
|
+
severity: "success",
|
|
101
126
|
};
|
|
102
127
|
}
|
|
103
128
|
catch (error) {
|
|
@@ -107,6 +132,7 @@ async function uploadMinioMediaAction(prevState, formData) {
|
|
|
107
132
|
strapiErrors: null,
|
|
108
133
|
zodErrors: null,
|
|
109
134
|
message: "Failed to process file upload",
|
|
135
|
+
severity: "error",
|
|
110
136
|
};
|
|
111
137
|
}
|
|
112
138
|
}
|