kopia lustrzana https://github.com/ryukoposting/Signal-Android
Prevent shared element animation when we're not on the initial media.
rodzic
6fbfb87bd6
commit
a3a29d5cb2
|
@ -25,6 +25,9 @@ class MediaPreviewV2Activity : PassphraseRequiredActivity(), VoiceNoteMediaContr
|
||||||
|
|
||||||
private val viewModel: MediaPreviewV2ViewModel by viewModels()
|
private val viewModel: MediaPreviewV2ViewModel by viewModels()
|
||||||
private val lifecycleDisposable = LifecycleDisposable()
|
private val lifecycleDisposable = LifecycleDisposable()
|
||||||
|
private val args by lazy {
|
||||||
|
MediaIntentFactory.requireArguments(intent.extras!!)
|
||||||
|
}
|
||||||
|
|
||||||
private lateinit var transitionImageView: ImageView
|
private lateinit var transitionImageView: ImageView
|
||||||
|
|
||||||
|
@ -34,8 +37,6 @@ class MediaPreviewV2Activity : PassphraseRequiredActivity(), VoiceNoteMediaContr
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
override fun onCreate(savedInstanceState: Bundle?, ready: Boolean) {
|
||||||
val args = MediaIntentFactory.requireArguments(intent.extras!!)
|
|
||||||
|
|
||||||
if (MediaPreviewCache.drawable != null) {
|
if (MediaPreviewCache.drawable != null) {
|
||||||
val originalCorners = ShapeAppearanceModel.Builder()
|
val originalCorners = ShapeAppearanceModel.Builder()
|
||||||
.setTopLeftCornerSize(args.sharedElementArgs.topLeft)
|
.setTopLeftCornerSize(args.sharedElementArgs.topLeft)
|
||||||
|
@ -122,6 +123,14 @@ class MediaPreviewV2Activity : PassphraseRequiredActivity(), VoiceNoteMediaContr
|
||||||
MediaPreviewCache.drawable = null
|
MediaPreviewCache.drawable = null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun finishAfterTransition() {
|
||||||
|
if (viewModel.shouldFinishAfterTransition(args.initialMediaUri)) {
|
||||||
|
super.finishAfterTransition()
|
||||||
|
} else {
|
||||||
|
super.finish()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val FRAGMENT_TAG = "media_preview_fragment_v2"
|
private const val FRAGMENT_TAG = "media_preview_fragment_v2"
|
||||||
const val SHARED_ELEMENT_TRANSITION_NAME = "thumb"
|
const val SHARED_ELEMENT_TRANSITION_NAME = "thumb"
|
||||||
|
|
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.mediapreview
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
|
import android.net.Uri
|
||||||
import androidx.lifecycle.ViewModel
|
import androidx.lifecycle.ViewModel
|
||||||
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
|
||||||
import io.reactivex.rxjava3.core.Completable
|
import io.reactivex.rxjava3.core.Completable
|
||||||
|
@ -31,6 +32,10 @@ class MediaPreviewV2ViewModel : ViewModel() {
|
||||||
store.update { it.copy(isInSharedAnimation = isInSharedAnimation) }
|
store.update { it.copy(isInSharedAnimation = isInSharedAnimation) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun shouldFinishAfterTransition(initialMediaUri: Uri): Boolean {
|
||||||
|
return currentPosition in store.state.mediaRecords.indices && store.state.mediaRecords[currentPosition].toMedia()?.uri == initialMediaUri
|
||||||
|
}
|
||||||
|
|
||||||
fun fetchAttachments(context: Context, startingAttachmentId: AttachmentId, threadId: Long, sorting: MediaTable.Sorting, forceRefresh: Boolean = false) {
|
fun fetchAttachments(context: Context, startingAttachmentId: AttachmentId, threadId: Long, sorting: MediaTable.Sorting, forceRefresh: Boolean = false) {
|
||||||
if (store.state.loadState == MediaPreviewV2State.LoadState.INIT || forceRefresh) {
|
if (store.state.loadState == MediaPreviewV2State.LoadState.INIT || forceRefresh) {
|
||||||
disposables += store.update(repository.getAttachments(context, startingAttachmentId, threadId, sorting)) { result: MediaPreviewRepository.Result, oldState: MediaPreviewV2State ->
|
disposables += store.update(repository.getAttachments(context, startingAttachmentId, threadId, sorting)) { result: MediaPreviewRepository.Result, oldState: MediaPreviewV2State ->
|
||||||
|
|
Ładowanie…
Reference in New Issue