1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.utils 3 4 import androidx.test.espresso.IdlingResource 5 import de.greenrobot.event.EventBus 6 import host.exp.exponent.experience.ReactNativeActivity.ExperienceDoneLoadingEvent 7 import host.exp.exponent.experience.BaseExperienceActivity 8 9 class LoadingScreenIdlingResource : IdlingResource { 10 private var resourceCallback: IdlingResource.ResourceCallback? = null 11 onEventnull12 fun onEvent(event: ExperienceDoneLoadingEvent?) { 13 resourceCallback?.onTransitionToIdle() 14 } 15 getNamenull16 override fun getName(): String { 17 return LoadingScreenIdlingResource::class.java.name 18 } 19 isIdleNownull20 override fun isIdleNow(): Boolean { 21 if (BaseExperienceActivity.visibleActivity == null) { 22 return false 23 } 24 val isIdle = !BaseExperienceActivity.visibleActivity!!.isLoading 25 if (isIdle) { 26 resourceCallback?.onTransitionToIdle() 27 } 28 return isIdle 29 } 30 registerIdleTransitionCallbacknull31 override fun registerIdleTransitionCallback(callback: IdlingResource.ResourceCallback) { 32 resourceCallback = callback 33 } 34 35 init { 36 EventBus.getDefault().register(this) 37 } 38 } 39