From 584401a3d78167e60b7ece1389d2163541c5f6f6 Mon Sep 17 00:00:00 2001 From: Angelina Filippova Date: Tue, 10 Mar 2020 00:43:32 +0300 Subject: [PATCH] Add ability to select a setting and go to the tab of the selected setting --- src/store/modules/normalizers.js | 14 +++++++------- src/views/settings/components/tabs.js | 1 + src/views/settings/index.vue | 8 ++++++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/src/store/modules/normalizers.js b/src/store/modules/normalizers.js index 42850c1d..022b8263 100644 --- a/src/store/modules/normalizers.js +++ b/src/store/modules/normalizers.js @@ -256,21 +256,21 @@ const wrapValues = (settings, currentState) => { } export const formSearchObject = description => { - const parseNestedSettings = (description, key) => description.reduce((acc, setting) => { + const parseNestedSettings = (description, label, key) => description.reduce((acc, setting) => { const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase()) if (setting.children) { - const updatedAcc = [...acc, { key: setting.label, group: key, search: searchArray }] - return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label)] + const updatedAcc = [...acc, { label: setting.label, key: setting.key, groupKey: key, groupLabel: label, search: searchArray }] + return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key)] } - return [...acc, { key: [setting.label], group: key, search: searchArray }] + return [...acc, { label: setting.label, key: setting.label, groupKey: key, groupLabel: label, search: searchArray }] }, []) return description.reduce((acc, setting) => { const searchArray = _.compact([setting.key, setting.label, setting.description]).map(el => el.toLowerCase()) if (setting.children) { - const updatedAcc = [...acc, { key: setting.label, group: setting.label, search: searchArray }] - return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label)] + const updatedAcc = [...acc, { label: setting.label, key: setting.key, groupKey: setting.key, groupLabel: setting.label, search: searchArray }] + return [...updatedAcc, ...parseNestedSettings(setting.children, setting.label, setting.key)] } - return [...acc, { key: setting.label, group: setting.label, search: searchArray }] + return [...acc, { label: setting.label, key: setting.label, groupKey: setting.key, groupLabel: setting.label, search: searchArray }] }, []) } diff --git a/src/views/settings/components/tabs.js b/src/views/settings/components/tabs.js index c08688f7..8bead30a 100644 --- a/src/views/settings/components/tabs.js +++ b/src/views/settings/components/tabs.js @@ -3,6 +3,7 @@ import _ from 'lodash' export const tabs = { 'activity-pub': { label: 'settings.activityPub', + settings: [':activitypub', ':user'], activitypub: () => this.settings.description.find(setting => setting.key === ':activitypub'), activitypubData: () => _.get(this.settings.settings, [':pleroma', ':activitypub']) || {}, user: () => this.settings.description.find(setting => setting.key === ':user'), diff --git a/src/views/settings/index.vue b/src/views/settings/index.vue index 7d8ffecb..996dd38c 100644 --- a/src/views/settings/index.vue +++ b/src/views/settings/index.vue @@ -223,12 +223,16 @@ export default { message: i18n.t('settings.restartSuccess') }) }, - handleSearchSelect() { + handleSearchSelect(selectedValue) { + const tab = Object.keys(this.tabs).find(tab => { + return this.tabs[tab].settings.includes(selectedValue.group) + }) + this.$store.dispatch('SetActiveTab', tab) }, querySearch(queryString, cb) { const results = this.searchData.filter(searchObj => searchObj.search.find(el => el.includes(queryString.toLowerCase()))) .map(searchObj => { - return { value: `${searchObj.key} in ${searchObj.group}` } + return { value: `${searchObj.label} in ${searchObj.groupLabel}`, group: searchObj.groupKey } }) cb(results) }