From 6715081d8965642095187d901d7db445bc7b2490 Mon Sep 17 00:00:00 2001 From: otsmr Date: Thu, 1 May 2025 23:25:03 +0200 Subject: [PATCH] improve error handling --- lib/src/providers/api/media_received.dart | 14 +++++++++++++- lib/src/providers/api_provider.dart | 1 + 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/lib/src/providers/api/media_received.dart b/lib/src/providers/api/media_received.dart index f52d760..2b1a992 100644 --- a/lib/src/providers/api/media_received.dart +++ b/lib/src/providers/api/media_received.dart @@ -8,6 +8,7 @@ import 'package:twonly/globals.dart'; import 'package:twonly/src/database/twonly_database.dart'; import 'package:twonly/src/database/tables/messages_table.dart'; import 'package:twonly/src/model/json/message.dart'; +import 'package:twonly/src/providers/api/api_utils.dart'; import 'package:twonly/src/providers/api/media_send.dart'; import 'dart:typed_data'; import 'package:cryptography_plus/cryptography_plus.dart'; @@ -130,7 +131,18 @@ Future startDownloadMedia(Message message, bool force) async { } downloadStartedForMediaReceived[message.messageId] = DateTime.now(); - apiProvider.triggerDownload(content.downloadToken!, offset); + Result res = + await apiProvider.triggerDownload(content.downloadToken!, offset); + if (res.isError) { + if (res.error == ErrorCode.InvalidDownloadToken) { + await twonlyDatabase.messagesDao.updateMessageByMessageId( + media.messageId, + MessagesCompanion( + errorWhileSending: Value(true), + ), + ); + } + } } } diff --git a/lib/src/providers/api_provider.dart b/lib/src/providers/api_provider.dart index 1e22ca5..412d0bf 100644 --- a/lib/src/providers/api_provider.dart +++ b/lib/src/providers/api_provider.dart @@ -208,6 +208,7 @@ class ApiProvider { Result res = asResult(await _waitForResponse(seq)); if (res.isError) { + Logger("api_provider").shout("Got error from SERVER: ${res.error}"); if (res.error == ErrorCode.SessionNotAuthenticated) { isAuthenticated = false; if (authenticated) {