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