123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- /**
- * Copyright (c) Meta Platforms, Inc. and affiliates.
- *
- * <p>This source code is licensed under the MIT license found in the LICENSE file in the root
- * directory of this source tree.
- */
- package com.navmelon;
- import android.content.Context;
- import com.facebook.flipper.android.AndroidFlipperClient;
- import com.facebook.flipper.android.utils.FlipperUtils;
- import com.facebook.flipper.core.FlipperClient;
- import com.facebook.flipper.plugins.crashreporter.CrashReporterPlugin;
- import com.facebook.flipper.plugins.databases.DatabasesFlipperPlugin;
- import com.facebook.flipper.plugins.fresco.FrescoFlipperPlugin;
- import com.facebook.flipper.plugins.inspector.DescriptorMapping;
- import com.facebook.flipper.plugins.inspector.InspectorFlipperPlugin;
- import com.facebook.flipper.plugins.network.FlipperOkhttpInterceptor;
- import com.facebook.flipper.plugins.network.NetworkFlipperPlugin;
- import com.facebook.flipper.plugins.sharedpreferences.SharedPreferencesFlipperPlugin;
- import com.facebook.react.ReactInstanceEventListener;
- import com.facebook.react.ReactInstanceManager;
- import com.facebook.react.bridge.ReactContext;
- import com.facebook.react.modules.network.NetworkingModule;
- import okhttp3.OkHttpClient;
- /**
- * Class responsible of loading Flipper inside your React Native application. This is the debug
- * flavor of it. Here you can add your own plugins and customize the Flipper setup.
- */
- public class ReactNativeFlipper {
- public static void initializeFlipper(Context context, ReactInstanceManager reactInstanceManager) {
- if (FlipperUtils.shouldEnableFlipper(context)) {
- final FlipperClient client = AndroidFlipperClient.getInstance(context);
- client.addPlugin(new InspectorFlipperPlugin(context, DescriptorMapping.withDefaults()));
- client.addPlugin(new DatabasesFlipperPlugin(context));
- client.addPlugin(new SharedPreferencesFlipperPlugin(context));
- client.addPlugin(CrashReporterPlugin.getInstance());
- NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
- NetworkingModule.setCustomClientBuilder(
- new NetworkingModule.CustomClientBuilder() {
- @Override
- public void apply(OkHttpClient.Builder builder) {
- builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
- }
- });
- client.addPlugin(networkFlipperPlugin);
- client.start();
- // Fresco Plugin needs to ensure that ImagePipelineFactory is initialized
- // Hence we run if after all native modules have been initialized
- ReactContext reactContext = reactInstanceManager.getCurrentReactContext();
- if (reactContext == null) {
- reactInstanceManager.addReactInstanceEventListener(
- new ReactInstanceEventListener() {
- @Override
- public void onReactContextInitialized(ReactContext reactContext) {
- reactInstanceManager.removeReactInstanceEventListener(this);
- reactContext.runOnNativeModulesQueueThread(
- new Runnable() {
- @Override
- public void run() {
- client.addPlugin(new FrescoFlipperPlugin());
- }
- });
- }
- });
- } else {
- client.addPlugin(new FrescoFlipperPlugin());
- }
- }
- }
- }
|