export & copy page content as pdf/md

This commit is contained in:
Fabian Freund
2025-12-25 18:36:31 +01:00
parent 2c58029d8a
commit 774da40ddc
7 changed files with 209 additions and 0 deletions
@@ -21,6 +21,7 @@ import eu.weblibre.flutter_mozilla_components.activities.NotificationActivity
import eu.weblibre.flutter_mozilla_components.R
import eu.weblibre.flutter_mozilla_components.ext.getPreferenceKey
import eu.weblibre.flutter_mozilla_components.middleware.FlutterEventMiddleware
import eu.weblibre.flutter_mozilla_components.middleware.SaveToPDFMiddleware
import eu.weblibre.flutter_mozilla_components.pigeons.BrowserExtensionEvents
import eu.weblibre.flutter_mozilla_components.pigeons.GeckoStateEvents
import kotlinx.coroutines.FlowPreview
@@ -191,6 +192,7 @@ class Core(
SessionPrioritizationMiddleware(),
RecordingDevicesMiddleware(context, components.notificationsDelegate),
PromptMiddleware(),
SaveToPDFMiddleware(),
FileUploadsDirCleanerMiddleware(fileUploadsDirCleaner),
LastMediaAccessMiddleware(),
) + EngineMiddleware.create(
@@ -0,0 +1,32 @@
package eu.weblibre.flutter_mozilla_components.middleware
import mozilla.components.browser.state.action.BrowserAction
import mozilla.components.browser.state.action.EngineAction
import mozilla.components.browser.state.state.BrowserState
import mozilla.components.feature.addons.logger
import mozilla.components.lib.state.Middleware
import mozilla.components.lib.state.MiddlewareContext
class SaveToPDFMiddleware : Middleware<BrowserState, BrowserAction> {
override fun invoke(
context: MiddlewareContext<BrowserState, BrowserAction>,
next: (BrowserAction) -> Unit,
action: BrowserAction,
) {
when (action) {
is EngineAction.SaveToPdfAction -> {
// Continue to generate the PDF, passing through here to add telemetry
next(action)
}
is EngineAction.SaveToPdfCompleteAction -> {
logger.info("Saved PDF successfully")
}
is EngineAction.SaveToPdfExceptionAction -> {
logger.error("Unable to save PDF", action.throwable)
}
else -> {
next(action)
}
}
}
}