This commit is contained in:
otsmr 2025-05-20 20:59:50 +02:00
parent c53736566b
commit b6502ca8d0

View file

@ -82,19 +82,25 @@ Future sendMediaFile(
} }
} }
Future retryMediaUpload() async { final lockingHandleMediaFile = Mutex();
Future retryMediaUpload({int maxRetries = 3}) async {
await lockingHandleMediaFile.protect(() async {
final mediaFiles = final mediaFiles =
await twonlyDatabase.mediaUploadsDao.getMediaUploadsForRetry(); await twonlyDatabase.mediaUploadsDao.getMediaUploadsForRetry();
if (mediaFiles.isEmpty) return;
for (final mediaFile in mediaFiles) { for (final mediaFile in mediaFiles) {
await handleSingleMediaFile(mediaFile.mediaUploadId, null); await handleSingleMediaFile(mediaFile.mediaUploadId, null);
} }
});
if (maxRetries == 0) return;
// retry upload
Future.delayed(const Duration(milliseconds: 1000), () {
retryMediaUpload(maxRetries: maxRetries - 1);
});
} }
final lockingHandleMediaFile = Mutex();
Future handleSingleMediaFile( Future handleSingleMediaFile(
int mediaUploadId, Uint8List? tmpCurrentImageBytes) async { int mediaUploadId, Uint8List? tmpCurrentImageBytes) async {
// await lockingHandleMediaFile.protect(() async {
MediaUpload? media = await twonlyDatabase.mediaUploadsDao MediaUpload? media = await twonlyDatabase.mediaUploadsDao
.getMediaUploadById(mediaUploadId) .getMediaUploadById(mediaUploadId)
.getSingleOrNull(); .getSingleOrNull();
@ -156,7 +162,6 @@ Future handleSingleMediaFile(
.shout("Non recoverable error while sending media file: $e"); .shout("Non recoverable error while sending media file: $e");
return; return;
} }
// });
// this will be called until there is an recoverable error OR // this will be called until there is an recoverable error OR
// the upload is ready // the upload is ready
await handleSingleMediaFile(mediaUploadId, tmpCurrentImageBytes); await handleSingleMediaFile(mediaUploadId, tmpCurrentImageBytes);