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