Skip to content

Commit

Permalink
chore: fix the type errors
Browse files Browse the repository at this point in the history
  • Loading branch information
danielo515 committed Oct 25, 2023
1 parent 32df515 commit 1e9fd65
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 10 deletions.
20 changes: 15 additions & 5 deletions src/API.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import { App } from "obsidian";

import type { FormDefinition, FormOptions } from "./core/formDefinition";
import { MigrationError, type FormDefinition, type FormOptions } from "./core/formDefinition";
import FormResult from "./FormResult";
import { exampleModalDefinition } from "./exampleModalDefinition";
import ModalFormPlugin from "./main";
import { ModalFormError } from "./utils/Error";
import { FormModal } from "./FormModal";
import { log_error } from "./utils/Log";
import { log_error, log_notice } from "./utils/Log";

type pickOption = { pick: string[] }
type omitOption = { omit: string[] }
Expand Down Expand Up @@ -47,7 +47,17 @@ export class API {
}

getFormByName(name: string): FormDefinition | undefined {
return this.plugin.settings?.formDefinitions.find(form => form.name === name);
const form = this.plugin.settings?.formDefinitions.find((form) => form.name === name);
if (form instanceof MigrationError) {
log_notice('The form you tried to load hs an invalid format', `
The form ${name} has an invalid format.
We tried to automatically convert it but it failed, please fix it manually in the forms manager.
`)
return undefined;
} else {

return form;
}
}

/**
Expand All @@ -73,9 +83,9 @@ export class API {
if (formDefinition) {
if (isOmitOption(opts)) {
const omit = opts.omit
newFormDefinition = { ...formDefinition, fields: formDefinition.fields.filter(field => !omit.includes(field.name)) }
newFormDefinition = { ...formDefinition, fields: formDefinition.fields.filter((field) => !omit.includes(field.name)) }
} else if (isPickOption(opts)) {
newFormDefinition = { ...formDefinition, fields: formDefinition.fields.filter(field => opts.pick.includes(field.name)) }
newFormDefinition = { ...formDefinition, fields: formDefinition.fields.filter((field) => opts.pick.includes(field.name)) }
} else {
throw new ModalFormError('Invalid options provided to limitedForm', `GOT: ${JSON.stringify(opts)}`)
}
Expand Down
3 changes: 3 additions & 0 deletions src/core/formDefinition.ts
Original file line number Diff line number Diff line change
Expand Up @@ -107,6 +107,9 @@ export class MigrationError {
${this.error.message}
${this.error.issues.map((issue) => issue.message).join(', ')}`
}
toJSON() {
return this.form
}
}

/**
Expand Down
2 changes: 1 addition & 1 deletion src/core/settings.ts
Original file line number Diff line number Diff line change
Expand Up @@ -51,5 +51,5 @@ export function parseSettings(maybeSettings: unknown): E.Either<ValiError | Null

export interface ModalFormSettings {
editorPosition: OpenPosition;
formDefinitions: (FormDefinition | MigrationError)[];
formDefinitions: (MigrationError | FormDefinition)[];
}
12 changes: 8 additions & 4 deletions src/views/ManageFormsView.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { MigrationError } from "src/core/formDefinition";
import ModalFormPlugin from "../main";
import { ItemView, Notice, Setting, WorkspaceLeaf } from "obsidian";

Expand Down Expand Up @@ -31,7 +32,7 @@ export class ManageFormsView extends ItemView {
}

renderControls(root: HTMLElement) {
new Setting(root).addButton(button => {
new Setting(root).addButton((button) => {
button.setButtonText('Add new form').onClick(() => {
this.plugin.createNewForm();
})
Expand All @@ -45,7 +46,10 @@ export class ManageFormsView extends ItemView {
root.empty();
const rows = root.createDiv();
rows.setCssStyles({ display: 'flex', flexDirection: 'column', gap: '10px' });
forms.forEach(form => {
forms.forEach((form) => {
if (form instanceof MigrationError) {
return // TODO: UI for migration errors
}
const row = rows.createDiv()
row.setCssStyles({ display: 'flex', flexDirection: 'column', gap: '8px' })
row.createEl("h4", { text: form.name });
Expand All @@ -72,13 +76,13 @@ export class ManageFormsView extends ItemView {
});
}
)
.addButton(btn => {
.addButton((btn) => {
btn.setTooltip('duplicate ' + form.name)
btn.setButtonText('Duplicate').onClick(() => {
this.plugin.duplicateForm(form);
})
})
.addButton(button => {
.addButton((button) => {
button.setIcon('clipboard-copy')
button.onClick(() => {
navigator.clipboard.writeText(JSON.stringify(form, null, 2));
Expand Down

0 comments on commit 1e9fd65

Please sign in to comment.