TF-2764 Hide printing button in browsers (Firefox/Safari/Edge)
This commit is contained in:
@@ -7,8 +7,10 @@ import 'package:core/presentation/state/failure.dart';
|
|||||||
import 'package:core/presentation/state/success.dart';
|
import 'package:core/presentation/state/success.dart';
|
||||||
import 'package:core/utils/app_logger.dart';
|
import 'package:core/utils/app_logger.dart';
|
||||||
import 'package:dartz/dartz.dart' as dartz;
|
import 'package:dartz/dartz.dart' as dartz;
|
||||||
|
import 'package:device_info_plus/device_info_plus.dart';
|
||||||
import 'package:dio/dio.dart';
|
import 'package:dio/dio.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:get/get.dart';
|
||||||
import 'package:jmap_dart_client/jmap/account_id.dart';
|
import 'package:jmap_dart_client/jmap/account_id.dart';
|
||||||
import 'package:model/download/download_task_id.dart';
|
import 'package:model/download/download_task_id.dart';
|
||||||
import 'package:model/email/attachment.dart';
|
import 'package:model/email/attachment.dart';
|
||||||
@@ -57,6 +59,8 @@ class _PDFViewerState extends State<PDFViewer> {
|
|||||||
final PdfViewerController _pdfViewerController = PdfViewerController();
|
final PdfViewerController _pdfViewerController = PdfViewerController();
|
||||||
final ValueNotifier<Object?> _pdfViewStateNotifier = ValueNotifier<Object?>(null);
|
final ValueNotifier<Object?> _pdfViewStateNotifier = ValueNotifier<Object?>(null);
|
||||||
|
|
||||||
|
final DeviceInfoPlugin _deviceInfoPlugin = Get.find<DeviceInfoPlugin>();
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void initState() {
|
void initState() {
|
||||||
super.initState();
|
super.initState();
|
||||||
@@ -99,6 +103,10 @@ class _PDFViewerState extends State<PDFViewer> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isBrowserSupportedPrinting(BrowserName? browserName) => !(browserName == BrowserName.edge
|
||||||
|
|| browserName == BrowserName.firefox
|
||||||
|
|| browserName == BrowserName.safari);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
void dispose() {
|
void dispose() {
|
||||||
_pdfViewerController.dispose();
|
_pdfViewerController.dispose();
|
||||||
@@ -199,17 +207,24 @@ class _PDFViewerState extends State<PDFViewer> {
|
|||||||
valueListenable: _pdfViewStateNotifier,
|
valueListenable: _pdfViewStateNotifier,
|
||||||
builder: (context, viewState, child) {
|
builder: (context, viewState, child) {
|
||||||
if (viewState is DownloadAttachmentForWebSuccess) {
|
if (viewState is DownloadAttachmentForWebSuccess) {
|
||||||
return TopBarPDFViewer(
|
return FutureBuilder<BaseDeviceInfo>(
|
||||||
attachment: widget.attachment,
|
future: _deviceInfoPlugin.deviceInfo,
|
||||||
downloadAction: () => widget.downloadAction?.call(
|
builder: (context, deviceInfo) {
|
||||||
viewState.bytes,
|
BrowserName? browserName;
|
||||||
widget.attachment.generateFileName()
|
if (deviceInfo.hasData && deviceInfo.data is WebBrowserInfo) {
|
||||||
),
|
browserName = (deviceInfo.data as WebBrowserInfo).browserName;
|
||||||
printAction: () => widget.printAction?.call(
|
}
|
||||||
viewState.bytes,
|
return TopBarPDFViewer(
|
||||||
widget.attachment.generateFileName()
|
attachment: widget.attachment,
|
||||||
),
|
downloadAction: () => widget.downloadAction?.call(
|
||||||
);
|
viewState.bytes,
|
||||||
|
widget.attachment.generateFileName()
|
||||||
|
),
|
||||||
|
printAction: isBrowserSupportedPrinting(browserName) ?
|
||||||
|
() => widget.printAction?.call(viewState.bytes, widget.attachment.generateFileName())
|
||||||
|
: null,
|
||||||
|
);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
return child ?? const SizedBox.shrink();
|
return child ?? const SizedBox.shrink();
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user