// 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/entity/User.java
// public class User {
//     public long id;
//     public String login;
//     public String avatar_url;
//     public String email;
//     public String bio;
//     public int followers;
//     public int following;
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/usecase/GetStargazersUseCase.java
// public class GetStargazersUseCase {
// 
//     private final UserRepository userRepository;
// 
//     @Inject
//     public GetStargazersUseCase(UserRepository userRepository) {
//         this.userRepository = userRepository;
//     }
// 
//     public Single<List<User>> run(String user, String repo, int page, int perPage) {
//         return userRepository.getStargazers(user, repo, page, perPage);
//     }
// }
// 
// 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.databinding.ObservableArrayList;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import javax.inject.Inject;
import io.github.kobakei.anago.activity.BaseActivity;
import io.github.kobakei.anago.entity.User;
import io.github.kobakei.anago.usecase.GetStargazersUseCase;
import io.github.kobakei.anago.viewmodel.base.ActivityViewModel;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;
package io.github.kobakei.anago.viewmodel;




/**
 * スターした人一覧画面のビューモデル
 * Created by keisuke on 2016/09/20.
 */

public class StargazerListActivityViewModel extends ActivityViewModel {

    private final GetStargazersUseCase getStargazersUseCase;

    public ObservableArrayList<User> users;

    private String paramUser;
    private String paramRepo;

    private int page = 0;
    private boolean loadingMore = false;

    @Inject
    public StargazerListActivityViewModel(BaseActivity activity, GetStargazersUseCase getStargazersUseCase) {
        super(activity);
        this.getStargazersUseCase = getStargazersUseCase;

        this.users = new ObservableArrayList<>();
    }

    public void setParams(String user, String repo) {
        this.paramUser = user;
        this.paramRepo = repo;
    }

    @Override
    public void onStart() {

    }

    @Override
    public void onResume() {
// 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/entity/User.java
// public class User {
//     public long id;
//     public String login;
//     public String avatar_url;
//     public String email;
//     public String bio;
//     public int followers;
//     public int following;
// }
// 
// Path: app/src/main/java/io/github/kobakei/anago/usecase/GetStargazersUseCase.java
// public class GetStargazersUseCase {
// 
//     private final UserRepository userRepository;
// 
//     @Inject
//     public GetStargazersUseCase(UserRepository userRepository) {
//         this.userRepository = userRepository;
//     }
// 
//     public Single<List<User>> run(String user, String repo, int page, int perPage) {
//         return userRepository.getStargazers(user, repo, page, perPage);
//     }
// }
// 
// 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/StargazerListActivityViewModel.java
import android.databinding.ObservableArrayList;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import javax.inject.Inject;
import io.github.kobakei.anago.activity.BaseActivity;
import io.github.kobakei.anago.entity.User;
import io.github.kobakei.anago.usecase.GetStargazersUseCase;
import io.github.kobakei.anago.viewmodel.base.ActivityViewModel;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import timber.log.Timber;

package io.github.kobakei.anago.viewmodel;




/**
 * スターした人一覧画面のビューモデル
 * Created by keisuke on 2016/09/20.
 */

public class StargazerListActivityViewModel extends ActivityViewModel {

    private final GetStargazersUseCase getStargazersUseCase;

    public ObservableArrayList<User> users;

    private String paramUser;
    private String paramRepo;

    private int page = 0;
    private boolean loadingMore = false;

    @Inject
    public StargazerListActivityViewModel(BaseActivity activity, GetStargazersUseCase getStargazersUseCase) {
        super(activity);
        this.getStargazersUseCase = getStargazersUseCase;

        this.users = new ObservableArrayList<>();
    }

    public void setParams(String user, String repo) {
        this.paramUser = user;
        this.paramRepo = repo;
    }

    @Override
    public void onStart() {

    }

    @Override
    public void onResume() {
        load();