mirror of https://github.com/tooot-app/app
72 lines
3.3 KiB
Java
72 lines
3.3 KiB
Java
/**
|
|
* Copyright (c) Facebook, Inc. and its 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.tooot;
|
|
|
|
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());
|
|
}
|
|
}
|
|
}
|
|
} |