Fix reference in PrintButton

This commit is contained in:
Balazs Perlaki-Horvath 2025-03-28 21:50:16 +01:00
parent b4d46e2b1e
commit 293a5142ad

View File

@ -18,10 +18,10 @@ import SwiftUI
import PDFKit import PDFKit
struct PrintButton: View { struct PrintButton: View {
@FocusedValue(\.isBrowserURLSet) var isBrowserURLSet
let browser: BrowserViewModel let browser: BrowserViewModel
private func dataAndName() async -> (Data, String)? { private static func dataAndName(browser: BrowserViewModel) async -> (Data, String)? {
guard let browserURLName = browser.webView.url?.lastPathComponent else { guard let browserURLName = browser.webView.url?.lastPathComponent else {
return nil return nil
} }
@ -31,15 +31,16 @@ struct PrintButton: View {
return (pdfData, browserURLName) return (pdfData, browserURLName)
} }
private func tempFileURL() async -> URL? { private func tempFileURL(browser: BrowserViewModel) async -> URL? {
guard let (pdfData, browserURLName) = await dataAndName() else { return nil } guard let (pdfData, browserURLName) = await Self.dataAndName(browser: browser) else { return nil }
return FileExporter.tempFileFrom(exportData: .init(data: pdfData, fileName: browserURLName)) return FileExporter.tempFileFrom(exportData: .init(data: pdfData, fileName: browserURLName))
} }
var body: some View { var body: some View {
Button { Button { [weak browser] in
Task { Task { [weak browser] in
guard let url = await tempFileURL() else { return } guard let browser,
let url = await tempFileURL(browser: browser) else { return }
let pdfDoc = PDFDocument(url: url) let pdfDoc = PDFDocument(url: url)
let operation = pdfDoc?.printOperation(for: .shared, scalingMode: .pageScaleToFit, autoRotate: true) let operation = pdfDoc?.printOperation(for: .shared, scalingMode: .pageScaleToFit, autoRotate: true)
operation?.run() operation?.run()
@ -50,7 +51,7 @@ struct PrintButton: View {
} icon: { } icon: {
Image(systemName: "printer") Image(systemName: "printer")
} }
}.disabled(browser.zimFileName.isEmpty) }.disabled(isBrowserURLSet != true)
.keyboardShortcut("p", modifiers: .command) .keyboardShortcut("p", modifiers: .command)
} }
} }