From 1bdfb5f3829157eeca54be86a9bee9f4b6fe8d24 Mon Sep 17 00:00:00 2001 From: Jake McGinty Date: Fri, 10 Jul 2015 12:13:31 -0700 Subject: [PATCH] fix MMS part transfer indicator make it less forever Fixes #3546 Closes #3603 // FREEBIE --- src/org/thoughtcrime/securesms/ConversationItem.java | 2 +- .../securesms/components/ThumbnailView.java | 1 + src/org/thoughtcrime/securesms/jobs/MmsSendJob.java | 1 + .../thoughtcrime/securesms/jobs/PushMediaSendJob.java | 10 +--------- src/org/thoughtcrime/securesms/jobs/SendJob.java | 9 +++++++++ 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/org/thoughtcrime/securesms/ConversationItem.java b/src/org/thoughtcrime/securesms/ConversationItem.java index 300911ce47..17651841ae 100644 --- a/src/org/thoughtcrime/securesms/ConversationItem.java +++ b/src/org/thoughtcrime/securesms/ConversationItem.java @@ -263,7 +263,7 @@ public class ConversationItem extends LinearLayout { mediaThumbnail.setImageResource(masterSecret, messageRecord.getId(), messageRecord.getDateReceived(), ((MediaMmsMessageRecord)messageRecord).getSlideDeckFuture()); - mediaThumbnail.setShowProgress(!messageRecord.isFailed()); + mediaThumbnail.setShowProgress(!messageRecord.isFailed() && messageRecord.isPending()); bodyText.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT)); } else { mediaThumbnail.setVisibility(View.GONE); diff --git a/src/org/thoughtcrime/securesms/components/ThumbnailView.java b/src/org/thoughtcrime/securesms/components/ThumbnailView.java index 04eee0264e..0c8524d52d 100644 --- a/src/org/thoughtcrime/securesms/components/ThumbnailView.java +++ b/src/org/thoughtcrime/securesms/components/ThumbnailView.java @@ -98,6 +98,7 @@ public class ThumbnailView extends FrameLayout { String slideId = id + "::" + timestamp; if (!slideId.equals(this.slideId)) { + progress.setVisibility(GONE); image.setImageDrawable(null); this.slide = null; this.slideId = slideId; diff --git a/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java b/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java index ff9e962eb0..c119237744 100644 --- a/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/MmsSendJob.java @@ -73,6 +73,7 @@ public class MmsSendJob extends SendJob { final MmsSendResult result = getSendResult(sendConf, message); database.markAsSent(messageId, result.getMessageId(), result.getResponseStatus()); + markPartsUploaded(messageId, message.getBody()); } catch (UndeliverableMessageException | IOException e) { Log.w(TAG, e); database.markAsSentFailed(messageId); diff --git a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java index 1fbe8d51a1..6f7c9ec8d9 100644 --- a/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/PushMediaSendJob.java @@ -71,7 +71,7 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { database.markAsPush(messageId); database.markAsSecure(messageId); database.markAsSent(messageId, "push".getBytes(), 0); - updatePartsStatus(message.getBody()); + markPartsUploaded(messageId, message.getBody()); } catch (InsecureFallbackApprovalException ifae) { Log.w(TAG, ifae); database.markAsPendingInsecureSmsFallback(messageId); @@ -100,14 +100,6 @@ public class PushMediaSendJob extends PushSendJob implements InjectableType { notifyMediaMessageDeliveryFailed(context, messageId); } - private void updatePartsStatus(PduBody body) { - if (body == null) return; - PartDatabase database = DatabaseFactory.getPartDatabase(context); - for (int i = 0; i < body.getPartsNum(); i++) { - database.markPartUploaded(messageId, body.getPart(i)); - } - } - private void deliver(MasterSecret masterSecret, SendReq message) throws RetryLaterException, InsecureFallbackApprovalException, UntrustedIdentityException, UndeliverableMessageException diff --git a/src/org/thoughtcrime/securesms/jobs/SendJob.java b/src/org/thoughtcrime/securesms/jobs/SendJob.java index c4cca4e532..98c3941e5d 100644 --- a/src/org/thoughtcrime/securesms/jobs/SendJob.java +++ b/src/org/thoughtcrime/securesms/jobs/SendJob.java @@ -7,6 +7,7 @@ import org.thoughtcrime.securesms.BuildConfig; import org.thoughtcrime.securesms.TextSecureExpiredException; import org.thoughtcrime.securesms.crypto.MasterSecret; import org.thoughtcrime.securesms.database.DatabaseFactory; +import org.thoughtcrime.securesms.database.PartDatabase; import org.thoughtcrime.securesms.mms.MediaConstraints; import org.thoughtcrime.securesms.transport.UndeliverableMessageException; import org.thoughtcrime.securesms.util.MediaUtil; @@ -83,6 +84,14 @@ public abstract class SendJob extends MasterSecretJob { return part; } + protected void markPartsUploaded(long messageId, PduBody body) { + if (body == null) return; + PartDatabase database = DatabaseFactory.getPartDatabase(context); + for (int i = 0; i < body.getPartsNum(); i++) { + database.markPartUploaded(messageId, body.getPart(i)); + } + } + private byte[] getResizedPartData(MasterSecret masterSecret, MediaConstraints constraints, PduPart part) throws IOException, MmsException