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