package com.byoutline.kickmaterial;
import android.support.annotation.VisibleForTesting;
import com.byoutline.androidstubserver.AndroidStubServer;
import com.byoutline.ibuscachedfield.util.RetrofitHelper;
import com.byoutline.kickmaterial.dagger.*;
import com.byoutline.kickmaterial.managers.AccessTokenProvider;
import com.byoutline.mockserver.NetworkType;
import com.byoutline.secretsauce.BaseApp;
import com.byoutline.secretsauce.utils.ViewUtils;
import com.squareup.otto.Bus;
import timber.log.Timber;
/**
* @author Pawel Karczewski <pawel.karczewski at byoutline.com> on 2015-01-03
*/
public class KickMaterialApp extends BaseApp {
public static GlobalComponent component;
@Override
public void onCreate() {
super.onCreate();
if (BuildConfig.DEBUG) {
Timber.plant(new Timber.DebugTree());
}
AndroidStubServer.start(this, NetworkType.UMTS);
RetrofitHelper.MSG_DISPLAYER = msg -> ViewUtils.showToast(msg, true);
resetComponents();
}
@Override
protected boolean isDebug() {
return BuildConfig.DEBUG;
}
@VisibleForTesting
public synchronized void setComponents(GlobalComponent mainComponent, AppComponent appComponent) {
component = mainComponent;
init(appComponent);
// component.inject(this);
}
public void resetComponents() {
AppComponent appComponent = createAppComponent();
GlobalComponent mainComponent = createGlobalComponent(appComponent.getBus(), appComponent.getAccessTokenProvider());
setComponents(mainComponent, appComponent);
}
private GlobalComponent createGlobalComponent(Bus bus, AccessTokenProvider accessTokenProvider) {
return DaggerGlobalComponent.builder()
.globalModule(new GlobalModule(this, bus, accessTokenProvider))
.build();
}
private AppComponent createAppComponent() {
return DaggerAppComponent.builder()
.appModule(new AppModule(this))
.build();
}
}