aboutsummaryrefslogtreecommitdiff
path: root/src/App.vue
diff options
context:
space:
mode:
authorTerry Truong <terry06890@gmail.com>2022-06-29 15:32:21 +1000
committerTerry Truong <terry06890@gmail.com>2022-06-29 15:32:21 +1000
commit06aa08b1de6bdb60203231d5c22816a6c9c4cee4 (patch)
tree0763d8a63f23e97ba13bafa771c408999c76daaa /src/App.vue
parent93e3a4907c08a82225d1f947bb7674edf8a67c85 (diff)
Avoid layout/ui-option saved-string name-collisions
Assistively add OptionType type
Diffstat (limited to 'src/App.vue')
-rw-r--r--src/App.vue32
1 files changed, 15 insertions, 17 deletions
diff --git a/src/App.vue b/src/App.vue
index 614121c..1937997 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -84,7 +84,7 @@ import SettingsIcon from './components/icon/SettingsIcon.vue';
import HelpIcon from './components/icon/HelpIcon.vue';
// Other
// Note: Import paths lack a .ts or .js extension because .ts makes vue-tsc complain, and .js makes vite complain
-import {TolNode, TolMap, getServerResponse, InfoResponse, Action, UiOptions} from './lib';
+import {TolNode, TolMap, getServerResponse, InfoResponse, Action, UiOptions, OptionType} from './lib';
import {LayoutNode, LayoutOptions, LayoutTreeChg} from './layout';
import {initLayoutTree, initLayoutMap, tryLayout} from './layout';
import {getBreakpoint, getScrollBarWidth, isTouchDevice,
@@ -167,8 +167,6 @@ function getDefaultUiOpts(lytOpts: LayoutOptions): UiOptions {
useDblClick: isTouchDevice(),
};
}
-const lytOptPrefix = 'LYT '; // Used when saving to localStorage
-const uiOptPrefix = 'UI ';
export default defineComponent({
data(){
@@ -722,20 +720,20 @@ export default defineComponent({
this.resetMode();
this.settingsOpen = true;
},
- async onSettingChg(setting: string){
+ async onSettingChg(optionType: OptionType, option: string){
// Save in localStorage
- if (setting in this.lytOpts){
- localStorage.setItem(lytOptPrefix + setting, String(this.lytOpts[setting as keyof LayoutOptions]));
+ if (optionType == 'LYT'){
+ localStorage.setItem(`${optionType} ${option}`, String(this.lytOpts[option as keyof LayoutOptions]));
this.relayoutWithCollapse();
- } else if (setting in this.uiOpts){
- localStorage.setItem(uiOptPrefix + setting, String(this.uiOpts[setting as keyof UiOptions]));
- if (setting == 'useReducedTree'){
+ } else if (optionType == 'UI') {
+ localStorage.setItem(`${optionType} ${option}`, String(this.uiOpts[option as keyof UiOptions]));
+ if (option == 'useReducedTree'){
this.onTreeChange();
}
} else {
- throw new Error('Unexpected setting');
+ throw new Error(`Unexpected setting: ${optionType}, ${option}`);
}
- console.log(`Saved setting ${setting}`);
+ console.log(`Saved setting: ${optionType}, ${option}`);
},
async onTreeChange(){
if (this.activeRoot != this.layoutTree){
@@ -781,7 +779,7 @@ export default defineComponent({
},
onTutorialSkip(): void {
// Remember to skip in future sessions
- localStorage.setItem(uiOptPrefix + 'tutorialSkip', String(true));
+ localStorage.setItem('UI tutorialSkip', String(true));
},
onStartTutorial(): void {
if (!this.tutPaneOpen){
@@ -814,13 +812,13 @@ export default defineComponent({
let uiOpts = getDefaultUiOpts(lytOpts);
let changedTree = false;
for (let prop of Object.getOwnPropertyNames(lytOpts) as (keyof LayoutOptions)[]){
- let item = localStorage.getItem(lytOptPrefix + prop);
+ let item = localStorage.getItem('LYT ' + prop);
if (item == null && this.lytOpts[prop] != lytOpts[prop]){
this.lytOpts[prop] = lytOpts[prop];
}
}
for (let prop of Object.getOwnPropertyNames(uiOpts) as (keyof UiOptions)[]){
- let item = localStorage.getItem(uiOptPrefix + prop);
+ let item = localStorage.getItem('UI ' + prop);
//Not: Using JSON.stringify here to roughly deep-compare values
if (item == null && JSON.stringify(this.uiOpts[prop]) != JSON.stringify(uiOpts[prop])){
this.uiOpts[prop] = uiOpts[prop];
@@ -871,7 +869,7 @@ export default defineComponent({
// If search bar is open, switch search mode
if (this.searchOpen){
this.uiOpts.searchJumpMode = !this.uiOpts.searchJumpMode;
- this.onSettingChg('searchJumpMode');
+ this.onSettingChg('UI', 'searchJumpMode');
}
}
},
@@ -913,7 +911,7 @@ export default defineComponent({
getLytOpts(): LayoutOptions {
let opts = getDefaultLytOpts();
for (let prop of Object.getOwnPropertyNames(opts) as (keyof LayoutOptions)[]){
- let item = localStorage.getItem(lytOptPrefix + prop);
+ let item = localStorage.getItem('LYT ' + prop);
if (item != null){
switch (typeof(opts[prop])){
case 'boolean': (opts[prop] as unknown as boolean) = Boolean(item); break;
@@ -928,7 +926,7 @@ export default defineComponent({
getUiOpts(): UiOptions {
let opts = getDefaultUiOpts(getDefaultLytOpts());
for (let prop of Object.getOwnPropertyNames(opts) as (keyof UiOptions)[]){
- let item = localStorage.getItem(uiOptPrefix + prop);
+ let item = localStorage.getItem('UI ' + prop);
if (item != null){
switch (typeof(opts[prop])){
case 'boolean': (opts[prop] as unknown as boolean) = (item == 'true'); break;