Skip to content

Commit 51acfc2

Browse files
committed
Made the settings storage format future-proof
1 parent f277d36 commit 51acfc2

File tree

7 files changed

+34
-11
lines changed

7 files changed

+34
-11
lines changed

src/main.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ export default class TrackALotPlugin extends Plugin {
2020
const markdownTableConverter = new MarkdownTableConverter();
2121
const trackablesUpdater = new TrackablesUpdater();
2222

23-
if (settingsManager.settings.hanayamaHuzzles) {
23+
if (settingsManager.settings.hanayamaHuzzles.isActive) {
2424
this.#addCommand(HanayamaHuzzlesRecipe.NAME, new HanayamaHuzzlesRecipe(
2525
markdownTableFactory,
2626
markdownTableConverter,
2727
trackablesUpdater
2828
));
2929
}
3030

31-
if (settingsManager.settings.iqPuzzles) {
31+
if (settingsManager.settings.iqPuzzles.isActive) {
3232
this.#addCommand(IQPuzzlesRecipe.NAME, new IQPuzzlesRecipe(
3333
markdownTableFactory,
3434
markdownTableConverter,
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { RecipeSettingsToggleable } from 'src/settings/data/RecipeSettingsToggleable';
2+
3+
export class HanayamaHuzzlesRecipeSettings implements RecipeSettingsToggleable {
4+
isActive: boolean;
5+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { RecipeSettingsToggleable } from 'src/settings/data/RecipeSettingsToggleable';
2+
3+
export class IQPuzzlesRecipeSettings implements RecipeSettingsToggleable {
4+
isActive: boolean;
5+
}

src/settings/RecipesSettingsTab.ts

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,19 +27,24 @@ export class RecipesSettingsTab extends PluginSettingTab {
2727
this.#addToggle(
2828
HanayamaHuzzlesRecipe.NAME,
2929
HanayamaHuzzlesRecipe.WEBPAGE,
30-
() => { return settings.hanayamaHuzzles; },
31-
value => { settings.hanayamaHuzzles = value; }
30+
() => { return settings.hanayamaHuzzles.isActive; },
31+
value => { settings.hanayamaHuzzles.isActive = value; }
3232
);
3333

3434
this.#addToggle(
3535
IQPuzzlesRecipe.NAME,
3636
IQPuzzlesRecipe.WEBPAGE,
37-
() => { return settings.iqPuzzles; },
38-
value => { settings.iqPuzzles = value; }
37+
() => { return settings.iqPuzzles.isActive; },
38+
value => { settings.iqPuzzles.isActive = value; }
3939
);
4040
}
4141

42-
#addToggle(name: string, webpage: string, getter: () => boolean, setter: (value: boolean) => void) {
42+
#addToggle(
43+
name: string,
44+
webpage: string,
45+
getter: () => boolean,
46+
setter: (value: boolean) => void
47+
) {
4348
const webpageLink = this.#createDescriptionLink(webpage);
4449
new Setting(this.containerEl)
4550
.setName(name)

src/settings/SettingsManager.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
import { Plugin } from 'obsidian';
2+
import { HanayamaHuzzlesRecipeSettings } from 'src/recipes/hanayama_huzzles/HanayamaHuzzlesRecipeSettings';
3+
import { IQPuzzlesRecipeSettings } from 'src/recipes/iq_puzzles/IQPuzzlesRecipeSettings';
24
import { RecipesPluginSettings } from './data/RecipesPluginSettings';
35

46
export class SettingsManager {
57
static #DEFAULT_SETTINGS: Partial<RecipesPluginSettings> = {
6-
hanayamaHuzzles: false,
7-
iqPuzzles: false
8+
hanayamaHuzzles: new HanayamaHuzzlesRecipeSettings(),
9+
iqPuzzles: new IQPuzzlesRecipeSettings()
810
};
911

1012
settings: RecipesPluginSettings;
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export interface RecipeSettingsToggleable {
2+
isActive: boolean;
3+
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1+
import { HanayamaHuzzlesRecipeSettings } from 'src/recipes/hanayama_huzzles/HanayamaHuzzlesRecipeSettings';
2+
import { IQPuzzlesRecipeSettings } from 'src/recipes/iq_puzzles/IQPuzzlesRecipeSettings';
3+
14
export interface RecipesPluginSettings {
2-
hanayamaHuzzles: boolean;
3-
iqPuzzles: boolean;
5+
hanayamaHuzzles: HanayamaHuzzlesRecipeSettings;
6+
iqPuzzles: IQPuzzlesRecipeSettings;
47
}

0 commit comments

Comments
 (0)