diff --git a/lib/src/services/api/mediafiles/download.service.dart b/lib/src/services/api/mediafiles/download.service.dart index f5108a1..f8315ce 100644 --- a/lib/src/services/api/mediafiles/download.service.dart +++ b/lib/src/services/api/mediafiles/download.service.dart @@ -100,9 +100,11 @@ Future handleDownloadStatusUpdate(TaskStatusUpdate update) async { failed = false; } else { failed = true; - Log.error( - 'Got invalid response status code: ${update.responseStatusCode}', - ); + if (update.responseStatusCode != null) { + Log.error( + 'Got invalid response status code: ${update.responseStatusCode}', + ); + } } } else { Log.info('Got ${update.status} for $mediaId'); diff --git a/lib/src/services/twonly_safe/create_backup.twonly_safe.dart b/lib/src/services/twonly_safe/create_backup.twonly_safe.dart index 434b9d5..640e9cd 100644 --- a/lib/src/services/twonly_safe/create_backup.twonly_safe.dart +++ b/lib/src/services/twonly_safe/create_backup.twonly_safe.dart @@ -203,9 +203,6 @@ Future performTwonlySafeBackup({bool force = false}) async { Future handleBackupStatusUpdate(TaskStatusUpdate update) async { if (update.status == TaskStatus.failed || update.status == TaskStatus.canceled) { - Log.error( - 'twonly Backup upload failed. ${update.responseStatusCode} ${update.responseBody} ${update.responseHeaders} ${update.exception}', - ); await updateUserdata((user) { if (user.twonlySafeBackup != null) { user.twonlySafeBackup!.backupUploadState = LastBackupUploadState.failed; diff --git a/lib/src/views/chats/chat_messages.view.dart b/lib/src/views/chats/chat_messages.view.dart index 4526e8e..f4dbc51 100644 --- a/lib/src/views/chats/chat_messages.view.dart +++ b/lib/src/views/chats/chat_messages.view.dart @@ -260,6 +260,7 @@ class _ChatMessagesViewState extends State { }); final items = await MemoryItem.convertFromMessages(storedMediaFiles); + if (!mounted) return; galleryItems = items.values.toList(); setState(() {}); } diff --git a/lib/src/views/chats/media_viewer.view.dart b/lib/src/views/chats/media_viewer.view.dart index 846b32d..beba83f 100644 --- a/lib/src/views/chats/media_viewer.view.dart +++ b/lib/src/views/chats/media_viewer.view.dart @@ -172,12 +172,7 @@ class _MediaViewerViewState extends State { showSendTextMessageInput = false; }); - // if (Platform.isAndroid) { - // await flutterLocalNotificationsPlugin - // .cancel(allMediaFiles.first.contactId); - // } else { - await flutterLocalNotificationsPlugin.cancelAll(); - // } + unawaited(flutterLocalNotificationsPlugin.cancelAll()); final stream = twonlyDB.mediaFilesDao.watchMedia(allMediaFiles.first.mediaId!); @@ -261,6 +256,8 @@ class _MediaViewerViewState extends State { return nextMediaOrExit(); } + var timerRequired = false; + if (currentMediaLocal.mediaFile.type == MediaType.video) { videoController = VideoPlayerController.file(currentMediaLocal.tempPath); await videoController?.setLooping( @@ -292,12 +289,17 @@ class _MediaViewerViewState extends State { currentMediaLocal.mediaFile.displayLimitInMilliseconds!, ), ); + timerRequired = true; + } + } + if (mounted) { + setState(() { + currentMedia = currentMediaLocal; + }); + if (timerRequired) { startTimer(); } } - setState(() { - currentMedia = currentMediaLocal; - }); } void startTimer() { @@ -310,14 +312,16 @@ class _MediaViewerViewState extends State { } }); progressTimer = Timer.periodic(const Duration(milliseconds: 10), (timer) { - if (currentMedia!.mediaFile.displayLimitInMilliseconds == null || + final mediaFile = currentMedia?.mediaFile; + if (mediaFile == null) return; + if (mediaFile.displayLimitInMilliseconds == null || canBeSeenUntil == null) { return; } final difference = canBeSeenUntil!.difference(DateTime.now()); // Calculate the progress as a value between 0.0 and 1.0 - progress = difference.inMilliseconds / - (currentMedia!.mediaFile.displayLimitInMilliseconds!); + progress = + difference.inMilliseconds / (mediaFile.displayLimitInMilliseconds!); setState(() {}); }); }