// Path: app/src/main/java/io/github/kobakei/anago/activity/BaseActivity.java
// public class BaseActivity extends RxAppCompatActivity {
// 
//     private ActivityViewModel viewModel;
// 
//     protected ActivityComponent getInjector() {
//         AnagoApplication application = (AnagoApplication) getApplication();
//         return application.getInjector().activityComponent(new ActivityModule(this));
//     }
// 
//     /**
//      * ビューモデルをこのアクティビティにバインドする
//      * アクティビティのライフサイクルイベント発生時に、ビューモデルの対応するメソッドが呼ばれるようになります
//      * @param viewModel
//      */
//     protected void bindViewModel(ActivityViewModel viewModel) {
//         this.viewModel = viewModel;
//     }
// 
//     @Override
//     protected void onStart() {
//         super.onStart();
//         checkViewModel();
//         viewModel.onStart();
//     }
// 
//     @Override
//     protected void onResume() {
//         super.onResume();
//         checkViewModel();
//         viewModel.onResume();
//     }
// 
//     @Override
//     protected void onPause() {
//         super.onPause();
//         checkViewModel();
//         viewModel.onPause();
//     }
// 
//     @Override
//     protected void onStop() {
//         super.onStop();
//         checkViewModel();
//         viewModel.onStop();
//     }
// 
//     private void checkViewModel() {
//         if (viewModel == null) {
//             throw new IllegalStateException("Before resuming activity, bindViewModel must be called.");
//         }
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/activity/SignInActivity.java
// public class SignInActivity extends BaseActivity {
// 
//     @Inject
//     SignInActivityViewModel viewModel;
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
// 
//         getInjector().inject(this);
//         bindViewModel(viewModel);
// 
//         SignInActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.sign_in_activity);
//         binding.setViewModel(viewModel);
//     }
// 
//     public static void startActivity(Context context) {
//         Intent intent = new Intent(context, SignInActivity.class);
//         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
//         context.startActivity(intent);
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/usecase/SignOutUseCase.java
// public class SignOutUseCase {
// 
//     private final AuthTokenRepository authTokenRepository;
// 
//     @Inject
//     public SignOutUseCase(AuthTokenRepository authTokenRepository) {
//         this.authTokenRepository = authTokenRepository;
//     }
// 
//     public Completable run() {
//         return authTokenRepository.delete();
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/viewmodel/base/ActivityViewModel.java
// public abstract class ActivityViewModel {
// 
//     private final BaseActivity activity;
// 
//     public ActivityViewModel(BaseActivity activity) {
//         this.activity = activity;
//     }
// 
//     @NonNull
//     public BaseActivity getActivity() {
//         if (activity != null) {
//             return activity;
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     @NonNull
//     public Context getContext() {
//         if (activity != null) {
//             return activity;
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     @NonNull
//     public final <T> LifecycleTransformer<T> bindToLifecycle() {
//         if (activity != null) {
//             return activity.bindToLifecycle();
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     public abstract void onStart();
// 
//     public abstract void onResume();
// 
//     public abstract void onPause();
// 
//     public abstract void onStop();
// }


import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import javax.inject.Inject;
import io.github.kobakei.anago.activity.BaseActivity;
import io.github.kobakei.anago.activity.SignInActivity;
import io.github.kobakei.anago.usecase.SignOutUseCase;
import io.github.kobakei.anago.viewmodel.base.ActivityViewModel;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
package io.github.kobakei.anago.viewmodel;




/**
 * ホーム画面のビューモデル
 * Created by keisuke on 2016/09/19.
 */

public class HomeActivityViewModel extends ActivityViewModel implements Toolbar.OnMenuItemClickListener {

    private final SignOutUseCase signOutUseCase;

    @Inject
// Path: app/src/main/java/io/github/kobakei/anago/activity/BaseActivity.java
// public class BaseActivity extends RxAppCompatActivity {
// 
//     private ActivityViewModel viewModel;
// 
//     protected ActivityComponent getInjector() {
//         AnagoApplication application = (AnagoApplication) getApplication();
//         return application.getInjector().activityComponent(new ActivityModule(this));
//     }
// 
//     /**
//      * ビューモデルをこのアクティビティにバインドする
//      * アクティビティのライフサイクルイベント発生時に、ビューモデルの対応するメソッドが呼ばれるようになります
//      * @param viewModel
//      */
//     protected void bindViewModel(ActivityViewModel viewModel) {
//         this.viewModel = viewModel;
//     }
// 
//     @Override
//     protected void onStart() {
//         super.onStart();
//         checkViewModel();
//         viewModel.onStart();
//     }
// 
//     @Override
//     protected void onResume() {
//         super.onResume();
//         checkViewModel();
//         viewModel.onResume();
//     }
// 
//     @Override
//     protected void onPause() {
//         super.onPause();
//         checkViewModel();
//         viewModel.onPause();
//     }
// 
//     @Override
//     protected void onStop() {
//         super.onStop();
//         checkViewModel();
//         viewModel.onStop();
//     }
// 
//     private void checkViewModel() {
//         if (viewModel == null) {
//             throw new IllegalStateException("Before resuming activity, bindViewModel must be called.");
//         }
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/activity/SignInActivity.java
// public class SignInActivity extends BaseActivity {
// 
//     @Inject
//     SignInActivityViewModel viewModel;
// 
//     @Override
//     protected void onCreate(Bundle savedInstanceState) {
//         super.onCreate(savedInstanceState);
// 
//         getInjector().inject(this);
//         bindViewModel(viewModel);
// 
//         SignInActivityBinding binding = DataBindingUtil.setContentView(this, R.layout.sign_in_activity);
//         binding.setViewModel(viewModel);
//     }
// 
//     public static void startActivity(Context context) {
//         Intent intent = new Intent(context, SignInActivity.class);
//         intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
//         context.startActivity(intent);
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/usecase/SignOutUseCase.java
// public class SignOutUseCase {
// 
//     private final AuthTokenRepository authTokenRepository;
// 
//     @Inject
//     public SignOutUseCase(AuthTokenRepository authTokenRepository) {
//         this.authTokenRepository = authTokenRepository;
//     }
// 
//     public Completable run() {
//         return authTokenRepository.delete();
//     }
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/viewmodel/base/ActivityViewModel.java
// public abstract class ActivityViewModel {
// 
//     private final BaseActivity activity;
// 
//     public ActivityViewModel(BaseActivity activity) {
//         this.activity = activity;
//     }
// 
//     @NonNull
//     public BaseActivity getActivity() {
//         if (activity != null) {
//             return activity;
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     @NonNull
//     public Context getContext() {
//         if (activity != null) {
//             return activity;
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     @NonNull
//     public final <T> LifecycleTransformer<T> bindToLifecycle() {
//         if (activity != null) {
//             return activity.bindToLifecycle();
//         }
//         throw new IllegalStateException("No view attached");
//     }
// 
//     public abstract void onStart();
// 
//     public abstract void onResume();
// 
//     public abstract void onPause();
// 
//     public abstract void onStop();
// }


// Path: app/src/main/java/io/github/kobakei/anago/viewmodel/HomeActivityViewModel.java
import android.support.v7.widget.Toolbar;
import android.view.MenuItem;
import javax.inject.Inject;
import io.github.kobakei.anago.activity.BaseActivity;
import io.github.kobakei.anago.activity.SignInActivity;
import io.github.kobakei.anago.usecase.SignOutUseCase;
import io.github.kobakei.anago.viewmodel.base.ActivityViewModel;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

package io.github.kobakei.anago.viewmodel;




/**
 * ホーム画面のビューモデル
 * Created by keisuke on 2016/09/19.
 */

public class HomeActivityViewModel extends ActivityViewModel implements Toolbar.OnMenuItemClickListener {

    private final SignOutUseCase signOutUseCase;

    @Inject
    public HomeActivityViewModel(BaseActivity activity, SignOutUseCase signOutUseCase) {