1 // Copyright 2015-present 650 Industries. All rights reserved. 2 package host.exp.exponent.kernel 3 4 import de.greenrobot.event.EventBus 5 import host.exp.exponent.ExpoUpdatesAppLoader 6 import host.exp.exponent.kernel.KernelConstants.AddedExperienceEventEvent 7 import host.exp.exponent.kernel.KernelConstants.ExperienceOptions 8 9 abstract class KernelInterface { handleErrornull10 abstract fun handleError(errorMessage: String) 11 abstract fun handleError(exception: Exception) 12 abstract fun openExperience(options: ExperienceOptions) 13 abstract fun reloadVisibleExperience(manifestUrl: String, forceCache: Boolean): Boolean 14 abstract fun getAppLoaderForManifestUrl(manifestUrl: String?): ExpoUpdatesAppLoader? 15 16 fun reloadVisibleExperience(manifestUrl: String): Boolean { 17 return reloadVisibleExperience(manifestUrl, false) 18 } 19 addEventForExperiencenull20 fun addEventForExperience(manifestUrl: String, event: KernelConstants.ExperienceEvent) { 21 if (!manifestUrlToEvents.containsKey(manifestUrl)) { 22 manifestUrlToEvents[manifestUrl] = 23 mutableSetOf() 24 } 25 manifestUrlToEvents[manifestUrl]!!.add(event) 26 EventBus.getDefault().post(AddedExperienceEventEvent(manifestUrl)) 27 } 28 consumeExperienceEventsnull29 fun consumeExperienceEvents(manifestUrl: String): Set<KernelConstants.ExperienceEvent> { 30 val result: Set<KernelConstants.ExperienceEvent> 31 if (manifestUrlToEvents.containsKey(manifestUrl)) { 32 result = manifestUrlToEvents[manifestUrl]!! 33 manifestUrlToEvents.remove(manifestUrl) 34 } else { 35 result = mutableSetOf() 36 } 37 return result 38 } 39 40 companion object { 41 private val manifestUrlToEvents = mutableMapOf<String, MutableSet<KernelConstants.ExperienceEvent>>() 42 } 43 } 44