diff --git a/apps/client/src/print.tsx b/apps/client/src/print.tsx
index a9dec12c4..075b566e6 100644
--- a/apps/client/src/print.tsx
+++ b/apps/client/src/print.tsx
@@ -7,6 +7,7 @@ import content_renderer, { applyInlineMermaid } from "./services/content_rendere
interface RendererProps {
note: FNote;
onReady: () => void;
+ onProgressChanged?: (progress: number) => void;
}
async function main() {
@@ -23,13 +24,16 @@ async function main() {
function App({ note, noteId }: { note: FNote | null | undefined, noteId: string }) {
const sentReadyEvent = useRef(false);
+ const onProgressChanged = useCallback((progress: number) => {
+ window.dispatchEvent(new CustomEvent("note-load-progress", { detail: { progress } }));
+ }, []);
const onReady = useCallback(() => {
if (sentReadyEvent.current) return;
window.dispatchEvent(new Event("note-ready"));
window._noteReady = true;
sentReadyEvent.current = true;
}, []);
- const props: RendererProps | undefined | null = note && { note, onReady };
+ const props: RendererProps | undefined | null = note && { note, onReady, onProgressChanged };
if (!note || !props) return
@@ -89,7 +93,7 @@ function SingleNoteRenderer({ note, onReady }: RendererProps) {
>;
}
-function CollectionRenderer({ note, onReady }: RendererProps) {
+function CollectionRenderer({ note, onReady, onProgressChanged }: RendererProps) {
const viewType = useNoteViewType(note);
return ;
}
diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx
index 0482d0ddb..5d5e5b02a 100644
--- a/apps/client/src/widgets/NoteDetail.tsx
+++ b/apps/client/src/widgets/NoteDetail.tsx
@@ -162,6 +162,10 @@ export default function NoteDetail() {
return;
}
+ iframe.contentWindow.addEventListener("note-load-progress", (e) => {
+ console.log("Got ", e);
+ });
+
iframe.contentWindow.addEventListener("note-ready", () => {
toast.closePersistent("printing");
iframe.contentWindow?.print();
diff --git a/apps/client/src/widgets/collections/NoteList.tsx b/apps/client/src/widgets/collections/NoteList.tsx
index 04c03b0e8..c613f8d39 100644
--- a/apps/client/src/widgets/collections/NoteList.tsx
+++ b/apps/client/src/widgets/collections/NoteList.tsx
@@ -26,9 +26,10 @@ interface NoteListProps {
media: ViewModeMedia;
viewType: ViewTypeOptions | undefined;
onReady?: () => void;
+ onProgressChanged?(progress: number): void;
}
-export default function NoteList(props: Pick) {
+export default function NoteList(props: Pick) {
const { note, noteContext, notePath, ntxId } = useNoteContext();
const viewType = useNoteViewType(note);
const [ enabled, setEnabled ] = useState(noteContext?.hasNoteList());
@@ -43,7 +44,7 @@ export function SearchNoteList(props: Omit
}
-export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePath, highlightedTokens, displayOnlyCollections, ntxId, onReady, ...restProps }: NoteListProps) {
+export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePath, highlightedTokens, displayOnlyCollections, ntxId, onReady, onProgressChanged, ...restProps }: NoteListProps) {
const widgetRef = useRef(null);
const noteIds = useNoteIds(shouldEnable ? note : null, viewType, ntxId);
const isFullHeight = (viewType && viewType !== "list" && viewType !== "grid");
@@ -86,6 +87,8 @@ export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePa
viewConfig: viewModeConfig.config,
saveConfig: viewModeConfig.storeFn,
onReady: onReady ?? (() => {}),
+ onProgressChanged: onProgressChanged ?? (() => {}),
+
...restProps
}
}
diff --git a/apps/client/src/widgets/collections/interface.ts b/apps/client/src/widgets/collections/interface.ts
index 7bec23a64..bd80b4afd 100644
--- a/apps/client/src/widgets/collections/interface.ts
+++ b/apps/client/src/widgets/collections/interface.ts
@@ -17,4 +17,5 @@ export interface ViewModeProps {
saveConfig(newConfig: T): void;
media: ViewModeMedia;
onReady(): void;
+ onProgressChanged?(progress: number): void;
}
diff --git a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx
index 77a354d0d..3fc1be0b4 100644
--- a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx
+++ b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx
@@ -10,7 +10,7 @@ interface NotesWithContent {
contentEl: HTMLElement;
}
-export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady }: ViewModeProps<{}>) {
+export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onProgressChanged }: ViewModeProps<{}>) {
const noteIds = useFilteredNoteIds(note, unfilteredNoteIds);
const [ notesWithContent, setNotesWithContent ] = useState();
@@ -33,6 +33,10 @@ export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady }: Vie
noteIdsSet.add(note.noteId);
notesWithContent.push({ note, contentEl });
+ if (onProgressChanged) {
+ onProgressChanged((notesWithContent.length / noteIds.length) * 100);
+ }
+
if (note.hasChildren()) {
const filteredChildNotes = await filterChildNotes(note);
for (const childNote of filteredChildNotes) {