diff --git a/src/apps.js b/src/apps.js index 0b8583550..091a9867c 100644 --- a/src/apps.js +++ b/src/apps.js @@ -1665,7 +1665,7 @@ async function setMailbox(app, data, auditSource) { const enableMailbox = data.enable; const appId = app.id; - let error = checkAppState(app, exports.ISTATE_PENDING_RECREATE_CONTAINER); + let error = checkAppState(app, exports.ISTATE_PENDING_SERVICES_CHANGE); if (error) throw error; if (!app.manifest.addons?.sendmail) throw new BoxError(BoxError.BAD_FIELD, 'App does not use sendmail'); @@ -1696,7 +1696,7 @@ async function setMailbox(app, data, auditSource) { args: {}, values: { enableMailbox, mailboxName, mailboxDomain, mailboxDisplayName } }; - const taskId = await addTask(appId, exports.ISTATE_PENDING_RECREATE_CONTAINER, task, auditSource); + const taskId = await addTask(appId, exports.ISTATE_PENDING_SERVICES_CHANGE, task, auditSource); await eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId, app, mailboxName, mailboxDomain, mailboxDisplayName, taskId }); @@ -1712,7 +1712,7 @@ async function setInbox(app, data, auditSource) { const enableInbox = data.enable; const appId = app.id; - let error = checkAppState(app, exports.ISTATE_PENDING_RECREATE_CONTAINER); + let error = checkAppState(app, exports.ISTATE_PENDING_SERVICES_CHANGE); if (error) throw error; if (!app.manifest.addons?.recvmail) throw new BoxError(BoxError.BAD_FIELD, 'App does not use recvmail addon'); @@ -1731,7 +1731,7 @@ async function setInbox(app, data, auditSource) { args: {}, values: { enableInbox, inboxName, inboxDomain } }; - const taskId = await addTask(appId, exports.ISTATE_PENDING_RECREATE_CONTAINER, task, auditSource); + const taskId = await addTask(appId, exports.ISTATE_PENDING_SERVICES_CHANGE, task, auditSource); await eventlog.add(eventlog.ACTION_APP_CONFIGURE, auditSource, { appId, app, enableInbox, inboxName, inboxDomain, taskId }); diff --git a/src/apptask.js b/src/apptask.js index 3722f9f7b..11904db59 100644 --- a/src/apptask.js +++ b/src/apptask.js @@ -517,7 +517,9 @@ async function changeServices(app, args, progressCallback) { await deleteContainers(app, { managedOnly: true }); const unusedAddons = {}; - if (app.manifest.addons.turn && !args.enableTurn) unusedAddons.turn = app.manifest.addons.turn; + if (app.manifest.addons.turn && !app.enableTurn) unusedAddons.turn = app.manifest.addons.turn; + if (app.manifest.addons.sendmail && !app.enableMailbox) unusedAddons.sendmail = app.manifest.addons.sendmail; + if (app.manifest.addons.recvmail && !app.enableInbox) unusedAddons.recvmail = app.manifest.addons.recvmail; await progressCallback({ percent: 20, message: 'Removing unused addons' }); await services.teardownAddons(app, unusedAddons); diff --git a/src/services.js b/src/services.js index 2d5aa6740..f6b840fb6 100644 --- a/src/services.js +++ b/src/services.js @@ -888,7 +888,7 @@ async function setupTurn(app, options) { assert.strictEqual(typeof options, 'object'); const disabled = app.manifest.addons.turn.optional && !app.enableTurn; - if (disabled) return await addonConfigs.set(app.id, 'turn', []); + if (disabled) return await addonConfigs.unset(app.id, 'turn'); const turnSecret = await blobs.getString(blobs.ADDON_TURN_SECRET); if (!turnSecret) throw new BoxError(BoxError.ADDONS_ERROR, 'Turn secret is missing'); @@ -1036,7 +1036,7 @@ async function setupSendMail(app, options) { debug('Setting up SendMail'); const disabled = app.manifest.addons.sendmail.optional && !app.enableMailbox; - if (disabled) return await addonConfigs.set(app.id, 'sendmail', []); + if (disabled) return await addonConfigs.unset(app.id, 'sendmail'); const existingPassword = await addonConfigs.getByName(app.id, 'sendmail', '%MAIL_SMTP_PASSWORD'); @@ -1074,7 +1074,7 @@ async function setupRecvMail(app, options) { debug('setupRecvMail: setting up recvmail'); - if (!app.enableInbox) return await addonConfigs.set(app.id, 'recvmail', []); + if (!app.enableInbox) return await addonConfigs.unset(app.id, 'recvmail'); const existingPassword = await addonConfigs.getByName(app.id, 'recvmail', '%MAIL_IMAP_PASSWORD');