From 0486614da4d5916ef18fc3975e4e2d281899f507 Mon Sep 17 00:00:00 2001
From: Terry Truong <terry06890@gmail.com>
Date: Wed, 29 Jun 2022 18:02:40 +1000
Subject: Fix min/max-tile-sz not saving in-tandem where needed

---
 src/App.vue | 49 ++++++++++++++++++++++++-------------------------
 1 file changed, 24 insertions(+), 25 deletions(-)

(limited to 'src/App.vue')

diff --git a/src/App.vue b/src/App.vue
index fa8ddcd..ba36a69 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -720,32 +720,22 @@ export default defineComponent({
 			this.resetMode();
 			this.settingsOpen = true;
 		},
-		async onSettingChg(optionType: OptionType, option: string, save = true){
-			// Save in localStorage
-			if (optionType == 'LYT'){
-				if (save){
-					localStorage.setItem(`${optionType} ${option}`, String(this.lytOpts[option as keyof LayoutOptions]));
+		async onSettingChg(optionType: OptionType, option: string,
+			{save = true, relayout = false, reinit = false} = {}){
+			if (save){
+				if (optionType == 'LYT'){
+					localStorage.setItem(`${optionType} ${option}`,
+						String(this.lytOpts[option as keyof LayoutOptions]));
+				} else if (optionType == 'UI') {
+					localStorage.setItem(`${optionType} ${option}`,
+						String(this.uiOpts[option as keyof UiOptions]));
 				}
-				this.relayoutWithCollapse();
-			} else if (optionType == 'UI') {
-				if (save){
-					localStorage.setItem(`${optionType} ${option}`, String(this.uiOpts[option as keyof UiOptions]));
-				}
-				if (option == 'useReducedTree'){
-					this.onTreeChange();
-				}
-			} else {
-				throw new Error(`Unexpected setting: ${optionType}, ${option}`);
 			}
-		},
-		async onTreeChange(){
-			if (this.activeRoot != this.layoutTree){
-				// Collapse tree to root
-				await this.onDetachedAncestorClick(this.layoutTree);
+			if (reinit){
+				this.reInit();
+			} else if (relayout){
+				this.relayoutWithCollapse();
 			}
-			await this.onNonleafClick(this.layoutTree);
-			await timeout(this.uiOpts.transitionDuration);
-			await this.initTreeFromServer();
 		},
 		onResetSettings(): void {
 			localStorage.clear();
@@ -753,7 +743,7 @@ export default defineComponent({
 			let defaultLytOpts = getDefaultLytOpts();
 			let defaultUiOpts = getDefaultUiOpts(defaultLytOpts);
 			if (this.uiOpts.useReducedTree != defaultUiOpts.useReducedTree){
-				this.onTreeChange();
+				this.reInit();
 			}
 			Object.assign(this.lytOpts, defaultLytOpts);
 			Object.assign(this.uiOpts, defaultUiOpts);
@@ -836,7 +826,7 @@ export default defineComponent({
 						await this.updateAreaDims();
 						this.relayoutWithCollapse();
 					} else {
-						this.onTreeChange();
+						this.reInit();
 					}
 				};
 				//
@@ -911,6 +901,15 @@ export default defineComponent({
 			this.justInitialised = true;
 			setTimeout(() => {this.justInitialised = false}, this.uiOpts.transitionDuration);
 		},
+		async reInit(){
+			if (this.activeRoot != this.layoutTree){
+				// Collapse tree to root
+				await this.onDetachedAncestorClick(this.layoutTree);
+			}
+			await this.onNonleafClick(this.layoutTree);
+			await timeout(this.uiOpts.transitionDuration);
+			await this.initTreeFromServer();
+		},
 		getLytOpts(): LayoutOptions {
 			let opts = getDefaultLytOpts();
 			for (let prop of Object.getOwnPropertyNames(opts) as (keyof LayoutOptions)[]){
-- 
cgit v1.2.3

