package com.artemzin.qualitymatters; import android.app.Application; import android.content.Context; import android.support.annotation.NonNull; import com.artemzin.qualitymatters.api.ApiModule; import com.artemzin.qualitymatters.developer_settings.DevMetricsProxy; import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModel; import com.artemzin.qualitymatters.models.AnalyticsModel; import timber.log.Timber; public class QualityMattersApp extends Application { private ApplicationComponent applicationComponent; // Prevent need in a singleton (global) reference to the application object. @NonNull public static QualityMattersApp get(@NonNull Context context) { return (QualityMattersApp) context.getApplicationContext(); } @Override public void onCreate() { super.onCreate(); applicationComponent = prepareApplicationComponent().build(); AnalyticsModel analyticsModel = applicationComponent.analyticsModel(); analyticsModel.init(); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); DeveloperSettingsModel developerSettingModel = applicationComponent.developerSettingModel(); developerSettingModel.apply(); DevMetricsProxy devMetricsProxy = applicationComponent.devMetricsProxy(); devMetricsProxy.apply(); } } @NonNull protected DaggerApplicationComponent.Builder prepareApplicationComponent() { return DaggerApplicationComponent.builder() .applicationModule(new ApplicationModule(this)) // This url may be changed dynamically for tests! See ChangeableBaseUrl. .apiModule(new ApiModule("https://raw.githubusercontent.com/artem-zinnatullin/qualitymatters/master/rest_api/")); } @NonNull public ApplicationComponent applicationComponent() { return applicationComponent; } }