package com.arcao.trackables.ui;
import android.app.Fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import com.arcao.trackables.R;
import com.arcao.trackables.data.service.AccountService;
import com.arcao.trackables.internal.di.HasComponent;
import com.arcao.trackables.internal.di.component.WelcomeActivityComponent;
import com.arcao.trackables.ui.fragment.AfterLoginFragment;
import com.arcao.trackables.ui.fragment.OAuthLoginFragment;
import com.arcao.trackables.ui.fragment.WelcomeFragment;
import timber.log.Timber;
import javax.inject.Inject;
public class WelcomeActivity extends AppCompatActivity implements HasComponent<WelcomeActivityComponent> {
public enum WelcomeState {
WELCOME,
LOGIN,
AFTER_LOGIN,
FINISHED
}
@Inject
protected AccountService accountService;
private WelcomeActivityComponent component;
public WelcomeActivityComponent component() {
if (component == null)
component = WelcomeActivityComponent.Initializer.init(this);
return component;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
component().inject(this);
setContentView(R.layout.activity_welcome);
if (getFragmentManager().findFragmentById(R.id.fragment_container) == null && savedInstanceState == null) {
switchTo(WelcomeState.WELCOME);
}
}
public void showError(Intent errorIntent) {
accountService.logout();
switchTo(WelcomeState.WELCOME);
startActivity(errorIntent);
}
public void switchTo(WelcomeState state) {
Fragment fragment;
switch (state) {
default:
case WELCOME:
fragment = WelcomeFragment.newInstance();
break;
case LOGIN:
fragment = OAuthLoginFragment.newInstance();
break;
case AFTER_LOGIN:
fragment = AfterLoginFragment.newInstance();
break;
case FINISHED:
startActivity(new Intent(this, MainActivity.class).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK));
finish();
return;
}
Timber.d("Switching to %s", fragment.getClass().getName());
getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment).commit();
}
}