package com.fastaccess.ui.modules.gists.gist.files; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import com.fastaccess.R; import com.fastaccess.data.dao.FilesListModel; import com.fastaccess.data.dao.GithubFileModel; import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.FileHelper; import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.markdown.MarkDownProvider; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.adapter.GistFilesAdapter; import com.fastaccess.ui.base.BaseFragment; import com.fastaccess.ui.modules.code.CodeViewerActivity; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.dialog.MessageDialogView; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; import java.util.ArrayList; import butterknife.BindView; /** * Created by Kosh on 13 Nov 2016, 1:36 PM */ public class GistFilesListFragment extends BaseFragment<GistFilesListMvp.View, GistFilesListPresenter> implements GistFilesListMvp.View { @BindView(R.id.recycler) DynamicRecyclerView recycler; @BindView(R.id.refresh) SwipeRefreshLayout refresh; @BindView(R.id.stateLayout) StateLayout stateLayout; public static GistFilesListFragment newInstance(@NonNull GithubFileModel gistsModel) { GistFilesListFragment view = new GistFilesListFragment(); view.setArguments(Bundler.start() .putParcelableArrayList(BundleConstant.ITEM, gistsModel.values() != null ? new ArrayList<>(gistsModel.values()) : new ArrayList<FilesListModel>()) .end()); return view; } @Override protected int fragmentLayout() { return R.layout.small_grid_refresh_list; } @NonNull @Override public GistFilesListPresenter providePresenter() { return new GistFilesListPresenter(); } @Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { ArrayList<FilesListModel> filesListModel = getArguments().getParcelableArrayList(BundleConstant.ITEM); stateLayout.hideReload(); stateLayout.setEmptyText(R.string.no_files); recycler.setEmptyView(stateLayout); refresh.setEnabled(false); if (filesListModel == null) { return; } if (!filesListModel.isEmpty()) { recycler.setAdapter(new GistFilesAdapter(filesListModel, getPresenter())); recycler.addKeyLineDivider(); } } @Override public void onOpenFile(@NonNull FilesListModel item) { if (item.getRawUrl() != null) { if (item.getSize() > FileHelper.ONE_MB && !MarkDownProvider.isImage(item.getRawUrl())) { MessageDialogView.newInstance(getString(R.string.big_file), getString(R.string.big_file_description), Bundler.start().put(BundleConstant.YES_NO_EXTRA, true).put(BundleConstant.EXTRA, item.getRawUrl()).end()) .show(getChildFragmentManager(), "MessageDialogView"); } else { CodeViewerActivity.startActivity(getContext(), item.getRawUrl(), item.getRawUrl()); } } else { showErrorMessage(getString(R.string.no_url)); } } @Override public void onMessageDialogActionClicked(boolean isOk, @Nullable Bundle bundle) { super.onMessageDialogActionClicked(isOk, bundle); if (isOk && bundle != null) { String url = bundle.getString(BundleConstant.EXTRA); if (!InputHelper.isEmpty(url)) { if (ActivityHelper.checkAndRequestReadWritePermission(getActivity())) { RestProvider.downloadFile(getContext(), url); } } } } }