From 3ceeb3c51cac0a0c3eda87709bee35124ffbea85 Mon Sep 17 00:00:00 2001 From: AB1908 <14124383+AB1908@users.noreply.github.com> Date: Sat, 8 Oct 2022 18:46:46 +0530 Subject: [PATCH] feat: add previewModal handler to ModalHelper --- src/utils/ModalHelper.ts | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/utils/ModalHelper.ts b/src/utils/ModalHelper.ts index 2529679..a573e12 100644 --- a/src/utils/ModalHelper.ts +++ b/src/utils/ModalHelper.ts @@ -131,5 +131,42 @@ export class ModalHelper { return; } } + + async createPreviewModal(mediaTypeModel: MediaTypeModel[]): Promise<{ result: boolean, previewModal: MediaDbPreviewModal }> { + //todo: handle attachFile for existing files + const modal = new MediaDbPreviewModal(this.plugin, mediaTypeModel, { attachTemplate: true, attachFile: false }); + const booleanResult: boolean = await new Promise((resolve, reject) => { + modal.setSubmitCallback(res => resolve(res)); + modal.setCloseCallback(err => { + if (err) { + reject(err); + } + resolve(undefined); + }); + + modal.open(); + }); + return { result: booleanResult, previewModal: modal }; + } + + async openPreviewModal(mediaModels: MediaTypeModel[], submitCallback: (result: boolean) => Promise): Promise { + const { result, previewModal } = await this.createPreviewModal(mediaModels); + if (!result) { + previewModal.close(); + return; + } + + try { + let callbackRes: boolean; + callbackRes = await submitCallback(result); + previewModal.close(); + return callbackRes; + } catch (e) { + console.warn(e); + new Notice(e.toString()); + previewModal.close(); + return; + } + } }