Fix: Pass WOPISrc directly to form submission, don't build URL with query params
- Remove URL building with query parameters that was causing GET requests - Pass WOPISrc directly to _buildCollaboraIframe function - JavaScript now creates form with POST method and WOPISrc in body - This ensures Collabora receives POST not GET request
This commit is contained in:
@@ -403,17 +403,8 @@ class _DocumentViewerModalState extends State<DocumentViewerModal> {
|
||||
|
||||
final wopiSession = snapshot.data!;
|
||||
|
||||
// Build Collabora Online viewer URL with WOPISrc
|
||||
// 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);
|
||||
// Don't build URL with query parameters - pass WOPISrc separately to JavaScript
|
||||
return _buildWebView(wopiSession.wopisrc);
|
||||
},
|
||||
);
|
||||
}
|
||||
@@ -457,16 +448,12 @@ class _DocumentViewerModalState extends State<DocumentViewerModal> {
|
||||
}
|
||||
}
|
||||
|
||||
Widget _buildCollaboraIframe(String collaboraUrl) {
|
||||
Widget _buildCollaboraIframe(String wopisrc) {
|
||||
// For Collabora Online, we need to POST the WOPISrc, not GET it
|
||||
// Use JavaScript to create and submit the form properly
|
||||
final String viewType = 'collabora-form-${DateTime.now().millisecondsSinceEpoch}';
|
||||
|
||||
ui.platformViewRegistry.registerViewFactory(viewType, (int viewId) {
|
||||
// Extract the WOPISrc from the URL
|
||||
final uri = Uri.parse(collaboraUrl);
|
||||
final wopisrc = uri.queryParameters['WOPISrc'] ?? '';
|
||||
|
||||
// Create a container for the form and iframe
|
||||
final container = html.DivElement()
|
||||
..style.width = '100%'
|
||||
@@ -531,9 +518,9 @@ class _DocumentViewerModalState extends State<DocumentViewerModal> {
|
||||
return HtmlElementView(viewType: viewType);
|
||||
}
|
||||
|
||||
Widget _buildWebView(String url) {
|
||||
Widget _buildWebView(String wopisrc) {
|
||||
// Embed Collabora Online in an iframe for web platform
|
||||
return _buildCollaboraIframe(url);
|
||||
return _buildCollaboraIframe(wopisrc);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user