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) => {
|
const fillImagesArray = (urlsArray) => {
|
||||||
if (!Array.isArray(urlsArray)) return [];
|
if (!Array.isArray(urlsArray)) return [];
|
||||||
return urlsArray.map((url) => ({
|
return urlsArray.map((item) => {
|
||||||
name: url.split('/').pop() || 'file',
|
if (typeof item === 'object' && item !== null) {
|
||||||
url: url,
|
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
|
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) => {
|
const handleSelectCategory = (catId) => {
|
||||||
@@ -384,8 +399,15 @@ onBeforeMount(async () => {
|
|||||||
property.value = { ...property.value, ...data };
|
property.value = { ...property.value, ...data };
|
||||||
featuresValues.value = extractFeaturesValues(data.features);
|
featuresValues.value = extractFeaturesValues(data.features);
|
||||||
|
|
||||||
mainImageUrlsWithData.value = fillImagesArray(data.mainImageUrls || []);
|
const mainImages = (data.signedMainImageUrls && data.signedMainImageUrls.length > 0)
|
||||||
documentUrlsWithData.value = fillImagesArray(data.documentUrls || []);
|
? 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) {
|
if (data.category) {
|
||||||
const catId = typeof data.category === 'object' ? data.category._id : data.category;
|
const catId = typeof data.category === 'object' ? data.category._id : data.category;
|
||||||
@@ -419,10 +441,16 @@ const saveProperty = async () => {
|
|||||||
isSaving.value = true;
|
isSaving.value = true;
|
||||||
try {
|
try {
|
||||||
property.value.mainImageUrls = (mainImageUrlsWithData.value || [])
|
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);
|
.filter(Boolean);
|
||||||
property.value.documentUrls = (documentUrlsWithData.value || [])
|
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);
|
.filter(Boolean);
|
||||||
property.value.features = serializeFeaturesPayload(featuresValues.value);
|
property.value.features = serializeFeaturesPayload(featuresValues.value);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user