Skip to content
Snippets Groups Projects
Commit 37cdff37 authored by Angelina Filippova's avatar Angelina Filippova
Browse files

Use data from state for settings that cannot be partially updated

parent 864b8a14
No related branches found
No related tags found
No related merge requests found
Pipeline #20945 passed
...@@ -58,6 +58,18 @@ const parseObject = object => { ...@@ -58,6 +58,18 @@ const parseObject = object => {
}, {}) }, {})
} }
export const partialUpdate = (group, key) => {
if ((group === ':pleroma' && key === ':ecto_repos') ||
(group === ':quack' && key === ':meta') ||
(group === ':mime' && key === ':types') ||
(group === ':auto_linker' && key === ':opts') ||
(group === ':swarm' && key === ':node_blacklist') ||
(group === ':cors_plug' && [':max_age', ':methods', ':expose', ':headers'].includes(key))) {
return false
}
return true
}
export const valueHasTuples = (key, value) => { export const valueHasTuples = (key, value) => {
const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && typeof value[0] !== 'object' const valueIsArrayOfNonObjects = Array.isArray(value) && value.length > 0 && typeof value[0] !== 'object'
return key === ':meta' || return key === ':meta' ||
...@@ -72,7 +84,6 @@ export const valueHasTuples = (key, value) => { ...@@ -72,7 +84,6 @@ export const valueHasTuples = (key, value) => {
} }
export const wrapUpdatedSettings = (group, settings) => { export const wrapUpdatedSettings = (group, settings) => {
console.log(group, settings)
return Object.keys(settings).map((key) => { return Object.keys(settings).map((key) => {
const value = groupWithoutKey(settings[key]) || wrapValues(settings[key]) const value = groupWithoutKey(settings[key]) || wrapValues(settings[key])
return { group, key, value } return { group, key, value }
...@@ -81,7 +92,6 @@ export const wrapUpdatedSettings = (group, settings) => { ...@@ -81,7 +92,6 @@ export const wrapUpdatedSettings = (group, settings) => {
const wrapValues = settings => { const wrapValues = settings => {
return Object.keys(settings).map(setting => { return Object.keys(settings).map(setting => {
console.log(settings[setting])
const [type, value] = Array.isArray(settings[setting]) ? settings[setting] : ['', settings[setting]] const [type, value] = Array.isArray(settings[setting]) ? settings[setting] : ['', settings[setting]]
if (type === 'keyword' || type.includes('keyword')) { if (type === 'keyword' || type.includes('keyword')) {
return { 'tuple': [setting, wrapValues(value)] } return { 'tuple': [setting, wrapValues(value)] }
......
import { fetchDescription, fetchSettings, updateSettings, uploadMedia } from '@/api/settings' import { fetchDescription, fetchSettings, updateSettings, uploadMedia } from '@/api/settings'
import { parseTuples, valueHasTuples, wrapUpdatedSettings } from './normalizers' import { parseTuples, partialUpdate, valueHasTuples, wrapUpdatedSettings } from './normalizers'
const settings = { const settings = {
state: { state: {
...@@ -56,7 +56,7 @@ const settings = { ...@@ -56,7 +56,7 @@ const settings = {
} }
}, },
actions: { actions: {
async FetchSettings({ commit, dispatch, getters }) { async FetchSettings({ commit, getters }) {
commit('SET_LOADING', true) commit('SET_LOADING', true)
const response = await fetchSettings(getters.authHost, getters.token) const response = await fetchSettings(getters.authHost, getters.token)
const description = await fetchDescription(getters.authHost, getters.token) const description = await fetchDescription(getters.authHost, getters.token)
...@@ -69,8 +69,24 @@ const settings = { ...@@ -69,8 +69,24 @@ const settings = {
commit('REWRITE_CONFIG', { tab, data }) commit('REWRITE_CONFIG', { tab, data })
}, },
async SubmitChanges({ getters, commit, state }) { async SubmitChanges({ getters, commit, state }) {
const configs = Object.keys(state.updatedSettings).reduce((acc, group) => { const updatedData = Object.keys(state.updatedSettings).reduce((acc, group) => {
return [...acc, ...wrapUpdatedSettings(group, state.updatedSettings[group])] acc[group] = Object.keys(state.updatedSettings[group]).reduce((acc, key) => {
if (!partialUpdate(group, key)) {
const updated = Object.keys(state.settings[group][key]).reduce((acc, settingName) => {
acc[settingName] = ['', state.settings[group][key][settingName]]
return acc
}, {})
acc[key] = updated
return acc
}
acc[key] = state.updatedSettings[group][key]
return acc
}, {})
return acc
}, {})
const configs = Object.keys(updatedData).reduce((acc, group) => {
return [...acc, ...wrapUpdatedSettings(group, updatedData[group])]
}, []) }, [])
const response = await updateSettings(configs, getters.authHost, getters.token) const response = await updateSettings(configs, getters.authHost, getters.token)
commit('SET_SETTINGS', response.data.configs) commit('SET_SETTINGS', response.data.configs)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment