|
1 | 1 | package com.sample
|
2 | 2 |
|
3 | 3 | import android.os.Bundle
|
4 |
| -import android.view.KeyEvent |
| 4 | +import android.view.LayoutInflater |
5 | 5 | import androidx.appcompat.app.AppCompatActivity
|
6 |
| -import com.facebook.react.PackageList |
7 |
| -import com.facebook.react.ReactInstanceManager |
8 |
| -import com.facebook.react.ReactRootView |
9 |
| -import com.facebook.react.TestAppPackageList |
10 |
| -import com.facebook.react.common.LifecycleState |
11 |
| -import com.facebook.react.modules.core.DefaultHardwareBackBtnHandler |
12 |
| -import com.facebook.soloader.SoLoader |
| 6 | +import androidx.recyclerview.widget.DividerItemDecoration |
| 7 | +import androidx.recyclerview.widget.LinearLayoutManager |
| 8 | +import androidx.recyclerview.widget.RecyclerView |
| 9 | +import com.sample.manifest.ManifestProvider |
| 10 | +import dagger.android.AndroidInjection |
| 11 | +import javax.inject.Inject |
13 | 12 |
|
14 |
| -class MainActivity : AppCompatActivity(), DefaultHardwareBackBtnHandler { |
15 |
| - private lateinit var reactRootView: ReactRootView |
16 |
| - private lateinit var reactInstanceManager: ReactInstanceManager |
| 13 | +class MainActivity : AppCompatActivity() { |
17 | 14 |
|
18 |
| - override fun onCreate(savedInstanceState: Bundle?) { |
19 |
| - super.onCreate(savedInstanceState) |
20 |
| - |
21 |
| - SoLoader.init(this, false) |
22 |
| - |
23 |
| - reactRootView = ReactRootView(this) |
24 |
| - setContentView(reactRootView) |
25 |
| - |
26 |
| - reactInstanceManager = ReactInstanceManager.builder() |
27 |
| - .setInitialLifecycleState(LifecycleState.BEFORE_RESUME) |
28 |
| - .addPackages(PackageList(application).packages) |
29 |
| - .addPackages(TestAppPackageList().packages) |
30 |
| - .setUseDeveloperSupport(BuildConfig.DEBUG) |
31 |
| - .setCurrentActivity(this) |
32 |
| - .setBundleAssetName("index.android.bundle") |
33 |
| - .setJSMainModulePath("index") |
34 |
| - .setApplication(application) |
35 |
| - .build() |
| 15 | + @Inject |
| 16 | + lateinit var manifestProvider: ManifestProvider |
36 | 17 |
|
37 |
| - reactRootView.startReactApplication( |
38 |
| - reactInstanceManager, "TestComponent", null |
39 |
| - ) |
| 18 | + private val listener = { component: ComponentViewModel -> |
| 19 | + startActivity(ComponentActivity.newIntent(this, component.name)) |
40 | 20 | }
|
41 | 21 |
|
42 |
| - override fun invokeDefaultOnBackPressed() { |
43 |
| - onBackPressed() |
44 |
| - } |
| 22 | + override fun onCreate(savedInstanceState: Bundle?) { |
| 23 | + AndroidInjection.inject(this) |
45 | 24 |
|
46 |
| - override fun onBackPressed() { |
47 |
| - reactInstanceManager.onBackPressed() |
48 |
| - } |
| 25 | + super.onCreate(savedInstanceState) |
| 26 | + setContentView(R.layout.activity_main) |
49 | 27 |
|
50 |
| - override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { |
51 |
| - if (keyCode == KeyEvent.KEYCODE_MENU) { |
52 |
| - reactInstanceManager.showDevOptionsDialog() |
53 |
| - return true |
| 28 | + val manifest = manifestProvider.manifest |
| 29 | + ?: throw IllegalStateException("app.json is not provided or TestApp is misconfigured") |
| 30 | + val components = manifest.components.map { |
| 31 | + ComponentViewModel(it.key, it.value.displayName) |
54 | 32 | }
|
55 |
| - return super.onKeyUp(keyCode, event) |
56 |
| - } |
57 |
| - |
58 |
| - |
59 |
| - override fun onPause() { |
60 |
| - super.onPause() |
61 |
| - |
62 |
| - reactInstanceManager.onHostPause(this) |
63 |
| - } |
64 |
| - |
65 |
| - override fun onResume() { |
66 |
| - super.onResume() |
67 | 33 |
|
68 |
| - reactInstanceManager.onHostResume(this, this) |
69 |
| - } |
| 34 | + supportActionBar?.title = manifest.displayName |
70 | 35 |
|
71 |
| - override fun onDestroy() { |
72 |
| - super.onDestroy() |
| 36 | + findViewById<RecyclerView>(R.id.recyclerview).apply { |
| 37 | + layoutManager = LinearLayoutManager(context) |
| 38 | + adapter = ComponentListAdapter(LayoutInflater.from(context), components, listener) |
73 | 39 |
|
74 |
| - reactInstanceManager.onHostDestroy(this) |
75 |
| - reactRootView.unmountReactApplication() |
| 40 | + addItemDecoration(DividerItemDecoration(context, DividerItemDecoration.VERTICAL)) |
| 41 | + } |
76 | 42 | }
|
77 | 43 | }
|
0 commit comments