From a80374838f326cde7c9f2eab82efd17a0dee3dda Mon Sep 17 00:00:00 2001 From: Angelina Filippova <linakirsanova@gmail.com> Date: Fri, 20 Dec 2019 03:42:00 +0300 Subject: [PATCH] Add mailer tab, fix rendering and processing emails mailer settings --- src/store/modules/settings.js | 10 ++++++---- src/views/settings/components/Setting.vue | 7 +++++-- src/views/settings/index.vue | 3 +++ 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index b29a776c..66b2272a 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -45,13 +45,15 @@ const settings = { state.settings = newSettings }, UPDATE_SETTINGS: (state, { group, key, input, value, type }) => { - const updatedSetting = state.updatedSettings[group] - ? { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}} - : { [key]: { [input]: [type, value] }} + const updatedSetting = !state.updatedSettings[group] || (key === 'Pleroma.Emails.Mailer' && input === ':adapter') + ? { [key]: { [input]: [type, value] }} + : { [key]: { ...state.updatedSettings[group][key], ...{ [input]: [type, value] }}} state.updatedSettings[group] = { ...state.updatedSettings[group], ...updatedSetting } }, UPDATE_STATE: (state, { group, key, input, value }) => { - const updatedState = { [key]: { ...state.settings[group][key], ...{ [input]: value }}} + const updatedState = key === 'Pleroma.Emails.Mailer' && input === ':adapter' + ? { [key]: { [input]: value }} + : { [key]: { ...state.settings[group][key], ...{ [input]: value }}} state.settings[group] = { ...state.settings[group], ...updatedState } } }, diff --git a/src/views/settings/components/Setting.vue b/src/views/settings/components/Setting.vue index 9293ec3d..e9fca8d2 100644 --- a/src/views/settings/components/Setting.vue +++ b/src/views/settings/components/Setting.vue @@ -11,9 +11,8 @@ :data="data"/> </div> <div - v-for="setting in settingGroup.children.filter(setting => setting.group && setting.group.includes(setting.key))" + v-for="setting in emailAdapterChildren" :key="setting.key"> - <div class="line"/> <inputs :setting-group="settingGroup" :setting="setting" @@ -76,6 +75,10 @@ export default { } }, computed: { + emailAdapterChildren() { + const adapter = this.$store.state.settings.settings[':pleroma']['Pleroma.Emails.Mailer'][':adapter'] + return this.settingGroup.children.filter(child => child.group && child.group.includes(adapter)) + }, loading() { return this.$store.state.settings.loading } diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue index d77ec950..f905fd31 100644 --- a/src/views/settings/index.vue +++ b/src/views/settings/index.vue @@ -41,6 +41,9 @@ <el-tab-pane :label="$t('settings.logger')" lazy> <logger/> </el-tab-pane> + <el-tab-pane :label="$t('settings.mailer')" lazy> + <mailer/> + </el-tab-pane> <!-- <el-tab-pane :label="$t('settings.jobQueue')" lazy> <job-queue/> -- GitLab