mirror of
				https://github.com/zadam/trilium.git
				synced 2025-10-31 02:16:05 +01:00 
			
		
		
		
	chore(client/print): address requested changes
This commit is contained in:
		| @@ -26,6 +26,7 @@ function App({ note, noteId }: { note: FNote | null | undefined, noteId: string | ||||
|     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 }; | ||||
|   | ||||
							
								
								
									
										3
									
								
								apps/client/src/types.d.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								apps/client/src/types.d.ts
									
									
									
									
										vendored
									
									
								
							| @@ -59,6 +59,9 @@ declare global { | ||||
|         process?: ElectronProcess; | ||||
|         glob?: CustomGlobals; | ||||
|  | ||||
|         /** On the printing endpoint, set to true when the note has fully loaded and is ready to be printed/exported as PDF. */ | ||||
|         _noteReady?: boolean; | ||||
|  | ||||
|         EXCALIDRAW_ASSET_PATH?: string; | ||||
|     } | ||||
|  | ||||
|   | ||||
| @@ -322,7 +322,12 @@ export default class NoteDetailWidget extends NoteContextAwareWidget { | ||||
|             iframe.className = "print-iframe"; | ||||
|             document.body.appendChild(iframe); | ||||
|             iframe.onload = () => { | ||||
|                 if (!iframe.contentWindow) return; | ||||
|                 if (!iframe.contentWindow) { | ||||
|                     toast.closePersistent("printing"); | ||||
|                     document.body.removeChild(iframe); | ||||
|                     return; | ||||
|                 } | ||||
|  | ||||
|                 iframe.contentWindow.addEventListener("note-ready", () => { | ||||
|                     toast.closePersistent("printing"); | ||||
|                     iframe.contentWindow?.print(); | ||||
|   | ||||
| @@ -84,19 +84,18 @@ interface ExportAsPdfOpts { | ||||
| electron.ipcMain.on("print-note", async (e, { notePath }: PrintOpts) => { | ||||
|     const browserWindow = await getBrowserWindowForPrinting(e, notePath); | ||||
|     browserWindow.webContents.print({}, (success, failureReason) => { | ||||
|         if (success) { | ||||
|             browserWindow.destroy(); | ||||
|         } else { | ||||
|         if (!success) { | ||||
|             electron.dialog.showErrorBox(t("pdf.unable-to-print"), failureReason); | ||||
|         } | ||||
|         e.sender.send("print-done"); | ||||
|         browserWindow.destroy(); | ||||
|     }); | ||||
| }); | ||||
|  | ||||
| electron.ipcMain.on("export-as-pdf", async (e, { title, notePath, landscape, pageSize }: ExportAsPdfOpts) => { | ||||
|     async function print() { | ||||
|     const browserWindow = await getBrowserWindowForPrinting(e, notePath); | ||||
|  | ||||
|     async function print() { | ||||
|         const filePath = electron.dialog.showSaveDialogSync(browserWindow, { | ||||
|             defaultPath: formatDownloadTitle(title, "file", "application/pdf"), | ||||
|             filters: [ | ||||
| @@ -138,8 +137,12 @@ electron.ipcMain.on("export-as-pdf", async (e, { title, notePath, landscape, pag | ||||
|         electron.shell.openPath(filePath); | ||||
|     } | ||||
|  | ||||
|     try { | ||||
|         await print(); | ||||
|     } finally { | ||||
|         e.sender.send("print-done"); | ||||
|         browserWindow.destroy(); | ||||
|     } | ||||
| }); | ||||
|  | ||||
| async function getBrowserWindowForPrinting(e: IpcMainEvent, notePath: string) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user