fix(property): load signed urls for image gallery and strip query params on save
deploy-chabokan / deploy (push) Canceled after 0s

This commit is contained in:
2026-08-19 06:30:07 +03:30
parent b6fde3e541
commit e2aa60c54c
+37 -9
View File
@@ -322,11 +322,26 @@ const groupedFeatures = computed(() => {
const fillImagesArray = (urlsArray) => {
if (!Array.isArray(urlsArray)) return [];
return urlsArray.map((url) => ({
name: url.split('/').pop() || 'file',
url: url,
progress: 100
}));
return urlsArray.map((item) => {
if (typeof item === 'object' && item !== null) {
const rawUrl = item.url || item.source || '';
const rawName = item.fileName || item.name || (rawUrl ? rawUrl.split('?')[0].split('/').pop() : 'file');
return {
name: rawName,
url: rawUrl,
source: item.fileName || rawUrl.split('?')[0].split('/').pop() || '',
progress: 100
};
}
const urlStr = String(item || '');
const cleanUrl = urlStr.split('?')[0];
return {
name: cleanUrl.split('/').pop() || 'file',
url: urlStr,
source: cleanUrl.split('/').pop() || '',
progress: 100
};
});
};
const handleSelectCategory = (catId) => {
@@ -384,8 +399,15 @@ onBeforeMount(async () => {
property.value = { ...property.value, ...data };
featuresValues.value = extractFeaturesValues(data.features);
mainImageUrlsWithData.value = fillImagesArray(data.mainImageUrls || []);
documentUrlsWithData.value = fillImagesArray(data.documentUrls || []);
const mainImages = (data.signedMainImageUrls && data.signedMainImageUrls.length > 0)
? data.signedMainImageUrls
: (data.mainImageUrls || []);
const docs = (data.signedDocumentUrls && data.signedDocumentUrls.length > 0)
? data.signedDocumentUrls
: (data.documentUrls || []);
mainImageUrlsWithData.value = fillImagesArray(mainImages);
documentUrlsWithData.value = fillImagesArray(docs);
if (data.category) {
const catId = typeof data.category === 'object' ? data.category._id : data.category;
@@ -419,10 +441,16 @@ const saveProperty = async () => {
isSaving.value = true;
try {
property.value.mainImageUrls = (mainImageUrlsWithData.value || [])
.map((x) => (typeof x === 'string' ? x : x.url || x.source || ''))
.map((x) => {
const raw = typeof x === 'string' ? x : (x.url || x.source || '');
return raw.split('?')[0];
})
.filter(Boolean);
property.value.documentUrls = (documentUrlsWithData.value || [])
.map((x) => (typeof x === 'string' ? x : x.url || x.source || ''))
.map((x) => {
const raw = typeof x === 'string' ? x : (x.url || x.source || '');
return raw.split('?')[0];
})
.filter(Boolean);
property.value.features = serializeFeaturesPayload(featuresValues.value);