package expo.modules.devlauncher.react import android.content.Context import com.facebook.react.common.SurfaceDelegateFactory import com.facebook.react.devsupport.DevSupportManagerFactory import com.facebook.react.devsupport.ReactInstanceDevHelper import com.facebook.react.devsupport.ReleaseDevSupportManager import com.facebook.react.devsupport.interfaces.DevBundleDownloadListener import com.facebook.react.devsupport.interfaces.DevLoadingViewManager import com.facebook.react.devsupport.interfaces.DevSupportManager import com.facebook.react.devsupport.interfaces.PausedInDebuggerOverlayManager import com.facebook.react.devsupport.interfaces.RedBoxHandler import com.facebook.react.packagerconnection.RequestHandler import expo.modules.devlauncher.DevLauncherController import expo.modules.devmenu.websockets.DevMenuCommandHandlersProvider class DevLauncherDevSupportManagerFactory : DevSupportManagerFactory { override fun create( applicationContext: Context, reactInstanceManagerHelper: ReactInstanceDevHelper, packagerPathForJSBundleName: String?, enableOnCreate: Boolean, redBoxHandler: RedBoxHandler?, devBundleDownloadListener: DevBundleDownloadListener?, minNumShakes: Int, customPackagerCommandHandlers: Map?, surfaceDelegateFactory: SurfaceDelegateFactory?, devLoadingViewManager: DevLoadingViewManager?, pausedInDebuggerOverlayManager: PausedInDebuggerOverlayManager? ): DevSupportManager { throw IllegalStateException("Legacy architecture is no longer supported.") } override fun create( applicationContext: Context, reactInstanceManagerHelper: ReactInstanceDevHelper, packagerPathForJSBundleName: String?, enableOnCreate: Boolean, redBoxHandler: RedBoxHandler?, devBundleDownloadListener: DevBundleDownloadListener?, minNumShakes: Int, customPackagerCommandHandlers: Map?, surfaceDelegateFactory: SurfaceDelegateFactory?, devLoadingViewManager: DevLoadingViewManager?, pausedInDebuggerOverlayManager: PausedInDebuggerOverlayManager?, useDevSupport: Boolean ): DevSupportManager { return if (!useDevSupport) { ReleaseDevSupportManager() } else { val expoCommandHandlers = DevMenuCommandHandlersProvider { DevLauncherController.nullableInstance?.appHost?.devSupportManager }.createCommandHandlers() val mergedCommandHandlers = (customPackagerCommandHandlers.orEmpty() + expoCommandHandlers).toMutableMap() DevLauncherBridgelessDevSupportManager( applicationContext, reactInstanceManagerHelper, packagerPathForJSBundleName, enableOnCreate, redBoxHandler, devBundleDownloadListener, minNumShakes, mergedCommandHandlers ) } } }