diff --git a/dashboard/src/models/MailModel.js b/dashboard/src/models/MailModel.js index cef785054..1cce295b0 100644 --- a/dashboard/src/models/MailModel.js +++ b/dashboard/src/models/MailModel.js @@ -72,6 +72,17 @@ function create() { if (result.status !== 202) return [result]; return [null]; }, + async setMailFromValidation(domain, enabled) { + let result; + try { + result = await fetcher.post(`${API_ORIGIN}/api/v1/mail/${domain}/mail_from_validation`, { enabled }, { access_token: accessToken }); + } catch (e) { + return [e]; + } + + if (result.status !== 202) return [result]; + return [null]; + }, async setEnabled(domain, enabled) { let result; try { diff --git a/dashboard/src/views/EmailDomainView.vue b/dashboard/src/views/EmailDomainView.vue index 4ad90d5b8..10e487dee 100644 --- a/dashboard/src/views/EmailDomainView.vue +++ b/dashboard/src/views/EmailDomainView.vue @@ -79,7 +79,20 @@ async function onEnableIncoming() { const mailFromValidation = ref(false); +const mailFromValidationBusy = ref(false); +async function onToggleMailFromValidation(value) { + mailFromValidationBusy.value = true; + + const [error] = await mailModel.setMailFromValidation(domain.value, value); + if (error) { + mailFromValidation.value = !value; + mailFromValidationBusy.value = false; + return console.error(error); + } + + mailFromValidationBusy.value = false; +} async function refreshMailConfig() { @@ -148,7 +161,7 @@ onMounted(async () => {
- +