Always notifyIfReady for each boolean change.

fork-5.53.8
Alex Hart 2022-04-15 09:45:51 -03:00 zatwierdzone przez Greyson Parrelli
rodzic 98194c854a
commit a06528e5e1
1 zmienionych plików z 16 dodań i 10 usunięć

Wyświetl plik

@ -19,6 +19,7 @@ import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.mms.DecryptableStreamUriLoader
import org.thoughtcrime.securesms.mms.GlideApp
import org.thoughtcrime.securesms.stories.StoryTextPostModel
import kotlin.reflect.KProperty
class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
context: Context,
@ -40,10 +41,10 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
private val targetView: ImageView = findViewById(R.id.target_image)
private val targetBlurView: ImageView = findViewById(R.id.target_image_blur)
private var isSourceReady: Boolean = false
private var isSourceBlurReady: Boolean = false
private var isTargetReady: Boolean = false
private var isTargetBlurReady: Boolean = false
private var isSourceReady: Boolean by NotifyIfReadyDelegate(false)
private var isSourceBlurReady: Boolean by NotifyIfReadyDelegate(false)
private var isTargetReady: Boolean by NotifyIfReadyDelegate(false)
private var isTargetBlurReady: Boolean by NotifyIfReadyDelegate(false)
private var latestSource: Any? = null
private var latestTarget: Any? = null
@ -62,7 +63,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isSourceReady = true
notifyIfReady()
}
)
.placeholder(storyTextPostModel.getPlaceholder())
@ -86,7 +86,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isSourceReady = true
notifyIfReady()
}
)
.dontAnimate()
@ -102,7 +101,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isSourceBlurReady = true
notifyIfReady()
}
)
.dontAnimate()
@ -135,7 +133,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isTargetReady = true
notifyIfReady()
}
)
.dontAnimate()
@ -159,7 +156,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isTargetReady = true
notifyIfReady()
}
)
.dontAnimate()
@ -175,7 +171,6 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
.addListener(
OnReadyListener {
isTargetBlurReady = true
notifyIfReady()
}
)
.dontAnimate()
@ -241,6 +236,17 @@ class StoriesSharedElementCrossFaderView @JvmOverloads constructor(
callback?.onAnimationFinished()
}
private inner class NotifyIfReadyDelegate(var value: Boolean) {
operator fun getValue(storiesSharedElementCrossFaderView: StoriesSharedElementCrossFaderView, property: KProperty<*>): Boolean {
return value
}
operator fun setValue(storiesSharedElementCrossFaderView: StoriesSharedElementCrossFaderView, property: KProperty<*>, b: Boolean) {
value = b
notifyIfReady()
}
}
interface Callback {
fun onReadyToAnimate()
fun onAnimationStarted()