fix queuing of pending parts that had data already

fixes #4061
Closes #4073
// FREEBIE
pull/1/head
Jake McGinty 9 years ago committed by Moxie Marlinspike
parent ed1d411bde
commit 0e06e2de97

@ -66,7 +66,7 @@ public class DatabaseUpgradeActivity extends BaseActivity {
public static final int PUSH_DECRYPT_SERIAL_ID_VERSION = 131;
public static final int MIGRATE_SESSION_PLAINTEXT = 136;
public static final int CONTACTS_ACCOUNT_VERSION = 136;
public static final int MEDIA_DOWNLOAD_CONTROLS_VERSION = 149;
public static final int MEDIA_DOWNLOAD_CONTROLS_VERSION = 151;
private static final SortedSet<Integer> UPGRADE_VERSIONS = new TreeSet<Integer>() {{
add(NO_MORE_KEY_EXCHANGE_PREFIX_VERSION);
@ -233,8 +233,8 @@ public class DatabaseUpgradeActivity extends BaseActivity {
final Reader reader = mmsDb.readerFor(masterSecret, mmsDb.getMessage(part.getMmsId()));
final MessageRecord record = reader.getNext();
if (part.getContentLocation() == null) {
Log.w(TAG, "corrected a pending self-sent media part " + part.getPartId() + ".");
if (part.getDataUri() != null) {
Log.w(TAG, "corrected a pending media part " + part.getPartId() + "that already had data.");
partDb.setTransferState(part.getMmsId(), part.getPartId(), PartDatabase.TRANSFER_PROGRESS_DONE);
} else if (record != null && !record.isOutgoing() && record.isPush()) {
Log.w(TAG, "queuing new attachment download job for incoming push part " + part.getPartId() + ".");

@ -226,7 +226,7 @@ public class ThumbnailView extends FrameLayout {
builder = buildPlaceholderGlideRequest(slide);
}
if (slide.isInProgress() && !hideControls) {
if (slide.getTransferProgress() != PartDatabase.TRANSFER_PROGRESS_DONE && !hideControls) {
return builder;
} else {
return builder.error(R.drawable.ic_missing_thumbnail_picture);
@ -331,9 +331,9 @@ public class ThumbnailView extends FrameLayout {
private class ThumbnailClickDispatcher implements View.OnClickListener {
@Override
public void onClick(View view) {
if (thumbnailClickListener != null &&
slide != null &&
slide.getTransferProgress() == PartDatabase.TRANSFER_PROGRESS_DONE)
if (thumbnailClickListener != null &&
slide != null &&
slide.getPart().getDataUri() != null)
{
thumbnailClickListener.onClick(view, slide);
}

@ -298,6 +298,11 @@ public class PartDatabase extends Database {
if (!cursor.isNull(sizeColumn))
part.setDataSize(cursor.getLong(cursor.getColumnIndexOrThrow(SIZE)));
int dataColumn = cursor.getColumnIndexOrThrow(DATA);
if (!cursor.isNull(dataColumn))
part.setDataUri(PartAuthority.getPartUri(part.getPartId()));
}
private ContentValues getContentValuesForPart(PduPart part) throws MmsException {
@ -440,8 +445,6 @@ public class PartDatabase extends Database {
getPartValues(part, cursor);
part.setDataUri(PartAuthority.getPartUri(part.getPartId()));
return part;
}

@ -71,6 +71,10 @@ public class AttachmentDownloadJob extends MasterSecretJob implements Injectable
Log.w(TAG, "part no longer exists.");
return;
}
if (part.getDataUri() != null) {
Log.w(TAG, "part was already downloaded.");
return;
}
Log.w(TAG, "Downloading push part " + partId);

@ -87,6 +87,7 @@ public class PushGroupSendJob extends PushSendJob implements InjectableType {
database.markAsPush(messageId);
database.markAsSecure(messageId);
database.markAsSent(messageId, "push".getBytes(), 0);
markPartsUploaded(messageId, message.getBody());
} catch (InvalidNumberException | RecipientFormattingException | UndeliverableMessageException e) {
Log.w(TAG, e);
database.markAsSentFailed(messageId);

@ -55,7 +55,7 @@ public class ImageSlide extends Slide {
@Override
public @DrawableRes int getPlaceholderRes(Theme theme) {
return R.drawable.ic_missing_thumbnail_picture;
return 0;
}
@Override

Loading…
Cancel
Save