diff --git a/src/main.ts b/src/main.ts index e101a16..e08b3b1 100644 --- a/src/main.ts +++ b/src/main.ts @@ -215,13 +215,22 @@ export default class MediaDbPlugin extends Plugin { let selectedResults: MediaTypeModel[] = await new Promise((resolve, reject) => { const searchResultModal = new MediaDbSearchResultModal(this.app, this, results, (err, res) => { - if (err) return reject(err); + if (err) { + return reject(err); + } resolve(res); + }, () => { + resolve([]); }); + searchResultModal.title = `Results for \'${title}\'`; searchResultModal.open(); }); + if (selectedResults.length === 0) { + erroredFiles.push({filePath: file.path, error: `no search results selected`}); + } + await this.createMediaDbNote(async () => selectedResults); } } @@ -249,7 +258,7 @@ export default class MediaDbPlugin extends Plugin { return reject(err2); } resolve(res); - }).open(); + }, () => resolve([])).open(); }).open(); })); } @@ -257,7 +266,9 @@ export default class MediaDbPlugin extends Plugin { async openMediaDbIdSearchModal(): Promise { return new Promise(((resolve, reject) => { new MediaDbIdSearchModal(this.app, this, (err, res) => { - if (err) return reject(err); + if (err) { + return reject(err); + } resolve(res); }).open(); })); diff --git a/src/modals/MediaDbSearchResultModal.ts b/src/modals/MediaDbSearchResultModal.ts index 2306e77..5bddc99 100644 --- a/src/modals/MediaDbSearchResultModal.ts +++ b/src/modals/MediaDbSearchResultModal.ts @@ -7,11 +7,13 @@ export class MediaDbSearchResultModal extends SelectModal { plugin: MediaDbPlugin; heading: string; onChoose: (error: Error, result: MediaTypeModel[]) => void; + onCancel: () => void; - constructor(app: App, plugin: MediaDbPlugin, elements: MediaTypeModel[], onChoose: (error: Error, result: MediaTypeModel[]) => void) { + constructor(app: App, plugin: MediaDbPlugin, elements: MediaTypeModel[], onChoose: (error: Error, result: MediaTypeModel[]) => void, onCancel: () => void) { super(app, elements); this.plugin = plugin; this.onChoose = onChoose; + this.onCancel = onCancel; this.title = 'Search Results'; this.description = 'Select one or multiple search results.'; @@ -25,8 +27,12 @@ export class MediaDbSearchResultModal extends SelectModal { } // Perform action on the selected suggestion. - submit() { + onSubmit() { this.onChoose(null, this.selectModalElements.filter(x => x.isActive()).map(x => x.value)); this.close(); } + + onClose() { + this.onCancel(); + } } diff --git a/src/modals/SelectModal.ts b/src/modals/SelectModal.ts index 6b11073..c6423b8 100644 --- a/src/modals/SelectModal.ts +++ b/src/modals/SelectModal.ts @@ -22,7 +22,7 @@ export abstract class SelectModal extends Modal { abstract renderElement(value: T, el: HTMLElement): any; - abstract submit(): void; + abstract onSubmit(): void; disableAllOtherElements(elementId: number) { for (const selectModalElement of this.selectModalElements) { @@ -67,6 +67,6 @@ export abstract class SelectModal extends Modal { new Setting(contentEl) .addButton(btn => btn.setButtonText('Cancel').onClick(() => this.close())) - .addButton(btn => btn.setButtonText('Ok').setCta().onClick(() => this.submit())); + .addButton(btn => btn.setButtonText('Ok').setCta().onClick(() => this.onSubmit())); } }