package com.alorma.github.ui.fragment.users;
import android.support.annotation.StyleRes;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import com.alorma.github.R;
import com.alorma.github.sdk.services.client.GithubListClient;
import com.alorma.github.ui.adapter.users.UsersAdapter;
import com.alorma.github.ui.fragment.base.LoadingListFragment;
import com.alorma.gitskarios.core.Pair;
import com.mikepenz.octicons_typeface_library.Octicons;
import core.User;
import java.util.List;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public abstract class BaseUsersListFragment extends LoadingListFragment<UsersAdapter> {
@StyleRes
@Override
protected int getLightTheme() {
return R.style.AppTheme_People;
}
@StyleRes
@Override
protected int getDarkTheme() {
return R.style.AppTheme_Dark_People;
}
protected void setAction(GithubListClient<List<User>> userFollowersClient, boolean refresh) {
startRefresh();
userFollowersClient.observable().subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe(pair -> onUsersLoaded(pair, refresh), throwable -> {
});
}
private void onUsersLoaded(Pair<List<User>, Integer> pair, boolean refresh) {
setPage(pair.second);
List<User> users = pair.first;
if (users.size() > 0) {
hideEmpty();
if (refresh || getAdapter() == null) {
UsersAdapter adapter = new UsersAdapter(LayoutInflater.from(getActivity()));
adapter.addAll(users);
setAdapter(adapter);
} else {
getAdapter().addAll(users);
}
} else if (getAdapter() == null || getAdapter().getItemCount() == 0) {
setEmpty();
} else {
getAdapter().clear();
setEmpty();
}
stopRefresh();
}
@Override
protected RecyclerView.LayoutManager getLayoutManager() {
return new GridLayoutManager(getActivity(), getResources().getInteger(R.integer.grid_layout_columns));
}
@Override
protected Octicons.Icon getNoDataIcon() {
return Octicons.Icon.oct_octoface;
}
}