unjankify incoming media sharing

Closes #4374
Fixes #3989
// FREEBIE
This commit is contained in:
Jake McGinty
2015-10-15 14:40:45 -07:00
committed by Moxie Marlinspike
parent 60ab71099f
commit 59f2446a2b
7 changed files with 216 additions and 109 deletions

View File

@@ -16,7 +16,6 @@
*/
package org.thoughtcrime.securesms;
import android.annotation.TargetApi;
import android.content.ActivityNotFoundException;
import android.content.BroadcastReceiver;
import android.content.Context;
@@ -98,7 +97,7 @@ import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
import org.thoughtcrime.securesms.mms.OutgoingSecureMediaMessage;
import org.thoughtcrime.securesms.mms.Slide;
import org.thoughtcrime.securesms.notifications.MessageNotifier;
import org.thoughtcrime.securesms.providers.CaptureProvider;
import org.thoughtcrime.securesms.providers.PersistentBlobProvider;
import org.thoughtcrime.securesms.recipients.Recipient;
import org.thoughtcrime.securesms.recipients.RecipientFactory;
import org.thoughtcrime.securesms.recipients.RecipientFormattingException;
@@ -201,7 +200,6 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
private DynamicTheme dynamicTheme = new DynamicTheme();
private DynamicLanguage dynamicLanguage = new DynamicLanguage();
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
protected void onPreCreate() {
dynamicTheme.onCreate(this);
@@ -311,13 +309,13 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
switch (reqCode) {
case PICK_IMAGE:
boolean isGif = MediaUtil.isGif(MediaUtil.getMimeType(this, data.getData()));
setMedia(data.getData(), isGif ? MediaType.GIF : MediaType.IMAGE, false);
setMedia(data.getData(), isGif ? MediaType.GIF : MediaType.IMAGE);
break;
case PICK_VIDEO:
setMedia(data.getData(), MediaType.VIDEO, false);
setMedia(data.getData(), MediaType.VIDEO);
break;
case PICK_AUDIO:
setMedia(data.getData(), MediaType.AUDIO, false);
setMedia(data.getData(), MediaType.AUDIO);
break;
case PICK_CONTACT_INFO:
addAttachmentContactInfo(data.getData());
@@ -331,7 +329,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
break;
case TAKE_PHOTO:
if (attachmentManager.getCaptureUri() != null) {
setMedia(attachmentManager.getCaptureUri(), MediaType.IMAGE, true);
setMedia(attachmentManager.getCaptureUri(), MediaType.IMAGE);
}
break;
}
@@ -717,9 +715,9 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (draftText != null) composeText.setText(draftText);
if (draftImage != null) setMedia(draftImage, MediaType.IMAGE, false);
else if (draftAudio != null) setMedia(draftAudio, MediaType.AUDIO, false);
else if (draftVideo != null) setMedia(draftVideo, MediaType.VIDEO, false);
if (draftImage != null) setMedia(draftImage, MediaType.IMAGE);
else if (draftAudio != null) setMedia(draftAudio, MediaType.AUDIO);
else if (draftVideo != null) setMedia(draftVideo, MediaType.VIDEO);
if (draftText == null && draftImage == null && draftAudio == null && draftVideo == null) {
initializeDraftFromDatabase();
@@ -753,11 +751,11 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
if (draft.getType().equals(Draft.TEXT)) {
composeText.setText(draft.getValue());
} else if (draft.getType().equals(Draft.IMAGE)) {
setMedia(Uri.parse(draft.getValue()), MediaType.IMAGE, false);
setMedia(Uri.parse(draft.getValue()), MediaType.IMAGE);
} else if (draft.getType().equals(Draft.AUDIO)) {
setMedia(Uri.parse(draft.getValue()), MediaType.AUDIO, false);
setMedia(Uri.parse(draft.getValue()), MediaType.AUDIO);
} else if (draft.getType().equals(Draft.VIDEO)) {
setMedia(Uri.parse(draft.getValue()), MediaType.VIDEO, false);
setMedia(Uri.parse(draft.getValue()), MediaType.VIDEO);
}
}
@@ -1012,8 +1010,8 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
}
}
private void setMedia(Uri uri, MediaType mediaType, boolean isCapture) {
attachmentManager.setMedia(masterSecret, uri, mediaType, getCurrentMediaConstraints(), isCapture);
private void setMedia(Uri uri, MediaType mediaType) {
attachmentManager.setMedia(masterSecret, uri, mediaType, getCurrentMediaConstraints());
}
private void addAttachmentContactInfo(Uri contactUri) {
@@ -1053,7 +1051,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
drafts.add(new Draft(Draft.TEXT, composeText.getText().toString()));
}
for (Slide slide : attachmentManager.getSlideDeck().getSlides()) {
for (Slide slide : attachmentManager.buildSlideDeck().getSlides()) {
if (slide.hasAudio()) drafts.add(new Draft(Draft.AUDIO, slide.getUri().toString()));
else if (slide.hasVideo()) drafts.add(new Draft(Draft.VIDEO, slide.getUri().toString()));
else if (slide.hasImage()) drafts.add(new Draft(Draft.IMAGE, slide.getUri().toString()));
@@ -1263,7 +1261,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
{
final Context context = getApplicationContext();
OutgoingMediaMessage outgoingMessage = new OutgoingMediaMessage(recipients,
attachmentManager.getSlideDeck(),
attachmentManager.buildSlideDeck(),
getMessage(),
System.currentTimeMillis(),
distributionType);
@@ -1336,7 +1334,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
@Override
public void onImageCapture(@NonNull final byte[] imageBytes) {
setMedia(CaptureProvider.getInstance(this).create(masterSecret, recipients, imageBytes), MediaType.IMAGE, true);
setMedia(PersistentBlobProvider.getInstance(this).create(masterSecret, recipients, imageBytes), MediaType.IMAGE);
quickAttachmentDrawer.hide(false);
}