package com.fastaccess.ui.modules.repos.code.commit.details.files;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.view.MenuInflater;
import android.view.View;
import android.widget.PopupMenu;
import com.fastaccess.R;
import com.fastaccess.data.dao.CommitFileListModel;
import com.fastaccess.data.dao.CommitFileModel;
import com.fastaccess.helper.ActivityHelper;
import com.fastaccess.helper.AppHelper;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.InputHelper;
import com.fastaccess.provider.rest.RestProvider;
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
import com.fastaccess.ui.modules.repos.code.commit.viewer.FullCommitFileActivity;
import java.util.ArrayList;
/**
* Created by Kosh on 15 Feb 2017, 10:10 PM
*/
class CommitFilesPresenter extends BasePresenter<CommitFilesMvp.View> implements CommitFilesMvp.Presenter {
private CommitFileListModel files = new CommitFileListModel();
@Override public void onItemClick(int position, View v, CommitFileModel item) {
if (v.getId() == R.id.open) {
PopupMenu popup = new PopupMenu(v.getContext(), v);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.commit_row_menu, popup.getMenu());
popup.setOnMenuItemClickListener(item1 -> {
switch (item1.getItemId()) {
case R.id.open:
FullCommitFileActivity.start(v.getContext(), item);
break;
case R.id.share:
ActivityHelper.shareUrl(v.getContext(), item.getBlobUrl());
break;
case R.id.download:
Activity activity = ActivityHelper.getActivity(v.getContext());
if (activity == null) break;
if (ActivityHelper.checkAndRequestReadWritePermission(activity)) {
RestProvider.downloadFile(v.getContext(), item.getRawUrl());
}
break;
case R.id.copy:
AppHelper.copyToClipboard(v.getContext(), item.getBlobUrl());
break;
}
return true;
});
popup.show();
}
}
@Override public void onItemLongClick(int position, View v, CommitFileModel item) {}
@Override public void onFragmentCreated(@Nullable Bundle bundle) {
if (bundle != null) {
String sha = bundle.getString(BundleConstant.ID);
if (!InputHelper.isEmpty(sha)) {
CommitFileListModel commitFiles = CommitFilesSingleton.getInstance().getByCommitId(sha);
ArrayList<CommitFileModel> fileModels = new ArrayList<>();
if (commitFiles != null) {
fileModels.addAll(commitFiles);
CommitFilesSingleton.getInstance().clear();
}
sendToView(view -> view.onNotifyAdapter(fileModels));
}
} else {
throw new NullPointerException("Bundle is null");
}
}
@NonNull @Override public CommitFileListModel getFiles() {
return files;
}
}