// Path: app/src/production/java/com/nilhcem/devoxxfr/core/dagger/AppComponent.java
// @Singleton
// @Component(modules = {AppModule.class, ApiModule.class, DataModule.class, DatabaseModule.class})
// public interface AppComponent extends AppGraph {
// 
//     /**
//      * An initializer that creates the production graph from an application.
//      */
//     final class Initializer {
// 
//         private Initializer() {
//             throw new UnsupportedOperationException();
//         }
// 
//         public static AppComponent init(DevoxxApp app) {
//             return DaggerAppComponent.builder()
//                     .appModule(new AppModule(app))
//                     .apiModule(new ApiModule())
//                     .dataModule(new DataModule())
//                     .databaseModule(new DatabaseModule())
//                     .build();
//         }
//     }
// }
// 
// Path: app/src/internal/java/com/nilhcem/devoxxfr/debug/lifecycle/ActivityProvider.java
// @Singleton
// public class ActivityProvider implements Application.ActivityLifecycleCallbacks {
// 
//     private Activity currentActivity;
// 
//     @Inject
//     public ActivityProvider() {
//     }
// 
//     public void init(Application app) {
//         app.registerActivityLifecycleCallbacks(this);
//     }
// 
//     public Activity getCurrentActivity() {
//         return currentActivity;
//     }
// 
//     @Override
//     public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//     }
// 
//     @Override
//     public void onActivityStarted(Activity activity) {
//     }
// 
//     @Override
//     public void onActivityResumed(Activity activity) {
//         this.currentActivity = activity;
//     }
// 
//     @Override
//     public void onActivityPaused(Activity activity) {
//         currentActivity = null;
//     }
// 
//     @Override
//     public void onActivityStopped(Activity activity) {
//     }
// 
//     @Override
//     public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
//     }
// 
//     @Override
//     public void onActivityDestroyed(Activity activity) {
//     }
// }
// 
// Path: app/src/internal/java/com/nilhcem/devoxxfr/debug/stetho/StethoInitializer.java
// public class StethoInitializer implements DumperPluginsProvider {
// 
//     private final Context context;
//     private final AppDumperPlugin appDumper;
//     private final ActivityProvider activityProvider;
// 
//     @Inject
//     public StethoInitializer(Application application, AppDumperPlugin appDumper, ActivityProvider activityProvider) {
//         this.context = application;
//         this.appDumper = appDumper;
//         this.activityProvider = activityProvider;
//     }
// 
//     public void init() {
//         Timber.plant(new StethoTree());
//         Stetho.initialize(
//                 Stetho.newInitializerBuilder(context)
//                         .enableDumpapp(this)
//                         .enableWebKitInspector(createWebkitModulesProvider())
//                         .build());
//     }
// 
//     @Override
//     public Iterable<DumperPlugin> get() {
//         List<DumperPlugin> plugins = new ArrayList<>();
//         for (DumperPlugin plugin : Stetho.defaultDumperPluginsProvider(context).get()) {
//             plugins.add(plugin);
//         }
//         plugins.add(appDumper);
//         return plugins;
//     }
// 
//     private InspectorModulesProvider createWebkitModulesProvider() {
//         return () -> new Stetho.DefaultInspectorModulesBuilder(context).runtimeRepl(
//                 new JsRuntimeReplFactoryBuilder(context)
//                         .addFunction("activity", new BaseFunction() {
//                             @Override
//                             public Object call(org.mozilla.javascript.Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
//                                 return activityProvider.getCurrentActivity();
//                             }
//                         }).build()
//         ).finish();
//     }
// }


import android.os.Build;
import com.frogermcs.androiddevmetrics.AndroidDevMetrics;
import com.nilhcem.devoxxfr.core.dagger.AppComponent;
import com.nilhcem.devoxxfr.debug.lifecycle.ActivityProvider;
import com.nilhcem.devoxxfr.debug.stetho.StethoInitializer;
import javax.inject.Inject;
import jp.wasabeef.takt.Takt;
package com.nilhcem.devoxxfr;





public class InternalDevoxxApp extends DevoxxApp {

    /**
     * Change it manually when you want to display the FPS.
     * Useful to test the frame rate.
     */
    private static final boolean DISPLAY_FPS = false;

    /**
     * Change it manually when you want to enable AndroidDevMetrics
     */
    private static final boolean ENABLE_ANDROID_DEV_METRICS = false;

// Path: app/src/production/java/com/nilhcem/devoxxfr/core/dagger/AppComponent.java
// @Singleton
// @Component(modules = {AppModule.class, ApiModule.class, DataModule.class, DatabaseModule.class})
// public interface AppComponent extends AppGraph {
// 
//     /**
//      * An initializer that creates the production graph from an application.
//      */
//     final class Initializer {
// 
//         private Initializer() {
//             throw new UnsupportedOperationException();
//         }
// 
//         public static AppComponent init(DevoxxApp app) {
//             return DaggerAppComponent.builder()
//                     .appModule(new AppModule(app))
//                     .apiModule(new ApiModule())
//                     .dataModule(new DataModule())
//                     .databaseModule(new DatabaseModule())
//                     .build();
//         }
//     }
// }
// 
// Path: app/src/internal/java/com/nilhcem/devoxxfr/debug/lifecycle/ActivityProvider.java
// @Singleton
// public class ActivityProvider implements Application.ActivityLifecycleCallbacks {
// 
//     private Activity currentActivity;
// 
//     @Inject
//     public ActivityProvider() {
//     }
// 
//     public void init(Application app) {
//         app.registerActivityLifecycleCallbacks(this);
//     }
// 
//     public Activity getCurrentActivity() {
//         return currentActivity;
//     }
// 
//     @Override
//     public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
//     }
// 
//     @Override
//     public void onActivityStarted(Activity activity) {
//     }
// 
//     @Override
//     public void onActivityResumed(Activity activity) {
//         this.currentActivity = activity;
//     }
// 
//     @Override
//     public void onActivityPaused(Activity activity) {
//         currentActivity = null;
//     }
// 
//     @Override
//     public void onActivityStopped(Activity activity) {
//     }
// 
//     @Override
//     public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
//     }
// 
//     @Override
//     public void onActivityDestroyed(Activity activity) {
//     }
// }
// 
// Path: app/src/internal/java/com/nilhcem/devoxxfr/debug/stetho/StethoInitializer.java
// public class StethoInitializer implements DumperPluginsProvider {
// 
//     private final Context context;
//     private final AppDumperPlugin appDumper;
//     private final ActivityProvider activityProvider;
// 
//     @Inject
//     public StethoInitializer(Application application, AppDumperPlugin appDumper, ActivityProvider activityProvider) {
//         this.context = application;
//         this.appDumper = appDumper;
//         this.activityProvider = activityProvider;
//     }
// 
//     public void init() {
//         Timber.plant(new StethoTree());
//         Stetho.initialize(
//                 Stetho.newInitializerBuilder(context)
//                         .enableDumpapp(this)
//                         .enableWebKitInspector(createWebkitModulesProvider())
//                         .build());
//     }
// 
//     @Override
//     public Iterable<DumperPlugin> get() {
//         List<DumperPlugin> plugins = new ArrayList<>();
//         for (DumperPlugin plugin : Stetho.defaultDumperPluginsProvider(context).get()) {
//             plugins.add(plugin);
//         }
//         plugins.add(appDumper);
//         return plugins;
//     }
// 
//     private InspectorModulesProvider createWebkitModulesProvider() {
//         return () -> new Stetho.DefaultInspectorModulesBuilder(context).runtimeRepl(
//                 new JsRuntimeReplFactoryBuilder(context)
//                         .addFunction("activity", new BaseFunction() {
//                             @Override
//                             public Object call(org.mozilla.javascript.Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
//                                 return activityProvider.getCurrentActivity();
//                             }
//                         }).build()
//         ).finish();
//     }
// }


// Path: app/src/internal/java/com/nilhcem/devoxxfr/InternalDevoxxApp.java
import android.os.Build;
import com.frogermcs.androiddevmetrics.AndroidDevMetrics;
import com.nilhcem.devoxxfr.core.dagger.AppComponent;
import com.nilhcem.devoxxfr.debug.lifecycle.ActivityProvider;
import com.nilhcem.devoxxfr.debug.stetho.StethoInitializer;
import javax.inject.Inject;
import jp.wasabeef.takt.Takt;

package com.nilhcem.devoxxfr;





public class InternalDevoxxApp extends DevoxxApp {

    /**
     * Change it manually when you want to display the FPS.
     * Useful to test the frame rate.
     */
    private static final boolean DISPLAY_FPS = false;

    /**
     * Change it manually when you want to enable AndroidDevMetrics
     */
    private static final boolean ENABLE_ANDROID_DEV_METRICS = false;

    @Inject StethoInitializer stetho;