package com.alorma.github.ui.fragment.pullrequest;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.alorma.github.R;
import com.alorma.github.sdk.bean.info.FileInfo;
import com.alorma.github.sdk.bean.info.IssueInfo;
import com.alorma.github.sdk.services.pullrequest.GetPullRequestFiles;
import com.alorma.github.ui.activity.FileActivity;
import com.alorma.github.ui.adapter.commit.CommitFilesAdapter;
import com.alorma.github.ui.fragment.base.BaseFragment;
import com.alorma.gitskarios.core.Pair;
import core.repositories.CommitFile;
import java.util.List;
import rx.Observer;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
public class PullRequestFilesListFragment extends BaseFragment implements CommitFilesAdapter.OnFileRequestListener {
public static final String INFO = "INFO";
private RecyclerView recyclerView;
private IssueInfo issueInfo;
private CommitFilesAdapter adapter;
public static PullRequestFilesListFragment newInstance(IssueInfo info) {
PullRequestFilesListFragment f = new PullRequestFilesListFragment();
Bundle b = new Bundle();
b.putParcelable(INFO, info);
f.setArguments(b);
return f;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.files_fragment, null);
}
@Override
protected int getLightTheme() {
return R.style.AppTheme_Repository;
}
@Override
protected int getDarkTheme() {
return R.style.AppTheme_Dark_Repository;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
if (getArguments() != null) {
adapter = new CommitFilesAdapter(LayoutInflater.from(getActivity()));
issueInfo = (IssueInfo) getArguments().getParcelable(INFO);
recyclerView = (RecyclerView) view.findViewById(R.id.recycler);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity(), LinearLayoutManager.VERTICAL, false));
getContent();
}
}
private void getContent() {
GetPullRequestFiles getPullRequestFiles = new GetPullRequestFiles(issueInfo);
getPullRequestFiles.observable()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Pair<List<CommitFile>, Integer>>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Pair<List<CommitFile>, Integer> listIntegerPair) {
if (getActivity() != null) {
adapter.addAll(listIntegerPair.first);
adapter.setOnFileRequestListener(PullRequestFilesListFragment.this);
recyclerView.setAdapter(adapter);
}
}
});
}
@Override
public void onFileRequest(CommitFile file) {
FileInfo info = new FileInfo();
info.content = file.patch;
info.name = file.getFilename();
info.repoInfo = issueInfo.repoInfo;
Intent launcherIntent = FileActivity.createLauncherIntent(getActivity(), info);
startActivity(launcherIntent);
}
}