diff --git a/dashboard/src/views/EmailsView.vue b/dashboard/src/views/EmailsView.vue index a851c83aa..017164b62 100644 --- a/dashboard/src/views/EmailsView.vue +++ b/dashboard/src/views/EmailsView.vue @@ -60,53 +60,51 @@ async function refresh() { busy.value = false; // individual status is fetched in background - refreshStatus(); + for (const domain of domains.value) refreshStatus(domain); } -async function refreshStatus() { - for (const domain of domains.value) { - let [error, result] = await mailModel.status(domain.domain); - if (error) { - console.error(error); - } else { - domain.status = Object.keys(result).every((k) => { - if (k === 'dns') return Object.keys(result.dns).every(function (k) { return result.dns[k].status; }); - if (!('status' in result[k])) return true; // if status is not present, the test was not run - return result[k].status; - }); - domain.statusCheckDone = true; - } +async function refreshStatus(domain) { + let [error, result] = await mailModel.status(domain.domain); + if (error) { + console.error(error); + } else { + domain.status = Object.keys(result).every((k) => { + if (k === 'dns') return Object.keys(result.dns).every(function (k) { return result.dns[k].status; }); + if (!('status' in result[k])) return true; // if status is not present, the test was not run + return result[k].status; + }); + domain.statusCheckDone = true; + } - [error, result] = await mailModel.config(domain.domain); - if (error) { - console.error(error); - } else { - domain.inbound = result.enabled; - domain.outbound = result.relay?.provider !== 'noop'; - } + [error, result] = await mailModel.config(domain.domain); + if (error) { + console.error(error); + } else { + domain.inbound = result.enabled; + domain.outbound = result.relay?.provider !== 'noop'; + } - // do this even if no outbound since people forget to remove mailboxes - [error, result] = await mailModel.mailboxCount(domain.domain); - if (error) { - console.error(error); - } else { - domain.mailboxCount = result; - } + // do this even if no outbound since people forget to remove mailboxes + [error, result] = await mailModel.mailboxCount(domain.domain); + if (error) { + console.error(error); + } else { + domain.mailboxCount = result; + } - domain.loading = false; + domain.loading = false; - // TODO - // mail usage is loaded separately with a cancellation check. when there are a lot of domains, it runs a long time in background and slows down loading of new views - [error, result] = await mailModel.usage(domain.domain); - if (error) { - console.error(error); - } else { - domain.usage = 0; - // we used to use quotaValue here but it's quite different wrt diskSize. so choose diskSize consistently - // also, quotaValue can be missing for deleted mailboxes that are on disk but removed from dovecot/ldap itself - Object.keys(result).forEach(function (m) { domain.usage += result[m].diskSize; }); - domain.loadingUsage = false; - } + // TODO + // mail usage is loaded separately with a cancellation check. when there are a lot of domains, it runs a long time in background and slows down loading of new views + [error, result] = await mailModel.usage(domain.domain); + if (error) { + console.error(error); + } else { + domain.usage = 0; + // we used to use quotaValue here but it's quite different wrt diskSize. so choose diskSize consistently + // also, quotaValue can be missing for deleted mailboxes that are on disk but removed from dovecot/ldap itself + Object.keys(result).forEach(function (m) { domain.usage += result[m].diskSize; }); + domain.loadingUsage = false; } }