mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-24 16:57:50 +00:00
Remove some unnecessary intermediate blob creation.
This commit is contained in:
parent
276e867f9a
commit
b572fce658
@ -70,6 +70,7 @@ import android.widget.LinearLayout;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
import android.widget.Toast;
|
import android.widget.Toast;
|
||||||
|
|
||||||
|
import com.annimon.stream.Stream;
|
||||||
import com.google.android.gms.location.places.ui.PlacePicker;
|
import com.google.android.gms.location.places.ui.PlacePicker;
|
||||||
|
|
||||||
import org.greenrobot.eventbus.EventBus;
|
import org.greenrobot.eventbus.EventBus;
|
||||||
@ -581,7 +582,19 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), Collections.emptyList(), expiresIn, subscriptionId, initiating);
|
final Context context = ConversationActivity.this.getApplicationContext();
|
||||||
|
|
||||||
|
sendMediaMessage(transport.isSms(), message, slideDeck, Collections.emptyList(), Collections.emptyList(), expiresIn, subscriptionId, initiating).addListener(new AssertedSuccessListener<Void>() {
|
||||||
|
@Override
|
||||||
|
public void onSuccess(Void result) {
|
||||||
|
AsyncTask.THREAD_POOL_EXECUTOR.execute(() -> {
|
||||||
|
Stream.of(slideDeck.getSlides())
|
||||||
|
.map(Slide::getUri)
|
||||||
|
.withoutNulls()
|
||||||
|
.forEach(uri -> PersistentBlobProvider.getInstance(context).delete(context, uri));
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -2054,7 +2067,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
|||||||
throws InvalidMessageException
|
throws InvalidMessageException
|
||||||
{
|
{
|
||||||
Log.i(TAG, "Sending media message...");
|
Log.i(TAG, "Sending media message...");
|
||||||
sendMediaMessage(forceSms, getMessage(), attachmentManager.buildSlideDeck(), Collections.emptyList(), linkPreviewViewModel.getPersistedLinkPreviews(this), expiresIn, subscriptionId, initiating);
|
sendMediaMessage(forceSms, getMessage(), attachmentManager.buildSlideDeck(), Collections.emptyList(), linkPreviewViewModel.getActiveLinkPreviews(), expiresIn, subscriptionId, initiating);
|
||||||
}
|
}
|
||||||
|
|
||||||
private ListenableFuture<Void> sendMediaMessage(final boolean forceSms,
|
private ListenableFuture<Void> sendMediaMessage(final boolean forceSms,
|
||||||
|
@ -51,37 +51,14 @@ public class LinkPreviewViewModel extends ViewModel {
|
|||||||
return linkPreviewState.getValue() != null && linkPreviewState.getValue().getLinkPreview().isPresent();
|
return linkPreviewState.getValue() != null && linkPreviewState.getValue().getLinkPreview().isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public @NonNull List<LinkPreview> getPersistedLinkPreviews(@NonNull Context context) {
|
public @NonNull List<LinkPreview> getActiveLinkPreviews() {
|
||||||
final LinkPreviewState state = linkPreviewState.getValue();
|
final LinkPreviewState state = linkPreviewState.getValue();
|
||||||
|
|
||||||
if (state == null || !state.getLinkPreview().isPresent()) {
|
if (state == null || !state.getLinkPreview().isPresent()) {
|
||||||
return Collections.emptyList();
|
return Collections.emptyList();
|
||||||
}
|
} else {
|
||||||
|
|
||||||
if (!state.getLinkPreview().get().getThumbnail().isPresent() || state.getLinkPreview().get().getThumbnail().get().getDataUri() == null) {
|
|
||||||
return Collections.singletonList(state.getLinkPreview().get());
|
return Collections.singletonList(state.getLinkPreview().get());
|
||||||
}
|
}
|
||||||
|
|
||||||
LinkPreview originalPreview = state.getLinkPreview().get();
|
|
||||||
Attachment originalAttachment = originalPreview.getThumbnail().get();
|
|
||||||
Uri memoryUri = originalAttachment.getDataUri();
|
|
||||||
byte[] imageBlob = MemoryBlobProvider.getInstance().getBlob(memoryUri);
|
|
||||||
Uri diskUri = PersistentBlobProvider.getInstance(context).create(context, imageBlob, MediaUtil.IMAGE_JPEG, null);
|
|
||||||
Attachment newAttachment = new UriAttachment(diskUri,
|
|
||||||
diskUri,
|
|
||||||
originalAttachment.getContentType(),
|
|
||||||
originalAttachment.getTransferState(),
|
|
||||||
originalAttachment.getSize(),
|
|
||||||
originalAttachment.getWidth(),
|
|
||||||
originalAttachment.getHeight(),
|
|
||||||
originalAttachment.getFileName(),
|
|
||||||
originalAttachment.getFastPreflightId(),
|
|
||||||
originalAttachment.isVoiceNote(),
|
|
||||||
originalAttachment.isQuote(),
|
|
||||||
originalAttachment.getCaption());
|
|
||||||
|
|
||||||
MemoryBlobProvider.getInstance().delete(memoryUri);
|
|
||||||
|
|
||||||
return Collections.singletonList(new LinkPreview(originalPreview.getUrl(), originalPreview.getTitle(), Optional.of(newAttachment)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onTextChanged(@NonNull Context context, @NonNull String text, int cursorStart, int cursorEnd) {
|
public void onTextChanged(@NonNull Context context, @NonNull String text, int cursorStart, int cursorEnd) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user