package com.fireworksdk.bridge.reactnative.pages import android.app.Activity import android.content.Context import android.content.Intent import android.os.Bundle import com.facebook.react.ReactActivity import com.facebook.react.ReactActivityDelegate import com.fireworksdk.bridge.reactnative.FWReactNativeSDK.updateBaseContextLocale import com.fireworksdk.bridge.utils.FWBundleUtils class FWContainerActivity : ReactActivity() { override fun attachBaseContext(newBase: Context) { super.attachBaseContext(updateBaseContextLocale(newBase)) } override fun getMainComponentName(): String { return "" } override fun createReactActivityDelegate(): ReactActivityDelegate { return FWContainerActivityDelegate(this, mainComponentName) } // https://cmichel.io/how-to-set-initial-props-in-react-native class FWContainerActivityDelegate( private val mActivity: ReactActivity, mainComponentName: String? ) : ReactActivityDelegate(mActivity, mainComponentName) { private var mInitialProps: Bundle? = null override fun onCreate(savedInstanceState: Bundle?) { val params = mActivity.intent.getSerializableExtra(KEY_PARAMS) as HashMap? mInitialProps = FWBundleUtils.mapToBundle(params) super.onCreate(savedInstanceState) } override fun getMainComponentName(): String? { val bundle = mActivity.intent.extras return bundle?.getString(KEY_COMPONENT_NAME) } override fun getLaunchOptions(): Bundle? { return mInitialProps } } companion object { private const val KEY_PARAMS = "params" private const val KEY_COMPONENT_NAME = "componentName" @Suppress("UNCHECKED_CAST") fun createIntent(activity: Activity, params: HashMap?): Intent { val intent = Intent(activity, FWContainerActivity::class.java) intent.putExtra(KEY_COMPONENT_NAME, params?.get("appKey") as String?) intent.putExtra(KEY_PARAMS, params?.get("appProps") as HashMap) intent.flags = Intent.FLAG_ACTIVITY_NO_ANIMATION activity.overridePendingTransition(0, 0) return intent } } }