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