From 91d6f944b038c0864534900e901186381ce5c53a Mon Sep 17 00:00:00 2001 From: Hank Grabowski Date: Sat, 18 Nov 2023 17:48:10 -0500 Subject: [PATCH] Fix low-res PNG problem by always loading high res of PNG files only --- lib/controls/media_attachment_viewer_control.dart | 6 +++--- lib/models/media_attachment.dart | 10 +++++++++- lib/screens/media_viewer_screen.dart | 2 +- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/lib/controls/media_attachment_viewer_control.dart b/lib/controls/media_attachment_viewer_control.dart index 53fae0e..27ec270 100644 --- a/lib/controls/media_attachment_viewer_control.dart +++ b/lib/controls/media_attachment_viewer_control.dart @@ -43,7 +43,7 @@ class _MediaAttachmentViewerControlState if (item.explicitType == AttachmentMediaType.video) { return AVControl( - videoUrl: item.uri.toString(), + videoUrl: item.mainUri.toString(), width: width, height: height, description: item.description, @@ -51,13 +51,13 @@ class _MediaAttachmentViewerControlState ); } if (item.explicitType != AttachmentMediaType.image) { - return Text('${item.explicitType}: ${item.uri}'); + return Text('${item.explicitType}: ${item.mainUri}'); } return ImageControl( width: width, height: height, - imageUrl: item.thumbnailUri.toString(), + imageUrl: item.usableThumbnailUri.toString(), altText: item.description, onTap: openMediaScreenCallback, ); diff --git a/lib/models/media_attachment.dart b/lib/models/media_attachment.dart index fd3f493..bf0f98e 100644 --- a/lib/models/media_attachment.dart +++ b/lib/models/media_attachment.dart @@ -29,6 +29,12 @@ class MediaAttachment { final Visibility visibility; + late final String _extension; + + Uri get mainUri => _extension == '.png' ? fullFileUri : uri; + + Uri get usableThumbnailUri => _extension == '.png' ? fullFileUri : uri; + MediaAttachment({ required this.id, required this.uri, @@ -40,7 +46,9 @@ class MediaAttachment { required this.explicitType, required this.description, required this.visibility, - }); + }) { + _extension = p.extension(fullFileUri.path); + } MediaAttachment.randomBuilt() : id = randomId(), diff --git a/lib/screens/media_viewer_screen.dart b/lib/screens/media_viewer_screen.dart index a389308..af03d95 100644 --- a/lib/screens/media_viewer_screen.dart +++ b/lib/screens/media_viewer_screen.dart @@ -107,7 +107,7 @@ class _MediaViewerScreenState extends State { maxScale: 10.0, scaleFactor: 400, child: LoginAwareCachedNetworkImage( - imageUrl: currentAttachment.uri.toString()), + imageUrl: currentAttachment.mainUri.toString()), ); break; case AttachmentMediaType.unknown: