From 3c8244b977227c88adfbe48900abaa49602165df Mon Sep 17 00:00:00 2001 From: otsmr Date: Thu, 30 Jul 2026 10:08:42 +0200 Subject: [PATCH] fix issues with the memories viewer --- .../mediafiles/mediafile.service.dart | 10 +++++---- .../components/memory_thumbnail.comp.dart | 21 +++++++++++++++---- 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/lib/src/services/mediafiles/mediafile.service.dart b/lib/src/services/mediafiles/mediafile.service.dart index dc089ea1..90707294 100644 --- a/lib/src/services/mediafiles/mediafile.service.dart +++ b/lib/src/services/mediafiles/mediafile.service.dart @@ -323,10 +323,12 @@ class MediaFileService { name: mediaFile.mediaId, ); } else { - await saveImageToGallery( - storedPath.readAsBytesSync(), - createdAt: mediaFile.createdAt, - name: mediaFile.mediaId, + unawaited( + saveImageToGallery( + await storedPath.readAsBytes(), + createdAt: mediaFile.createdAt, + name: mediaFile.mediaId, + ), ); } } diff --git a/lib/src/visual/views/memories/components/memory_thumbnail.comp.dart b/lib/src/visual/views/memories/components/memory_thumbnail.comp.dart index 2f018520..c62f80d9 100644 --- a/lib/src/visual/views/memories/components/memory_thumbnail.comp.dart +++ b/lib/src/visual/views/memories/components/memory_thumbnail.comp.dart @@ -113,6 +113,8 @@ class _MemoriesThumbnailCompState extends State { } if (_imageProvider != null) { + _imageStream?.removeListener(_listener); + _imageStream = null; WidgetsBinding.instance.addPostFrameCallback((_) { if (!mounted) return; final config = createLocalImageConfiguration(context); @@ -189,10 +191,21 @@ class _MemoriesThumbnailCompState extends State { gaplessPlayback: true, errorBuilder: (context, error, stackTrace) { if (error.toString().contains('Invalid image data')) { - if (_selectedImageFile != null) { - _selectedImageFile?.deleteSync(); - _retries++; - _resolveImage(); + final fileToDelete = _selectedImageFile; + _selectedImageFile = null; + if (fileToDelete != null) { + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!mounted) return; + try { + if (fileToDelete.existsSync()) { + fileToDelete.deleteSync(); + } + } catch (_) {} + if (_retries < 3) { + _retries++; + _resolveImage(); + } + }); } } Log.warn(error);