Fix issue where images were not properly rendered for previews.

This commit is contained in:
Alex Hart
2022-10-06 13:45:17 -03:00
parent f687840891
commit 9ad55e2360
2 changed files with 35 additions and 6 deletions

View File

@@ -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)
}