diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js index 81b61df7..88e92b8c 100644 --- a/src/store/modules/normalizers.js +++ b/src/store/modules/normalizers.js @@ -12,7 +12,7 @@ export const parseTuples = (tuples, key) => { accum[item.tuple[0]] = item.tuple[1].reduce((acc, mascot) => { return [...acc, { [mascot.tuple[0]]: { ...mascot.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}] }, []) - } else if (item.tuple[0] === ':groups' || item.tuple[0] === ':replace') { + } else if (item.tuple[0] === ':groups' || item.tuple[0] === ':replace' || item.tuple[0] === ':retries') { accum[item.tuple[0]] = item.tuple[1].reduce((acc, group) => { return [...acc, { [group.tuple[0]]: { value: group.tuple[1], id: `f${(~~(Math.random() * 1e8)).toString(16)}` }}] }, []) @@ -91,10 +91,9 @@ const parseProxyUrl = value => { } export const partialUpdate = (group, key) => { - if ((group === ':pleroma' && key === ':ecto_repos') || - (group === ':mime' && key === ':types') || - (group === ':auto_linker' && key === ':opts') || - (group === ':swarm' && key === ':node_blacklist')) { + if ((group === ':pleroma' && key === 'Oban') || + (group === ':mime' && key === ':types') || + (group === ':auto_linker' && key === ':opts')) { return false } return true @@ -129,7 +128,7 @@ const wrapValues = (settings, currentState) => { return Object.keys(settings).map(setting => { const [type, value] = Array.isArray(settings[setting]) ? settings[setting] : ['', settings[setting]] if (type === 'keyword' || type.includes('keyword') || setting === ':replace') { - return { 'tuple': [setting, wrapValues(value)] } + return { 'tuple': [setting, wrapValues(value, currentState)] } } else if (type === 'atom' && value.length > 0) { return { 'tuple': [setting, `:${value}`] } } else if (type.includes('tuple') && Array.isArray(value)) { @@ -149,7 +148,7 @@ const wrapValues = (settings, currentState) => { const ip = value.split('.').map(s => parseInt(s, 10)) return { 'tuple': [setting, { 'tuple': ip }] } } else if (setting === ':ssl_options') { - return { 'tuple': [setting, wrapValues(value)] } + return { 'tuple': [setting, wrapValues(value, currentState)] } } else { return { 'tuple': [setting, value] } } diff --git a/src/store/modules/settings.js b/src/store/modules/settings.js index 66b2272a..bea87939 100644 --- a/src/store/modules/settings.js +++ b/src/store/modules/settings.js @@ -75,7 +75,10 @@ const settings = { 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]] + const settingType = state.description + .find(element => element.group === group && element.key === key).children + .find(child => child.key === settingName).type + acc[settingName] = [settingType, state.settings[group][key][settingName]] return acc }, {}) acc[key] = updated @@ -86,7 +89,6 @@ const settings = { }, {}) return acc }, {}) - const configs = Object.keys(updatedData).reduce((acc, group) => { return [...acc, ...wrapUpdatedSettings(group, updatedData[group], state.settings)] }, []) diff --git a/src/views/settings/components/inputComponents/EditableKeywordInput.vue b/src/views/settings/components/inputComponents/EditableKeywordInput.vue index a85104f4..9f0d77fc 100644 --- a/src/views/settings/components/inputComponents/EditableKeywordInput.vue +++ b/src/views/settings/components/inputComponents/EditableKeywordInput.vue @@ -58,12 +58,12 @@ export default { methods: { addRowToEditableKeyword() { const updatedValue = [...this.data, { '': { value: '', id: this.generateID() }}] - this.updateSetting(updatedValue, this.settingGroup.group, this.settingGroup.key, this.setting.key) + this.updateSetting(updatedValue, this.settingGroup.group, this.settingGroup.key, this.setting.key, this.setting.type) }, deleteEditableKeywordRow(element) { const deletedId = this.getId(element) const filteredValues = this.data.filter(element => Object.values(element)[0].id !== deletedId) - this.updateSetting(filteredValues, this.settingGroup.group, this.settingGroup.key, this.setting.key) + this.updateSetting(filteredValues, this.settingGroup.group, this.settingGroup.key, this.setting.key, this.setting.type) }, generateID() { return `f${(~~(Math.random() * 1e8)).toString(16)}` @@ -95,7 +95,7 @@ export default { updateSetting(value, group, key, input, type) { const updatedSettings = type !== 'map' ? value.reduce((acc, element) => { - return { ...acc, [Object.keys(element)[0]]: [['list', 'string'], Object.values(element)[0].value] } + return { ...acc, [Object.keys(element)[0]]: [['list'], Object.values(element)[0].value] } }, {}) : value.reduce((acc, element) => { return { ...acc, [Object.keys(element)[0]]: Object.values(element)[0].value }