updateMetadata logic change

This commit is contained in:
Elio Struyf
2022-03-10 09:33:19 +01:00
parent eaa61c1ea1
commit 1038d51e5d
2 changed files with 26 additions and 22 deletions
+25 -21
View File
@@ -145,30 +145,34 @@ export class DataListener extends BaseListener {
// Support multi-level fields
const parentObj = DataListener.getParentObject(article.data, article, parents, blockData);
for (const dateField of dateFields) {
if ((field === dateField.name) && value) {
parentObj[field] = Article.formatDate(new Date(value));
} else if (!imageFields.find(f => f.name === field)) {
// Only override the field data if it is not an multiselect image field
parentObj[field] = value;
}
}
const isDateField = dateFields.some(f => f.name === field);
const isMultiImageField = imageFields.some(f => f.name === field);
for (const imageField of imageFields) {
if (field === imageField.name) {
// If value is an array, it means it comes from the explorer view itself (deletion)
if (Array.isArray(value)) {
parentObj[field] = value || [];
} else { // Otherwise it is coming from the media dashboard (addition)
let fieldValue = parentObj[field];
if (fieldValue && !Array.isArray(fieldValue)) {
fieldValue = [fieldValue];
}
const crntData = Object.assign([], fieldValue);
const allRelPaths = [...(crntData || []), value];
parentObj[field] = [...new Set(allRelPaths)].filter(f => f);
if (isDateField) {
for (const dateField of dateFields) {
if ((field === dateField.name) && value) {
parentObj[field] = Article.formatDate(new Date(value));
}
}
} else if (isMultiImageField) {
for (const imageField of imageFields) {
if (field === imageField.name) {
// If value is an array, it means it comes from the explorer view itself (deletion)
if (Array.isArray(value)) {
parentObj[field] = value || [];
} else { // Otherwise it is coming from the media dashboard (addition)
let fieldValue = parentObj[field];
if (fieldValue && !Array.isArray(fieldValue)) {
fieldValue = [fieldValue];
}
const crntData = Object.assign([], fieldValue);
const allRelPaths = [...(crntData || []), value];
parentObj[field] = [...new Set(allRelPaths)].filter(f => f);
}
}
}
} else {
parentObj[field] = value;
}
ArticleHelper.update(editor, article);
@@ -37,7 +37,7 @@ export const DateTimeField: React.FunctionComponent<IDateTimeFieldProps> = ({lab
if (crntValue?.toISOString() !== stateValue?.toISOString()) {
setDateValue(date);
}
}, [ date ]);
}, [ date, dateValue ]);
return (
<div className={`metadata_field`}>