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