From af0cd5422304d7b2111739d85c279b3fa175a853 Mon Sep 17 00:00:00 2001 From: Henry Jameson Date: Sun, 12 Mar 2023 14:32:13 +0200 Subject: [PATCH] serverSideConfig renamed into profileSettingConfig to avoid confusion with serverSideStorage, reduced overall need for SharedComputedObject in settings tabs, moved copypaste code of "setting" type of helpers into a separate file. --- .../settings_modal/helpers/boolean_setting.js | 53 ++---------- .../helpers/boolean_setting.vue | 4 +- .../settings_modal/helpers/choice_setting.js | 51 +++-------- .../settings_modal/helpers/choice_setting.vue | 2 +- .../settings_modal/helpers/integer_setting.js | 39 ++------- ...ator.vue => profile_setting_indicator.vue} | 12 +-- .../settings_modal/helpers/setting.js | 84 +++++++++++++++++++ .../helpers/shared_computed_object.js | 18 ---- .../settings_modal/helpers/size_setting.js | 48 +++-------- .../settings_modal/tabs/filtering_tab.vue | 14 ++-- .../settings_modal/tabs/general_tab.js | 6 +- .../settings_modal/tabs/general_tab.vue | 29 +++---- .../settings_modal/tabs/notifications_tab.vue | 4 +- .../settings_modal/tabs/profile_tab.vue | 32 ++++--- src/main.js | 4 +- src/modules/config.js | 3 +- .../{serverSideConfig.js => profileConfig.js} | 22 ++--- 17 files changed, 177 insertions(+), 248 deletions(-) rename src/components/settings_modal/helpers/{server_side_indicator.vue => profile_setting_indicator.vue} (81%) create mode 100644 src/components/settings_modal/helpers/setting.js rename src/modules/{serverSideConfig.js => profileConfig.js} (85%) diff --git a/src/components/settings_modal/helpers/boolean_setting.js b/src/components/settings_modal/helpers/boolean_setting.js index 2e6992cb9a..078cc5ffd6 100644 --- a/src/components/settings_modal/helpers/boolean_setting.js +++ b/src/components/settings_modal/helpers/boolean_setting.js @@ -1,56 +1,13 @@ -import { get, set } from 'lodash' import Checkbox from 'src/components/checkbox/checkbox.vue' import ModifiedIndicator from './modified_indicator.vue' -import ServerSideIndicator from './server_side_indicator.vue' +import ProfileSettingIndicator from './profile_setting_indicator.vue' +import Setting from './setting.js' + export default { components: { Checkbox, ModifiedIndicator, - ServerSideIndicator + ProfileSettingIndicator }, - props: [ - 'path', - 'disabled', - 'expert' - ], - computed: { - pathDefault () { - const [firstSegment, ...rest] = this.path.split('.') - return [firstSegment + 'DefaultValue', ...rest].join('.') - }, - state () { - const value = get(this.$parent, this.path) - if (value === undefined) { - return this.defaultState - } else { - return value - } - }, - defaultState () { - return get(this.$parent, this.pathDefault) - }, - isServerSide () { - return this.path.startsWith('serverSide_') - }, - isChanged () { - return !this.path.startsWith('serverSide_') && this.state !== this.defaultState - }, - matchesExpertLevel () { - return (this.expert || 0) <= this.$parent.expertLevel - } - }, - methods: { - update (e) { - const [firstSegment, ...rest] = this.path.split('.') - set(this.$parent, this.path, e) - // Updating nested properties does not trigger update on its parent. - // probably still not as reliable, but works for depth=1 at least - if (rest.length > 0) { - set(this.$parent, firstSegment, { ...get(this.$parent, firstSegment) }) - } - }, - reset () { - set(this.$parent, this.path, this.defaultState) - } - } + ...Setting } diff --git a/src/components/settings_modal/helpers/boolean_setting.vue b/src/components/settings_modal/helpers/boolean_setting.vue index 4114296691..bc014bc92e 100644 --- a/src/components/settings_modal/helpers/boolean_setting.vue +++ b/src/components/settings_modal/helpers/boolean_setting.vue @@ -5,7 +5,7 @@ > - + diff --git a/src/components/settings_modal/helpers/choice_setting.js b/src/components/settings_modal/helpers/choice_setting.js index 3da559fe22..8aa5f54b52 100644 --- a/src/components/settings_modal/helpers/choice_setting.js +++ b/src/components/settings_modal/helpers/choice_setting.js @@ -1,51 +1,20 @@ -import { get, set } from 'lodash' import Select from 'src/components/select/select.vue' import ModifiedIndicator from './modified_indicator.vue' -import ServerSideIndicator from './server_side_indicator.vue' +import ProfileSettingIndicator from './profile_setting_indicator.vue' +import Setting from './setting.js' + export default { components: { Select, ModifiedIndicator, - ServerSideIndicator + ProfileSettingIndicator }, - props: [ - 'path', - 'disabled', - 'options', - 'expert' - ], - computed: { - pathDefault () { - const [firstSegment, ...rest] = this.path.split('.') - return [firstSegment + 'DefaultValue', ...rest].join('.') - }, - state () { - const value = get(this.$parent, this.path) - if (value === undefined) { - return this.defaultState - } else { - return value - } - }, - defaultState () { - return get(this.$parent, this.pathDefault) - }, - isServerSide () { - return this.path.startsWith('serverSide_') - }, - isChanged () { - return !this.path.startsWith('serverSide_') && this.state !== this.defaultState - }, - matchesExpertLevel () { - return (this.expert || 0) <= this.$parent.expertLevel - } - }, - methods: { - update (e) { - set(this.$parent, this.path, e) - }, - reset () { - set(this.$parent, this.path, this.defaultState) + ...Setting, + props: { + ...Setting.props, + options: { + type: Array, + required: true } } } diff --git a/src/components/settings_modal/helpers/choice_setting.vue b/src/components/settings_modal/helpers/choice_setting.vue index 8fdbb5d34f..4c4cdefec8 100644 --- a/src/components/settings_modal/helpers/choice_setting.vue +++ b/src/components/settings_modal/helpers/choice_setting.vue @@ -23,7 +23,7 @@ :changed="isChanged" :onclick="reset" /> - + diff --git a/src/components/settings_modal/helpers/integer_setting.js b/src/components/settings_modal/helpers/integer_setting.js index e64d0cee22..0f29f11aab 100644 --- a/src/components/settings_modal/helpers/integer_setting.js +++ b/src/components/settings_modal/helpers/integer_setting.js @@ -1,44 +1,15 @@ -import { get, set } from 'lodash' import ModifiedIndicator from './modified_indicator.vue' +import Setting from './setting.js' + export default { components: { ModifiedIndicator }, - props: { - path: String, - disabled: Boolean, - min: Number, - expert: [Number, String] - }, - computed: { - pathDefault () { - const [firstSegment, ...rest] = this.path.split('.') - return [firstSegment + 'DefaultValue', ...rest].join('.') - }, - state () { - const value = get(this.$parent, this.path) - if (value === undefined) { - return this.defaultState - } else { - return value - } - }, - defaultState () { - return get(this.$parent, this.pathDefault) - }, - isChanged () { - return this.state !== this.defaultState - }, - matchesExpertLevel () { - return (this.expert || 0) <= this.$parent.expertLevel - } - }, + ...Setting, methods: { + ...Setting.methods, update (e) { - set(this.$parent, this.path, parseInt(e.target.value)) - }, - reset () { - set(this.$parent, this.path, this.defaultState) + this.configSink(this.path, parseInt(e.target.value)) } } } diff --git a/src/components/settings_modal/helpers/server_side_indicator.vue b/src/components/settings_modal/helpers/profile_setting_indicator.vue similarity index 81% rename from src/components/settings_modal/helpers/server_side_indicator.vue rename to src/components/settings_modal/helpers/profile_setting_indicator.vue index bf181959fe..d160781b1a 100644 --- a/src/components/settings_modal/helpers/server_side_indicator.vue +++ b/src/components/settings_modal/helpers/profile_setting_indicator.vue @@ -1,7 +1,7 @@ @@ -33,17 +33,17 @@ library.add( export default { components: { Popover }, - props: ['serverSide'] + props: ['isProfile'] }