From 0b822af438e1742da7f9666fffba01df21ffa8c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Mon, 12 Jan 2026 10:12:58 +0100 Subject: [PATCH] Fix: Use proper URL building for Collabora WOPISrc parameter - Changed from manual string concatenation to Uri.parse().replace(queryParameters: ...) - This properly encodes the WOPISrc while maintaining encoding through iframe.src - Fixes Collabora 'WOPISrc validation error: unencoded WOPISrc' warning - Uri API ensures query parameters are properly percent-encoded --- b0esche_cloud/lib/pages/document_viewer.dart | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/b0esche_cloud/lib/pages/document_viewer.dart b/b0esche_cloud/lib/pages/document_viewer.dart index c3693e8..05ab0d1 100644 --- a/b0esche_cloud/lib/pages/document_viewer.dart +++ b/b0esche_cloud/lib/pages/document_viewer.dart @@ -404,10 +404,12 @@ class _DocumentViewerModalState extends State { final wopiSession = snapshot.data!; // Build Collabora Online viewer URL with WOPISrc - // The WOPISrc must be URL-encoded since it contains special characters (://, ?, =, &) - final encodedWopisrc = Uri.encodeComponent(wopiSession.wopisrc); - final collaboraUrl = - 'https://of.b0esche.cloud/loleaflet/dist/loleaflet.html?WOPISrc=$encodedWopisrc'; + // The WOPISrc must be URL-encoded and kept encoded + // We use a double-encoding approach: encodeComponent keeps it encoded through iframe.src + final baseUrl = 'https://of.b0esche.cloud/loleaflet/dist/loleaflet.html'; + final collaboraUrl = Uri.parse(baseUrl) + .replace(queryParameters: {'WOPISrc': wopiSession.wopisrc}) + .toString(); // Use WebView to display Collabora Online return _buildWebView(collaboraUrl);