mirror of
https://github.com/TryGhost/Ghost.git
synced 2025-02-17 23:44:39 -05:00
Handled duplicate newsletter name errors correctly
refs https://github.com/TryGhost/Team/issues/1564 - Shows the error inline - Depends on https://github.com/TryGhost/Ghost/pull/14694
This commit is contained in:
parent
ae1010ea03
commit
bb4b3a7eec
2 changed files with 34 additions and 12 deletions
|
@ -43,30 +43,41 @@ export default class EditNewsletterModal extends Component {
|
||||||
|
|
||||||
@task
|
@task
|
||||||
*saveTask() {
|
*saveTask() {
|
||||||
|
const newsletter = this.args.data.newsletter;
|
||||||
try {
|
try {
|
||||||
yield this.args.data.newsletter.validate({});
|
yield newsletter.validate({});
|
||||||
|
|
||||||
const newEmail = this.args.data.newsletter.senderEmail;
|
const newEmail = newsletter.senderEmail;
|
||||||
|
|
||||||
const result = yield this.args.data.newsletter.save();
|
const result = yield newsletter.save();
|
||||||
|
|
||||||
if (result._meta?.sent_email_verification) {
|
if (result._meta?.sent_email_verification) {
|
||||||
yield this.modals.open(ConfirmNewsletterEmailModal, {
|
yield this.modals.open(ConfirmNewsletterEmailModal, {
|
||||||
newEmail,
|
newEmail,
|
||||||
currentEmail: this.args.data.newsletter.senderEmail
|
currentEmail: newsletter.senderEmail
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
this.args.data.afterSave?.(result);
|
this.args.data.afterSave?.(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
if (e === undefined) {
|
if (error === undefined) {
|
||||||
// Validation error
|
// Validation error
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw e;
|
// Do we have an error that we can show inline?
|
||||||
|
if (error.payload && error.payload.errors) {
|
||||||
|
for (const payloadError of error.payload.errors) {
|
||||||
|
if (payloadError.type === 'ValidationError' && payloadError.property && (payloadError.context || payloadError.message)) {
|
||||||
|
// Context has a better error message for validation errors
|
||||||
|
newsletter.errors.add(payloadError.property, payloadError.context || payloadError.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,23 +39,34 @@ export default class NewNewsletterModal extends Component {
|
||||||
|
|
||||||
@task
|
@task
|
||||||
*saveTask() {
|
*saveTask() {
|
||||||
|
const newsletter = this.args.data.newsletter;
|
||||||
try {
|
try {
|
||||||
yield this.args.data.newsletter.validate({});
|
yield newsletter.validate({});
|
||||||
|
|
||||||
const result = yield this.args.data.newsletter.save({
|
const result = yield newsletter.save({
|
||||||
adapterOptions: {optInExisting: this.optInExisting}
|
adapterOptions: {optInExisting: this.optInExisting}
|
||||||
});
|
});
|
||||||
|
|
||||||
this.args.data.afterSave?.(result);
|
this.args.data.afterSave?.(result);
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
} catch (e) {
|
} catch (error) {
|
||||||
if (e === undefined) {
|
if (error === undefined) {
|
||||||
// Validation error
|
// Validation error
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
throw e;
|
// Do we have an error that we can show inline?
|
||||||
|
if (error.payload && error.payload.errors) {
|
||||||
|
for (const payloadError of error.payload.errors) {
|
||||||
|
if (payloadError.type === 'ValidationError' && payloadError.property && (payloadError.context || payloadError.message)) {
|
||||||
|
// Context has a better error message for validation errors
|
||||||
|
newsletter.errors.add(payloadError.property, payloadError.context || payloadError.message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue