fix(property): load signed urls for image gallery and strip query params on save
deploy-chabokan / deploy (push) Canceled after 0s
deploy-chabokan / deploy (push) Canceled after 0s
This commit is contained in:
@@ -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);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user