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