diff --git a/lib/src/providers/api/api.dart b/lib/src/providers/api/api.dart index 05c5391..8bfb752 100644 --- a/lib/src/providers/api/api.dart +++ b/lib/src/providers/api/api.dart @@ -41,9 +41,8 @@ Future tryTransmitMessages() async { ), ); } - failed[key] = retransmit[key]; } else { - // in case of error do nothing. As the message is not removed the app will try again when relaunched + failed[key] = retransmit[key]; } } Box box = await getMediaStorage(); diff --git a/lib/src/providers/api/media.dart b/lib/src/providers/api/media.dart index 11072c7..3ecf1a9 100644 --- a/lib/src/providers/api/media.dart +++ b/lib/src/providers/api/media.dart @@ -304,9 +304,6 @@ Future sendImage( metadata.messageIds = {}; metadata.messageSendAt = DateTime.now(); - String stateId = prepareState.sha2Hash.toString(); - States states = States(metadata: metadata, prepareState: prepareState); - // at this point it is safe inform the user about the process of sending the image.. for (final userId in metadata.userIds) { int? messageId = await twonlyDatabase.messagesDao.insertMessage( @@ -334,32 +331,33 @@ Future sendImage( } } + String stateId = prepareState.sha2Hash.toString(); + { - Box storage = await getMediaStorage(); - - String? mediaFilesJson = storage.get("mediaUploads"); - Map allMediaFiles = {}; - - if (mediaFilesJson != null) { - allMediaFiles = jsonDecode(mediaFilesJson); - } - - allMediaFiles[stateId] = jsonEncode(states.toJson()); - storage.put("mediaUploads", jsonEncode(allMediaFiles)); + Map allMediaFiles = await getStoredMediaUploads(); + allMediaFiles[stateId] = jsonEncode( + States(metadata: metadata, prepareState: prepareState).toJson(), + ); + (await getMediaStorage()).put("mediaUploads", jsonEncode(allMediaFiles)); } uploadMediaState(stateId, prepareState, metadata); } -Future retransmitMediaFiles() async { +Future> getStoredMediaUploads() async { Box storage = await getMediaStorage(); String? mediaFilesJson = storage.get("mediaUploads"); + Map allMediaFiles = {}; - if (mediaFilesJson == null) { - return; + if (mediaFilesJson != null) { + allMediaFiles = jsonDecode(mediaFilesJson); } + return allMediaFiles; +} - Map allMediaFiles = jsonDecode(mediaFilesJson); +Future retransmitMediaFiles() async { + Map allMediaFiles = await getStoredMediaUploads(); + if (allMediaFiles.isEmpty) return; bool allSuccess = true; @@ -400,14 +398,10 @@ Future uploadMediaState( } { - Box storage = await getMediaStorage(); - - String? mediaFilesJson = storage.get("mediaUploads"); - - if (mediaFilesJson != null) { - Map allMediaFiles = jsonDecode(mediaFilesJson); + Map allMediaFiles = await getStoredMediaUploads(); + if (allMediaFiles.isNotEmpty) { allMediaFiles.remove(stateId); - storage.put("mediaUploads", jsonEncode(allMediaFiles)); + (await getMediaStorage()).put("mediaUploads", jsonEncode(allMediaFiles)); } }