From 6a3a2f67013f1264060b384b585a3a6b70528b29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Leon=20B=C3=B6sche?= Date: Sat, 10 Jan 2026 02:09:52 +0100 Subject: [PATCH] Add session token handling for PDF viewer in DocumentViewerModal and DocumentViewer --- b0esche_cloud/lib/pages/document_viewer.dart | 33 ++++++++++++++++++-- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/b0esche_cloud/lib/pages/document_viewer.dart b/b0esche_cloud/lib/pages/document_viewer.dart index bdbd58d..2e35ec5 100644 --- a/b0esche_cloud/lib/pages/document_viewer.dart +++ b/b0esche_cloud/lib/pages/document_viewer.dart @@ -4,6 +4,8 @@ import 'package:flutter_bloc/flutter_bloc.dart'; import '../blocs/document_viewer/document_viewer_bloc.dart'; import '../blocs/document_viewer/document_viewer_event.dart'; import '../blocs/document_viewer/document_viewer_state.dart'; +import '../blocs/session/session_bloc.dart'; +import '../blocs/session/session_state.dart'; import '../services/file_service.dart'; import '../injection.dart'; import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart'; @@ -167,7 +169,20 @@ class _DocumentViewerModalState extends State { } if (state is DocumentViewerReady) { if (state.caps.isPdf) { - return SfPdfViewer.network(state.viewUrl.toString()); + return BlocBuilder( + builder: (context, sessionState) { + String? token; + if (sessionState is SessionActive) { + token = sessionState.token; + } + return SfPdfViewer.network( + state.viewUrl.toString(), + headers: token != null + ? {'Authorization': 'Bearer $token'} + : {}, + ); + }, + ); } else { return Container( color: AppTheme.secondaryText, @@ -318,8 +333,20 @@ class _DocumentViewerState extends State { } if (state is DocumentViewerReady) { if (state.caps.isPdf) { - // Use PDF viewer - return SfPdfViewer.network(state.viewUrl.toString()); + return BlocBuilder( + builder: (context, sessionState) { + String? token; + if (sessionState is SessionActive) { + token = sessionState.token; + } + return SfPdfViewer.network( + state.viewUrl.toString(), + headers: token != null + ? {'Authorization': 'Bearer $token'} + : {}, + ); + }, + ); } else { // Placeholder for office docs iframe return Container(