Fix issue where images were not properly rendered for previews.

fork-5.53.8
Alex Hart 2022-10-06 13:45:17 -03:00
rodzic f687840891
commit 9ad55e2360
2 zmienionych plików z 35 dodań i 6 usunięć

Wyświetl plik

@ -24,6 +24,7 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import app.cash.exhaustive.Exhaustive
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import org.signal.core.util.concurrent.SimpleTask
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.conversation.MessageSendType
@ -41,6 +42,7 @@ import org.thoughtcrime.securesms.mediasend.v2.stories.StoriesMultiselectForward
import org.thoughtcrime.securesms.mms.SentMediaQuality
import org.thoughtcrime.securesms.permissions.Permissions
import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.scribbles.ImageEditorFragment
import org.thoughtcrime.securesms.util.LifecycleDisposable
import org.thoughtcrime.securesms.util.MediaUtil
import org.thoughtcrime.securesms.util.SystemWindowInsetsSetter
@ -167,8 +169,31 @@ class MediaReviewFragment : Fragment(R.layout.v2_media_review_fragment) {
)
if (sharedViewModel.isStory()) {
val previews = sharedViewModel.state.value?.selectedMedia?.take(2)?.map { it.uri } ?: emptyList()
storiesLauncher.launch(StoriesMultiselectForwardActivity.Args(args, previews))
val snapshot = sharedViewModel.state.value
if (snapshot != null) {
sendButton.isEnabled = false
SimpleTask.run(viewLifecycleOwner.lifecycle, {
snapshot.selectedMedia.take(2).map { media ->
val editorData = snapshot.editorStateMap[media.uri]
if (MediaUtil.isImageType(media.mimeType) && editorData != null && editorData is ImageEditorFragment.Data) {
val model = editorData.readModel()
if (model != null) {
ImageEditorFragment.renderToSingleUseBlob(requireContext(), model)
} else {
media.uri
}
} else {
media.uri
}
}
}, {
sendButton.isEnabled = true
storiesLauncher.launch(StoriesMultiselectForwardActivity.Args(args, it))
})
} else {
storiesLauncher.launch(StoriesMultiselectForwardActivity.Args(args, emptyList()))
}
} else {
multiselectLauncher.launch(args)
}

Wyświetl plik

@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.scribbles;
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
@ -33,10 +34,10 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder;
import org.signal.core.util.FontUtil;
import org.signal.core.util.concurrent.SignalExecutors;
import org.signal.core.util.concurrent.SimpleTask;
import org.signal.core.util.logging.Log;
import org.signal.imageeditor.core.Bounds;
import org.signal.imageeditor.core.ColorableRenderer;
import org.signal.imageeditor.core.HiddenEditText;
import org.signal.imageeditor.core.ImageEditorView;
import org.signal.imageeditor.core.Renderer;
import org.signal.imageeditor.core.SelectableRenderer;
@ -48,7 +49,6 @@ import org.signal.imageeditor.core.renderers.MultiLineTextRenderer;
import org.signal.libsignal.protocol.util.Pair;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.animation.ResizeAnimation;
import org.thoughtcrime.securesms.components.emoji.EmojiUtil;
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.fonts.FontTypefaceProvider;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
@ -66,7 +66,6 @@ import org.thoughtcrime.securesms.util.StorageUtil;
import org.thoughtcrime.securesms.util.TextSecurePreferences;
import org.thoughtcrime.securesms.util.ThrottledDebouncer;
import org.thoughtcrime.securesms.util.ViewUtil;
import org.signal.core.util.concurrent.SimpleTask;
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
import java.io.ByteArrayOutputStream;
@ -791,8 +790,13 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu
@WorkerThread
public @NonNull Uri renderToSingleUseBlob() {
return renderToSingleUseBlob(requireContext(), imageEditorView.getModel());
}
@WorkerThread
public static @NonNull Uri renderToSingleUseBlob(@NonNull Context context, @NonNull EditorModel editorModel) {
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
Bitmap image = imageEditorView.getModel().render(requireContext(), new FontTypefaceProvider());
Bitmap image = editorModel.render(context, new FontTypefaceProvider());
image.compress(Bitmap.CompressFormat.JPEG, 80, outputStream);
image.recycle();