Skip to content

Commit

Permalink
refactor: remove type assertions
Browse files Browse the repository at this point in the history
  • Loading branch information
FlorianWoelki committed Jul 14, 2024
1 parent a33644f commit 393e42a
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 11 deletions.
19 changes: 19 additions & 0 deletions src/main.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
import { Plugin } from 'obsidian';
import { registerCommands } from './commands';
import {
AnkiParameters,
BetterRecallData,
BetterRecallSettings,
DEFAULT_SETTINGS,
Expand Down Expand Up @@ -78,6 +79,24 @@ export default class BetterRecallPlugin extends Plugin {
return this.data.settings;
}

public setAnkiParameter(
key: keyof AnkiParameters,
value: number | number[],
): void {
if (key === 'learningSteps' || key === 'relearningSteps') {
if (!Array.isArray(value)) {
return;
}

this.getSettings().ankiParameters[key] = value;
return;
}

if (typeof value === 'number') {
this.getSettings().ankiParameters[key] = value;
}
}

public getData(): BetterRecallData {
return this.data;
}
Expand Down
21 changes: 10 additions & 11 deletions src/ui/settings/SettingsTab.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ export class SettingsTab extends PluginSettingTab {

new Setting(this.containerEl).setName('Anki Settings').setHeading();

Object.entries(this.titleParameterMapping).forEach(([key, value]) => {
Object.entries(this.titleParameterMapping).forEach(([key, parameter]) => {
let textComponent: TextComponent | null = null;
const pluginValue = this.plugin.getSettings().ankiParameters[value];
const pluginValue = this.plugin.getSettings().ankiParameters[parameter];

const setting = new Setting(this.containerEl).setName(key);

Expand All @@ -37,10 +37,9 @@ export class SettingsTab extends PluginSettingTab {
return;
}

const defaultValue = DEFAULT_SETTINGS.ankiParameters[value];
const defaultValue = DEFAULT_SETTINGS.ankiParameters[parameter];
this.setValue(textComponent, defaultValue);
this.plugin.getSettings().ankiParameters[value] =
defaultValue as number & number[]; // TODO: Fix this type issue here.
this.plugin.setAnkiParameter(parameter, defaultValue);
await this.plugin.savePluginData();
});

Expand All @@ -50,23 +49,23 @@ export class SettingsTab extends PluginSettingTab {

text.onChange(async (input) => {
input = input.trim();
if (Array.isArray(DEFAULT_SETTINGS.ankiParameters[value])) {
if (
parameter === 'learningSteps' ||
parameter === 'relearningSteps'
) {
if (!this.isStringValidArray(input)) {
console.log('not a valid array', input);
return;
}

const newValue = this.parseStringToArray(input);
this.plugin.getSettings().ankiParameters[value] =
newValue as number & number[];
this.plugin.setAnkiParameter(parameter, newValue);
} else {
if (isNaN(+input)) {
return;
}

this.plugin.getSettings().ankiParameters[value] = Number(
input,
) as number & number[];
this.plugin.setAnkiParameter(parameter, Number(input));
}

await this.plugin.savePluginData();
Expand Down

0 comments on commit 393e42a

Please sign in to comment.