From fbabab0b70808e4cafde24707bb1c068fa0d3e6f Mon Sep 17 00:00:00 2001 From: Greyson Parrelli Date: Mon, 27 Sep 2021 09:38:36 -0400 Subject: [PATCH] Track down issues around empty preupload results. --- .../securesms/mediasend/MediaUploadRepository.java | 7 ++++--- .../securesms/mediasend/v2/MediaSelectionRepository.kt | 9 ++++++++- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaUploadRepository.java b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaUploadRepository.java index 791c4fe665..91a34d065a 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaUploadRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/MediaUploadRepository.java @@ -79,9 +79,10 @@ public class MediaUploadRepository { public void applyMediaUpdates(@NonNull Map oldToNew, @Nullable Recipient recipient) { executor.execute(() -> { for (Map.Entry entry : oldToNew.entrySet()) { - Media oldMedia = entry.getKey(); - Media newMedia = entry.getValue(); - boolean same = oldMedia.equals(newMedia) && hasSameTransformProperties(oldMedia, newMedia); + Media oldMedia = entry.getKey(); + Media newMedia = entry.getValue(); + boolean same = oldMedia.equals(newMedia) && hasSameTransformProperties(oldMedia, newMedia); + if (!same || !uploadResults.containsKey(newMedia)) { cancelUploadInternal(oldMedia); uploadMediaInternal(newMedia, recipient); diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt index 3b3c8d2685..5648bfe571 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediasend/v2/MediaSelectionRepository.kt @@ -77,6 +77,10 @@ class MediaSelectionRepository(context: Context) { throw IllegalStateException("Provided recipients to send to, but this is SMS!") } + if (selectedMedia.isEmpty()) { + throw IllegalStateException("No selected media!") + } + return Maybe.create { emitter -> val trimmedBody: String = if (isViewOnce) "" else message?.toString()?.trim() ?: "" val trimmedMentions: List = if (isViewOnce) emptyList() else mentions @@ -120,8 +124,11 @@ class MediaSelectionRepository(context: Context) { sendMessages(recipients, splitBody, uploadResults, trimmedMentions, isViewOnce) uploadRepository.deleteAbandonedAttachments() emitter.onComplete() - } else { + } else if (uploadResults.isNotEmpty()) { emitter.onSuccess(MediaSendActivityResult.forPreUpload(requireNotNull(singleRecipient).id, uploadResults, splitBody, transport, isViewOnce, trimmedMentions)) + } else { + Log.w(TAG, "Got empty upload results! isSms: $isSms, updatedMedia.size(): ${updatedMedia.size}, isViewOnce: $isViewOnce, target: $singleRecipientId") + emitter.onSuccess(MediaSendActivityResult.forTraditionalSend(requireNotNull(singleRecipient).id, updatedMedia, trimmedBody, transport, isViewOnce, trimmedMentions)) } } }