diff --git a/dashboard/src/views/EmailMailboxesView.vue b/dashboard/src/views/EmailMailboxesView.vue index f95caed42..2f6c73f7e 100644 --- a/dashboard/src/views/EmailMailboxesView.vue +++ b/dashboard/src/views/EmailMailboxesView.vue @@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n'; const i18n = useI18n(); const t = i18n.t; -import { ref, onMounted, useTemplateRef } from 'vue'; +import { ref, onMounted, useTemplateRef, inject } from 'vue'; import { Button, TableView, Dialog, Checkbox } from 'pankow'; import { prettyDecimalSize } from 'pankow/utils'; import { eachLimit } from 'async'; @@ -51,6 +51,9 @@ const domains = ref([]); const users = ref([]); const groups = ref([]); +const features = inject('features'); +const subscriptionRequiredDialog = inject('subscriptionRequiredDialog'); + function renderAliases(aliases) { return aliases.map(a => `${a.name}@${a.domain}`).join(', '); } @@ -58,7 +61,8 @@ function renderAliases(aliases) { const mailboxDialog = useTemplateRef('mailboxDialog'); async function onAddOrEdit(mailbox = null) { - mailboxDialog.value.open(mailbox); + if (mailbox || features.value.mailboxMaxCount > mailboxes.value.length) mailboxDialog.value.open(mailbox); + else subscriptionRequiredDialog.value.open(); } const removeDialog = useTemplateRef('removeDialog'); diff --git a/dashboard/src/views/UsersView.vue b/dashboard/src/views/UsersView.vue index 79f0a36f5..cf386a2a5 100644 --- a/dashboard/src/views/UsersView.vue +++ b/dashboard/src/views/UsersView.vue @@ -148,8 +148,8 @@ function onPasswordReset(user) { } function onEditOrAddUser(user = null) { - if (features.value.userMaxCount <= users.value.length) subscriptionRequiredDialog.value.open(); - else userDialog.value.open(user); + if (user || features.value.userMaxCount > users.value.length) userDialog.value.open(user); + else subscriptionRequiredDialog.value.open(); } const invitationDialog = useTemplateRef('invitationDialog');