diff --git a/src/components/CreateUpdatePost.jsx b/src/components/CreateUpdatePost.jsx index 44527cf..2e8d950 100644 --- a/src/components/CreateUpdatePost.jsx +++ b/src/components/CreateUpdatePost.jsx @@ -1,5 +1,4 @@ import {useCallback, useEffect, useState} from "react"; -import PinIcon from "./icons/PinIcon"; import CloseIcon from "./icons/CloseIcon"; import { EMPTY_FORM, CATEGORIES } from "../config/feedConstants"; import { usePostMutation } from "../hooks/usePostMutation"; @@ -7,7 +6,6 @@ import { useImageUpload, ACCEPT } from "../hooks/useImageUpload"; import { validatePostForm } from "../utils/validatePostForm"; import { formatPhone } from "../utils/formatPhone"; import { useYandexMap } from "../hooks/useYandexMap"; -import { API_URL } from "../config/authConstants"; const MAX_SIZE_MB = 5; @@ -40,21 +38,16 @@ export default function CreateUpdatePost({ onClose, onSuccess, initialData }) { // Ошибки валидации — ключ совпадает с именем поля const [errors, setErrors] = useState({}); - // URL существующей картинки с сервера (только при редактировании) - const existingImageUrl = isEdit && initialData.images?.[0] - ? `${API_URL}${initialData.images[0]}` - : null; - - // Вся логика работы с фото вынесена в хук const { - imageFile, - displayImage, + images: uploadedImages, imgError, compressing, fileInputRef, handleFileChange, removeImage, - } = useImageUpload(existingImageUrl); + getFilesForUpload, + getExistingUrlsToKeep, + } = useImageUpload(isEdit ? initialData.images : []); // Единый хук для создания и обновления const { save, loading: saving, error: apiError } = usePostMutation(); @@ -106,7 +99,15 @@ export default function CreateUpdatePost({ onClose, onSuccess, initialData }) { data.append("category", form.category); data.append("phone", form.phone.trim()); if (form.date) data.append("date", form.date); - if (imageFile) data.append("image", imageFile); + const files = getFilesForUpload(); + files.forEach(f => data.append("images", f)); + + if (isEdit) { + const existing = getExistingUrlsToKeep(); + if (existing.length > 0) { + data.append("existingImages", JSON.stringify(existing)); + } + } if (coords) { data.append("latitude", coords.latitude); @@ -189,41 +190,50 @@ export default function CreateUpdatePost({ onClose, onSuccess, initialData }) { className="f-err-msg">{errors.description}
} - {/* Фотография: превью + удаление или загрузчик */} + {/* Фотографии: сетка превью + кнопка добавления */}{imgError}
} -JPEG / PNG / WebP · до {MAX_SIZE_MB} МБ
+JPEG / PNG / WebP · до {MAX_SIZE_MB} МБ · можно несколько