obsidian-book-tracker/src/ui/modals/ReadingProgressModal.ts

32 lines
723 B
TypeScript

import ReadingProgressModalView from "./ReadingProgressModalView.svelte";
import { App } from "obsidian";
import { SvelteModal } from "./SvelteModal";
export class ReadingProgressModal extends SvelteModal<
typeof ReadingProgressModalView
> {
constructor(
app: App,
pageCount: number,
onSubmit: (pageNumber: number) => void = () => {}
) {
super(app, ReadingProgressModalView, {
props: { pageCount, onSubmit },
});
}
static createAndOpen(app: App, pageCount: number): Promise<number> {
return new Promise((resolve) => {
const modal = new ReadingProgressModal(
app,
pageCount,
(pageNumber: number) => {
modal.close();
resolve(pageNumber);
}
);
modal.open();
});
}
}