package com.airbnb.lottie.samples

import androidx.test.espresso.IdlingRegistry
import androidx.test.espresso.IdlingResource
import com.airbnb.lottie.LottieAnimationView

class LottieIdlingResource(animationView: LottieAnimationView? = null, private val name: String = "Lottie") : IdlingResource {

    init {
        animationView?.addLottieOnCompositionLoadedListener {
            isIdle = true
            callback?.onTransitionToIdle()
            IdlingRegistry.getInstance().unregister(this)
        }
    }

    private var callback: IdlingResource.ResourceCallback? = null
    private var isIdle = false

    override fun getName() = name

    override fun isIdleNow() = isIdle

    override fun registerIdleTransitionCallback(callback: IdlingResource.ResourceCallback) {
        this.callback = callback
        if (isIdle) callback.onTransitionToIdle()
    }
}