Pass only updated settings to the BE

This commit is contained in:
Angelina Filippova 2019-11-30 00:34:52 +09:00
parent bbc839aa46
commit 33aee0b859

View file

@ -1,5 +1,5 @@
import { fetchDescription, fetchSettings, migrateToDB, updateSettings, uploadMedia } from '@/api/settings' import { fetchDescription, fetchSettings, migrateToDB, updateSettings, uploadMedia } from '@/api/settings'
import { filterIgnored, parseTuples, valueHasTuples, wrapConfig } from './normalizers' import { parseTuples, valueHasTuples, wrapConfig } from './normalizers'
const settings = { const settings = {
state: { state: {
@ -19,6 +19,7 @@ const settings = {
ueberauth: {}, ueberauth: {},
web_push_encryption: {} web_push_encryption: {}
}, },
updatedSettings: {},
ignoredIfNotEnabled: ['enabled', 'handler', 'password_authenticator', 'port', 'priv_dir'], ignoredIfNotEnabled: ['enabled', 'handler', 'password_authenticator', 'port', 'priv_dir'],
loading: true loading: true
}, },
@ -42,13 +43,12 @@ const settings = {
}, },
UPDATE_SETTINGS: (state, { group, tab, data }) => { UPDATE_SETTINGS: (state, { group, tab, data }) => {
const groupUPD = group.substr(1) const groupUPD = group.substr(1)
Object.keys(state.settings[groupUPD]).map(configName => { const updatedState = { [tab]: { ...state.settings[groupUPD][tab], ...data }}
if (configName === tab) { const updatedSetting = state.updatedSettings[groupUPD]
const updatedSetting = { [configName]: { ...state.settings[groupUPD][configName], ...data }} ? { [tab]: { ...state.updatedSettings[groupUPD][tab], ...data }}
const updatedGroup = { ...state.settings[groupUPD], ...updatedSetting } : { [tab]: data }
state.settings[groupUPD] = updatedGroup state.settings[groupUPD] = { ...state.settings[groupUPD], ...updatedState }
} state.updatedSettings[groupUPD] = { ...state.updatedSettings[groupUPD], ...updatedSetting }
})
} }
}, },
actions: { actions: {
@ -71,14 +71,13 @@ const settings = {
commit('REWRITE_CONFIG', { tab, data }) commit('REWRITE_CONFIG', { tab, data })
}, },
async SubmitChanges({ getters, commit, state }, data) { async SubmitChanges({ getters, commit, state }, data) {
const filteredSettings = filterIgnored(state.settings, state.ignoredIfNotEnabled) const configs = data || wrapConfig(state.updatedSettings)
const configs = data || wrapConfig(filteredSettings)
const response = await updateSettings(configs, getters.authHost, getters.token) const response = await updateSettings(configs, getters.authHost, getters.token)
if (data) { if (data) {
commit('SET_SETTINGS', response.data.configs) commit('SET_SETTINGS', response.data.configs)
} }
}, },
UpdateSettings({ commit }, { group, tab, data }) { UpdateSettings({ commit, state }, { group, tab, data }) {
commit('UPDATE_SETTINGS', { group, tab, data }) commit('UPDATE_SETTINGS', { group, tab, data })
}, },
async UploadMedia({ dispatch, getters, state }, { file, tab, inputName, childName }) { async UploadMedia({ dispatch, getters, state }, { file, tab, inputName, childName }) {