show gallery preview while uploading
This commit is contained in:
parent
3c88d107bf
commit
c37d90500a
|
|
@ -1113,6 +1113,34 @@ export default function MapView({
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
|
const replaceMediaUrl = (from, to) => {
|
||||||
|
if (!from || !to || from === to) return;
|
||||||
|
setDraftMediaUrls((prev) => {
|
||||||
|
let replaced = false;
|
||||||
|
const next = prev.map((value) => {
|
||||||
|
if (value === from) {
|
||||||
|
replaced = true;
|
||||||
|
return to;
|
||||||
|
}
|
||||||
|
return value;
|
||||||
|
});
|
||||||
|
if (!replaced) next.push(to);
|
||||||
|
updateImageVariantsFromGallery(next);
|
||||||
|
return next;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const readFileAsDataURL = (file) => {
|
||||||
|
return new Promise((resolve, reject) => {
|
||||||
|
const reader = new FileReader();
|
||||||
|
reader.onloadend = () => {
|
||||||
|
resolve(reader.result || "");
|
||||||
|
};
|
||||||
|
reader.onerror = reject;
|
||||||
|
reader.readAsDataURL(file);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
const handleAddCustomImageUrl = () => {
|
const handleAddCustomImageUrl = () => {
|
||||||
const raw = (draftImage || "").trim();
|
const raw = (draftImage || "").trim();
|
||||||
if (!raw) {
|
if (!raw) {
|
||||||
|
|
@ -1148,11 +1176,18 @@ export default function MapView({
|
||||||
}
|
}
|
||||||
|
|
||||||
setDraftImageFile(file);
|
setDraftImageFile(file);
|
||||||
const reader = new FileReader();
|
let placeholder = "";
|
||||||
reader.onloadend = () => {
|
try {
|
||||||
setDraftImagePreview(reader.result);
|
const dataUrl = await readFileAsDataURL(file);
|
||||||
};
|
if (typeof dataUrl === "string" && dataUrl) {
|
||||||
reader.readAsDataURL(file);
|
placeholder = dataUrl;
|
||||||
|
setDraftImagePreview(dataUrl);
|
||||||
|
addMediaUrlToGallery(dataUrl);
|
||||||
|
}
|
||||||
|
} catch (err) {
|
||||||
|
console.error("File read error:", err);
|
||||||
|
setSaveError("Failed to read image");
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const formData = new FormData();
|
const formData = new FormData();
|
||||||
|
|
@ -1189,7 +1224,8 @@ export default function MapView({
|
||||||
const fallbackRef = largeRef || mediumRef || smallRef;
|
const fallbackRef = largeRef || mediumRef || smallRef;
|
||||||
const selected = fallbackRef || mediumRef || smallRef;
|
const selected = fallbackRef || mediumRef || smallRef;
|
||||||
if (selected) {
|
if (selected) {
|
||||||
addMediaUrlToGallery(selected);
|
replaceMediaUrl(placeholder, selected);
|
||||||
|
setDraftImagePreview(selected);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error("Image upload error:", err);
|
console.error("Image upload error:", err);
|
||||||
|
|
@ -1390,6 +1426,7 @@ export default function MapView({
|
||||||
|
|
||||||
const galleryPreviewImage =
|
const galleryPreviewImage =
|
||||||
draftMediaUrls[0] ||
|
draftMediaUrls[0] ||
|
||||||
|
draftImagePreview ||
|
||||||
draftImageLarge ||
|
draftImageLarge ||
|
||||||
draftImageMedium ||
|
draftImageMedium ||
|
||||||
draftImageSmall ||
|
draftImageSmall ||
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue