6
6
*/
7
7
package com .helloworld ;
8
8
9
- import android .content .Context ;
10
- import com .facebook .flipper .android .AndroidFlipperClient ;
11
- import com .facebook .flipper .android .utils .FlipperUtils ;
12
- import com .facebook .flipper .core .FlipperClient ;
13
- import com .facebook .flipper .plugins .crashreporter .CrashReporterPlugin ;
14
- import com .facebook .flipper .plugins .databases .DatabasesFlipperPlugin ;
9
+ import com .facebook .flipper .plugins .fresco .FrescoFlipperPlugin ;
15
10
import com .facebook .flipper .plugins .inspector .DescriptorMapping ;
16
11
import com .facebook .flipper .plugins .inspector .InspectorFlipperPlugin ;
17
12
import com .facebook .flipper .plugins .network .FlipperOkhttpInterceptor ;
18
13
import com .facebook .flipper .plugins .network .NetworkFlipperPlugin ;
19
14
import com .facebook .flipper .plugins .react .ReactFlipperPlugin ;
20
15
import com .facebook .flipper .plugins .sharedpreferences .SharedPreferencesFlipperPlugin ;
16
+ import com .facebook .react .ReactInstanceManager ;
17
+ import com .facebook .react .bridge .ReactContext ;
21
18
import com .facebook .react .modules .network .NetworkingModule ;
22
19
import okhttp3 .OkHttpClient ;
23
20
24
21
public class ReactNativeFlipper {
25
- public static void initializeFlipper (Context context ) {
22
+ public static void initializeFlipper (Context context , ReactInstanceManager reactInstanceManager ) {
26
23
if (FlipperUtils .shouldEnableFlipper (context )) {
27
24
final FlipperClient client = AndroidFlipperClient .getInstance (context );
28
25
@@ -41,8 +38,29 @@ public void apply(OkHttpClient.Builder builder) {
41
38
}
42
39
});
43
40
client .addPlugin (networkFlipperPlugin );
44
-
45
41
client .start ();
42
+
43
+ // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
44
+ // Hence we run if after all native modules have been initialized
45
+ ReactContext reactContext = reactInstanceManager .getCurrentReactContext ();
46
+ if (reactContext == null ) {
47
+ reactInstanceManager .addReactInstanceEventListener (
48
+ new ReactInstanceManager .ReactInstanceEventListener () {
49
+ @ Override
50
+ public void onReactContextInitialized (ReactContext reactContext ) {
51
+ reactInstanceManager .removeReactInstanceEventListener (this );
52
+ reactContext .runOnNativeModulesQueueThread (
53
+ new Runnable () {
54
+ @ Override
55
+ public void run () {
56
+ client .addPlugin (new FrescoFlipperPlugin ());
57
+ }
58
+ });
59
+ }
60
+ });
61
+ } else {
62
+ client .addPlugin (new FrescoFlipperPlugin ());
63
+ }
46
64
}
47
65
}
48
66
}
0 commit comments