Improve error feedback for spam filter dialog

This commit is contained in:
Johannes Zellner
2025-09-23 14:21:50 +02:00
parent 4704c2a178
commit 7522ac1eaf

View File

@@ -105,7 +105,7 @@ async function onChangeFts(value) {
const spamFilterDialog = useTemplateRef('spamFilterDialog');
const spamFilterBusy = ref(false);
const spamFilterError = ref('');
const spamFilterError = ref({});
const blocklist = ref([]);
const blocklistString = ref('');
const allowlist = ref([]);
@@ -117,7 +117,7 @@ const blocklistCount = computed(() => {
});
function onShowSpamFilterDialog() {
spamFilterError.value = '';
spamFilterError.value = {};
spamFilterBusy.value = false;
blocklistString.value = blocklist.value.join('\n');
allowlistString.value = allowlist.value.join('\n');
@@ -126,7 +126,7 @@ function onShowSpamFilterDialog() {
}
async function onSubmitSpamFilter() {
spamFilterError.value = '';
spamFilterError.value = {};
spamFilterBusy.value = true;
const block = blocklistString.value.split('\n').filter((l) => { return l !== ''; });
@@ -134,16 +134,16 @@ async function onSubmitSpamFilter() {
let [error] = await mailModel.setSpamAcl(allow, block);
if (error) {
spamFilterError.value = error.body ? error.body.message : 'Internal error';
spamFilterError.value.blocklist = error.body ? error.body.message : 'Internal error';
spamFilterBusy.value = false;
return console.error(error);
return;
}
[error] = await mailModel.setSpamCustomConfig(spamCustomConfig.value);
if (error) {
spamFilterError.value = error.body ? error.body.message : 'Internal error';
spamFilterError.value.config = error.body ? error.body.message : 'Internal error';
spamFilterBusy.value = false;
return console.error(error);
return;
}
spamFilterDialog.value.close();
@@ -215,7 +215,7 @@ onMounted(async () => {
<FormGroup>
<label for="dnsblZonesInput">{{ $t('emails.aclDialog.dnsblZones') }} <sup><a href="https://docs.cloudron.io/email/#dnsbl" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<p class="small">{{ $t('emails.aclDialog.dnsblZonesInfo') }}</p>
<div>{{ $t('emails.aclDialog.dnsblZonesInfo') }}</div>
<textarea id="dnsblZonesInput" v-model="dnsblZonesString" :placeholder="$t('emails.aclDialog.dnsblZonesPlaceholder')" rows="4"></textarea>
</FormGroup>
@@ -238,16 +238,16 @@ onMounted(async () => {
<FormGroup>
<label for="blocklistInput">{{ $t('emails.spamFilterDialog.blacklisteAddresses') }}</label>
<p class="small">{{ $t('emails.spamFilterDialog.blacklisteAddressesInfo') }}</p>
<div>{{ $t('emails.spamFilterDialog.blacklisteAddressesInfo') }}</div>
<textarea id="blocklistInput" v-model="blocklistString" :placeholder="$t('emails.spamFilterDialog.blacklisteAddressesPlaceholder')" rows="4"></textarea>
<div class="error-label" v-if="spamFilterError.blocklist">{{ spamFilterError.blocklist }}</div>
</FormGroup>
<FormGroup>
<label for="customConfigInput">{{ $t('emails.spamFilterDialog.customRules') }} <sup><a href="https://docs.cloudron.io/email/#custom-spam-filtering-rules" class="help" target="_blank"><i class="fa fa-question-circle"></i></a></sup></label>
<textarea id="customConfigInput" v-model="spamCustomConfig" :placeholder="$t('emails.spamFilterDialog.customRulesPlaceholder')" rows="4"></textarea>
<div class="error-label" v-if="spamFilterError.config">{{ spamFilterError.config }}</div>
</FormGroup>
<div class="has-error" v-if="spamFilterError">{{ spamFilterError }}</div>
</fieldset>
</form>
</Dialog>