package pl.pola_app; import android.app.Application; import android.content.Context; import android.util.Log; import com.crashlytics.android.Crashlytics; import com.squareup.okhttp.OkHttpClient; import java.util.concurrent.TimeUnit; import butterknife.ButterKnife; import io.fabric.sdk.android.Fabric; import pl.pola_app.helpers.Utils; import pl.pola_app.internal.di.PolaComponent; import retrofit.GsonConverterFactory; import retrofit.Retrofit; import timber.log.Timber; public class PolaApplication extends Application { private PolaComponent component; public static Retrofit retrofit; @Override public void onCreate() { super.onCreate(); component = PolaComponent.Initializer.init(this); if(BuildConfig.USE_CRASHLYTICS) { Fabric.with(this, new Crashlytics()); } ButterKnife.setDebug(BuildConfig.DEBUG); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); } else { Timber.plant(new CrashReportingTree()); } OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(Utils.TIMEOUT_SECONDS, TimeUnit.SECONDS); client.setReadTimeout(Utils.TIMEOUT_SECONDS, TimeUnit.SECONDS); retrofit = new Retrofit.Builder() .baseUrl(this.getResources().getString(R.string.pola_api_url)) .addConverterFactory(GsonConverterFactory.create()) .client(client) .build(); } public static PolaComponent component(Context context) { return ((PolaApplication) context.getApplicationContext()).component; } private static class CrashReportingTree extends Timber.Tree { @Override protected void log(int priority, String tag, String message, Throwable t) { if (priority == Log.VERBOSE || priority == Log.DEBUG) { return; } if(BuildConfig.USE_CRASHLYTICS) { Crashlytics.log(priority, tag, message); } if (t != null) { if (priority == Log.ERROR) { Log.e(tag, t.getMessage()); } else if (priority == Log.WARN) { Log.w(tag, t.getMessage()); } } } } }