Merge pull request #4 from SamandarTurgunboyev/samandar

bug fix
This commit is contained in:
Samandar Turg'unboev
2025-11-05 15:44:06 +05:00
committed by GitHub
2 changed files with 48 additions and 38 deletions

View File

@@ -335,9 +335,9 @@ const StepOne = ({
value.amenities?.forEach((e, i) => { value.amenities?.forEach((e, i) => {
formData.append(`ticket_amenities[${i}]`, String(e)); formData.append(`ticket_amenities[${i}]`, String(e));
}); });
value.images.forEach((e) => { value.images.forEach((e, i) => {
if (e instanceof File) { if (e instanceof File) {
formData.append("ticket_images", e); formData.append(`ticket_images[${i}]`, e);
} }
}); });
value.amenities?.forEach((e, i) => { value.amenities?.forEach((e, i) => {
@@ -354,13 +354,17 @@ const StepOne = ({
} }
}); });
value.ticket_itinerary?.forEach((itinerary, i) => { value.ticket_itinerary?.forEach((itinerary, i) => {
// Har bir itinerary uchun asosiy maydonlar itinerary.ticket_itinerary_image.forEach((img) => {
if (img.image instanceof File) {
formData.append(`ticket_itinerary[${i}]title`, itinerary.title); formData.append(`ticket_itinerary[${i}]title`, itinerary.title);
formData.append(`ticket_itinerary[${i}]title_ru`, itinerary.title_ru); formData.append(`ticket_itinerary[${i}]title_ru`, itinerary.title_ru);
formData.append( formData.append(
`ticket_itinerary[${i}]duration`, `ticket_itinerary[${i}]duration`,
String(itinerary.duration), String(itinerary.duration),
); );
}
});
// Har bir itinerary uchun asosiy maydonlar
// 🖼 Rasmlar (faqat yangi yuklangan File-larni yuborish) // 🖼 Rasmlar (faqat yangi yuklangan File-larni yuborish)
if (Array.isArray(itinerary.ticket_itinerary_image)) { if (Array.isArray(itinerary.ticket_itinerary_image)) {
@@ -381,9 +385,10 @@ const StepOne = ({
} }
}); });
} }
itinerary.ticket_itinerary_image.forEach((img) => {
// 📍 Destinations (yonalishlar)
if (Array.isArray(itinerary.ticket_itinerary_destinations)) { if (Array.isArray(itinerary.ticket_itinerary_destinations)) {
if (img.image instanceof File) {
// 📍 Destinations (yonalishlar)
itinerary.ticket_itinerary_destinations.forEach((dest, k) => { itinerary.ticket_itinerary_destinations.forEach((dest, k) => {
formData.append( formData.append(
`ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name`, `ticket_itinerary[${i}]ticket_itinerary_destinations[${k}]name`,
@@ -395,6 +400,8 @@ const StepOne = ({
); );
}); });
} }
}
});
}); });
value.hotel_meals.forEach((e, i) => { value.hotel_meals.forEach((e, i) => {

View File

@@ -33,13 +33,13 @@ export default function TicketsImagesModel({
useEffect(() => { useEffect(() => {
if (imageUrl) { if (imageUrl) {
if (Array.isArray(imageUrl)) { const urls = Array.isArray(imageUrl) ? imageUrl : [imageUrl];
setPreviews(imageUrl); setPreviews(urls);
} else {
setPreviews([imageUrl]); // 🔥 form bilan sinxronlash
form.setValue(name, urls);
} }
} }, [imageUrl, form, name]);
}, [imageUrl]);
return ( return (
<FormField <FormField
@@ -62,20 +62,23 @@ export default function TicketsImagesModel({
const newFiles = e.target.files const newFiles = e.target.files
? Array.from(e.target.files) ? Array.from(e.target.files)
: []; : [];
const currentValue = form.getValues(name) || [];
const currentUrls = previews || [];
if (multiple) { if (multiple) {
// ✅ Bir nechta rasm // ✅ eski URLlarni va yangi fayllarni birlashtirish
const allFiles = [ const combined = [...currentValue, ...newFiles];
...(form.getValues(name) || []), form.setValue(name, combined);
...newFiles,
]; const newPreviews = [
form.setValue(name, allFiles); ...currentUrls,
const urls = allFiles.map((file: File) => ...newFiles.map((file: File) =>
URL.createObjectURL(file), URL.createObjectURL(file),
); ),
setPreviews(urls); ];
setPreviews(newPreviews);
} else { } else {
// ✅ Faqat bitta rasm (banner) // ✅ bitta rasm holati
const singleFile = newFiles[0] || null; const singleFile = newFiles[0] || null;
form.setValue(name, singleFile); form.setValue(name, singleFile);
setPreviews( setPreviews(