diff --git a/lnbits/extensions/gerty/templates/gerty/index.html b/lnbits/extensions/gerty/templates/gerty/index.html index b46fa812..59df4c1e 100644 --- a/lnbits/extensions/gerty/templates/gerty/index.html +++ b/lnbits/extensions/gerty/templates/gerty/index.html @@ -380,6 +380,7 @@ mining: true, lightning: true }, + oldToggleStates: {}, gertys: [], currencyOptions: [ 'USD', @@ -749,15 +750,21 @@ }, watch: { toggleStates: { - handler(toggleStatesValue, oldValue) { + handler(toggleStatesValue) { // Switch all the toggles in each section to the relevant state for (const [toggleKey, toggleValue] of Object.entries(toggleStatesValue)) { - for (const [dpKey, dpValue] of Object.entries(this.formDialog.data.display_preferences)) { - if(dpKey.indexOf(toggleKey) === 0) { - this.formDialog.data.display_preferences[dpKey] = toggleValue + if (this.oldToggleStates[toggleKey] !== toggleValue) { + for (const [dpKey, dpValue] of Object.entries(this.formDialog.data.display_preferences)) { + if (dpKey.indexOf(toggleKey) === 0) { + this.formDialog.data.display_preferences[dpKey] = toggleValue + } } } } + // This is a weird hack we have to use to get VueJS to persist the previous toggle state between + // watches. VueJS passes the old and new values by reference so when comparing objects they + // will have the same values unless we do this + this.oldToggleStates = JSON.parse(JSON.stringify(toggleStatesValue)) }, deep: true }