diff --git a/app/build.gradle b/app/build.gradle index 9eb38b5c..b52cc136 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -122,7 +122,6 @@ dependencies { compile 'com.github.k0shk0sh:RetainedDateTimePickers:1.0.2' compile 'com.zzhoujay.markdown:markdown:1.0.4' compile 'com.github.daniel-stoneuk:material-about-library:1.8.1' - compile 'com.mikepenz:community-material-typeface:1.7.22.1@aar' annotationProcessor "org.projectlombok:lombok:${lombokVersion}" annotationProcessor "frankiesardo:icepick-processor:${icepickVersion}" annotationProcessor "com.jakewharton:butterknife-compiler:${butterKnifeVersion}" diff --git a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java index c9c642dd..5e0624f7 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java @@ -23,7 +23,8 @@ import com.fastaccess.ui.modules.repos.code.contributors.RepoContributorsView; import com.fastaccess.ui.modules.repos.code.files.paths.RepoFilePathView; import com.fastaccess.ui.modules.repos.code.prettifier.ViewerView; import com.fastaccess.ui.modules.repos.code.releases.RepoReleasesView; -import com.fastaccess.ui.modules.repos.issues.issue.RepoIssuesView; +import com.fastaccess.ui.modules.repos.issues.issue.RepoClosedIssuesView; +import com.fastaccess.ui.modules.repos.issues.issue.RepoOpenedIssuesView; import com.fastaccess.ui.modules.repos.issues.issue.details.comments.IssueCommentsView; import com.fastaccess.ui.modules.repos.issues.issue.details.events.IssueDetailsView; import com.fastaccess.ui.modules.repos.pull_requests.pull_request.RepoPullRequestView; @@ -107,9 +108,9 @@ public class FragmentPagerAdapterModel { @NonNull public static List buildForRepoIssue(@NonNull Context context, @NonNull String login, @NonNull String repoId) { return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.opened), - RepoIssuesView.newInstance(repoId, login, IssueState.open)), + RepoOpenedIssuesView.newInstance(repoId, login, IssueState.open)), new FragmentPagerAdapterModel(context.getString(R.string.closed), - RepoIssuesView.newInstance(repoId, login, IssueState.closed))) + RepoClosedIssuesView.newInstance(repoId, login, IssueState.closed))) .collect(Collectors.toList()); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerMvp.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerMvp.java index 4297d208..1864f713 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerMvp.java @@ -6,10 +6,12 @@ import com.fastaccess.ui.base.mvp.BaseMvp; * Created by Kosh on 31 Dec 2016, 1:35 AM */ -interface RepoIssuesPagerMvp { +public interface RepoIssuesPagerMvp { interface View extends BaseMvp.FAView { void onAddIssue(); + + void setCurrentItem(int index); } interface Presenter extends BaseMvp.FAPresenter {} diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerView.java index 1e14c0b1..f30daf5a 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/RepoIssuesPagerView.java @@ -12,7 +12,7 @@ import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseFragment; -import com.fastaccess.ui.modules.repos.issues.issue.RepoIssuesView; +import com.fastaccess.ui.modules.repos.issues.issue.RepoOpenedIssuesView; import com.fastaccess.ui.widgets.ViewPagerView; import butterknife.BindView; @@ -56,7 +56,11 @@ public class RepoIssuesPagerView extends BaseFragment implements RepoIssuesMvp.View { + @BindView(R.id.recycler) DynamicRecyclerView recycler; + @BindView(R.id.refresh) SwipeRefreshLayout refresh; + @BindView(R.id.stateLayout) StateLayout stateLayout; + private OnLoadMore onLoadMore; + private IssuesAdapter adapter; + + public static RepoClosedIssuesView newInstance(@NonNull String repoId, @NonNull String login, @NonNull IssueState issueState) { + RepoClosedIssuesView view = new RepoClosedIssuesView(); + view.setArguments(Bundler.start() + .put(BundleConstant.ID, repoId) + .put(BundleConstant.EXTRA, login) + .put(BundleConstant.EXTRA_TWO, issueState) + .end()); + return view; + } + + @Override public void onNotifyAdapter() { + Logger.e(); + hideProgress(); + adapter.notifyDataSetChanged(); + } + + @Override protected int fragmentLayout() { + return R.layout.small_grid_refresh_list; + } + + @Override protected void onFragmentCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + if (getArguments() == null) { + throw new NullPointerException("Bundle is null, therefore, issues can't be proceeded."); + } + stateLayout.setOnReloadListener(this); + refresh.setOnRefreshListener(this); + recycler.setEmptyView(stateLayout, refresh); + adapter = new IssuesAdapter(getPresenter().getIssues(), true); + adapter.setListener(getPresenter()); + getLoadMore().setCurrent_page(getPresenter().getCurrentPage(), getPresenter().getPreviousTotal()); + recycler.setAdapter(adapter); + recycler.addOnScrollListener(getLoadMore()); + if (savedInstanceState == null) { + getPresenter().onFragmentCreated(getArguments()); + } else if (getPresenter().getIssues().isEmpty() && !getPresenter().isApiCalled()) { + onRefresh(); + } + } + + @NonNull @Override public RepoIssuesPresenter providePresenter() { + return new RepoIssuesPresenter(); + } + + @Override public void hideProgress() { + refresh.setRefreshing(false); + stateLayout.hideProgress(); + } + + @Override public void showProgress(@StringRes int resId) { + stateLayout.showProgress(); + } + + @Override public void showErrorMessage(@NonNull String message) { + hideProgress(); + stateLayout.showReload(adapter.getItemCount()); + super.showErrorMessage(message); + } + + @NonNull @Override public OnLoadMore getLoadMore() { + if (onLoadMore == null) { + onLoadMore = new OnLoadMore<>(getPresenter()); + } + onLoadMore.setParameter(((IssueState) getArguments().getSerializable(BundleConstant.EXTRA_TWO))); + return onLoadMore; + } + + @Override public void onAddIssue() { + //DO NOTHING + } + + @Override public void onRefresh() { + getPresenter().onCallApi(1, null); + } + + @Override public void onClick(View view) { + onRefresh(); + } +} diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java index df5fe09d..3c800e5b 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java @@ -58,6 +58,7 @@ class RepoIssuesPresenter extends BasePresenter implements R } @Override public void onCallApi(int page, @Nullable IssueState parameter) { + Logger.e(page, page, login, repoId); if (page == 1) { lastPage = Integer.MAX_VALUE; sendToView(view -> view.getLoadMore().reset()); @@ -66,10 +67,10 @@ class RepoIssuesPresenter extends BasePresenter implements R sendToView(RepoIssuesMvp.View::hideProgress); return; } - if (repoId == null || login == null) return; setCurrentPage(page); makeRestCall(RestProvider.getIssueService().getRepositoryIssues(login, repoId, issueState.name(), page), issues -> { + lastPage = issues.getLast(); if (getCurrentPage() == 1) { getIssues().clear(); manageSubscription(IssueModel.save(issues.getItems(), repoId, login).subscribe()); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoOpenedIssuesView.java similarity index 76% rename from app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesView.java rename to app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoOpenedIssuesView.java index f1506849..24c35088 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoOpenedIssuesView.java @@ -1,6 +1,7 @@ package com.fastaccess.ui.modules.repos.issues.issue; import android.app.Activity; +import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.NonNull; @@ -10,7 +11,6 @@ import android.support.v4.widget.SwipeRefreshLayout; import android.view.View; import com.fastaccess.R; -import com.fastaccess.data.dao.IssueModel; import com.fastaccess.data.dao.types.IssueState; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; @@ -18,6 +18,7 @@ import com.fastaccess.helper.Logger; import com.fastaccess.provider.rest.loadmore.OnLoadMore; import com.fastaccess.ui.adapter.IssuesAdapter; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.repos.issues.RepoIssuesPagerMvp; import com.fastaccess.ui.modules.repos.issues.create.CreateIssueView; import com.fastaccess.ui.widgets.StateLayout; import com.fastaccess.ui.widgets.recyclerview.DynamicRecyclerView; @@ -28,15 +29,17 @@ import butterknife.BindView; * Created by Kosh on 03 Dec 2016, 3:56 PM */ -public class RepoIssuesView extends BaseFragment implements RepoIssuesMvp.View { +public class RepoOpenedIssuesView extends BaseFragment implements RepoIssuesMvp.View { @BindView(R.id.recycler) DynamicRecyclerView recycler; @BindView(R.id.refresh) SwipeRefreshLayout refresh; @BindView(R.id.stateLayout) StateLayout stateLayout; private OnLoadMore onLoadMore; private IssuesAdapter adapter; - public static RepoIssuesView newInstance(@NonNull String repoId, @NonNull String login, @NonNull IssueState issueState) { - RepoIssuesView view = new RepoIssuesView(); + private RepoIssuesPagerMvp.View pagerCallback; + + public static RepoOpenedIssuesView newInstance(@NonNull String repoId, @NonNull String login, @NonNull IssueState issueState) { + RepoOpenedIssuesView view = new RepoOpenedIssuesView(); view.setArguments(Bundler.start() .put(BundleConstant.ID, repoId) .put(BundleConstant.EXTRA, login) @@ -45,6 +48,20 @@ public class RepoIssuesView extends BaseFragment getLoadMore() { if (onLoadMore == null) { onLoadMore = new OnLoadMore<>(getPresenter()); - onLoadMore.setParameter(((IssueState) getArguments().getSerializable(BundleConstant.EXTRA_TWO))); } + onLoadMore.setParameter(((IssueState) getArguments().getSerializable(BundleConstant.EXTRA_TWO))); return onLoadMore; } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/AvatarLayout.java b/app/src/main/java/com/fastaccess/ui/widgets/AvatarLayout.java index 762ae1cb..4d46ce4a 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/AvatarLayout.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/AvatarLayout.java @@ -82,16 +82,15 @@ public class AvatarLayout extends FrameLayout implements ImageLoadingListener { } @Override public void onLoadingStarted(String imageUri, View view) { - setBackgroundResource(R.drawable.circle_shape); + setBackground(false); } @Override public void onLoadingFailed(String imageUri, View view, FailReason failReason) { - avatar.setImageResource(R.drawable.ic_github_black); - setBackgroundColor(Color.TRANSPARENT); + setBackground(true); } @Override public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) { - setBackgroundColor(Color.TRANSPARENT); + setBackground(true); } @Override public void onLoadingCancelled(String imageUri, View view) {} @@ -105,4 +104,16 @@ public class AvatarLayout extends FrameLayout implements ImageLoadingListener { ImageLoader.getInstance().displayImage(null, avatar); } } + + private void setBackground(boolean clear) { + if (clear) { + setBackgroundColor(Color.TRANSPARENT); + } else { + if (PrefGetter.isRectdAvatar()) { + setBackgroundResource(R.drawable.rect_shape); + } else { + setBackgroundResource(R.drawable.circle_shape); + } + } + } } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/InfiniteScroll.java b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/InfiniteScroll.java index 82067fda..53837047 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/InfiniteScroll.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/scroll/InfiniteScroll.java @@ -5,7 +5,7 @@ import android.support.v7.widget.RecyclerView; /** * Created by Kosh on 8/2/2015. copyrights are reserved @Innov8tif */ -public abstract class InfiniteScroll extends RecyclerView.OnScrollListener { +@SuppressWarnings("FieldCanBeLocal") public abstract class InfiniteScroll extends RecyclerView.OnScrollListener { private int previousTotal = 0; private boolean loading = true; private int visibleThreshold = 2; @@ -17,7 +17,6 @@ public abstract class InfiniteScroll extends RecyclerView.OnScrollListener { private static final int HIDE_THRESHOLD = 20; private int scrolledDistance = 0; private boolean controlsVisible = true; - private final int PAGING_SIZE = 30; public InfiniteScroll() {} @@ -27,7 +26,6 @@ public abstract class InfiniteScroll extends RecyclerView.OnScrollListener { visibleItemCount = recyclerView.getChildCount(); totalItemCount = mRecyclerViewHelper.getItemCount(); firstVisibleItem = mRecyclerViewHelper.findFirstVisibleItemPosition(); - if (PAGING_SIZE > totalItemCount) return; if (loading) { if (totalItemCount > previousTotal) { loading = false; @@ -60,9 +58,7 @@ public abstract class InfiniteScroll extends RecyclerView.OnScrollListener { } } - @SuppressWarnings("WeakerAccess") protected void onScrollToLast(RecyclerView recyclerView) { - - } + @SuppressWarnings("WeakerAccess") protected void onScrollToLast(RecyclerView recyclerView) {} @SuppressWarnings("WeakerAccess") protected void onShow(RecyclerView recyclerView) {} diff --git a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java index ec5ba71a..fe13b2fc 100755 --- a/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java +++ b/app/src/main/java/com/prettifier/pretty/PrettifyWebView.java @@ -100,10 +100,12 @@ public class PrettifyWebView extends NestedWebView { setGithubContent(source, baseUrl, false); } - public void setGithubContent(@NonNull String source, @Nullable String baseUrl, boolean wrap) { + @SuppressLint("SetJavaScriptEnabled") public void setGithubContent(@NonNull String source, @Nullable String baseUrl, boolean wrap) { if (wrap) { setScrollbarFadingEnabled(false); setVerticalScrollBarEnabled(false); + } else { + getSettings().setJavaScriptEnabled(true); } if (!InputHelper.isEmpty(source)) { if (!wrap) addJavascriptInterface(new MarkDownInterceptorInterface(this), "Android"); diff --git a/app/src/main/res/drawable/rect_shape.xml b/app/src/main/res/drawable/rect_shape.xml new file mode 100644 index 00000000..b74f2276 --- /dev/null +++ b/app/src/main/res/drawable/rect_shape.xml @@ -0,0 +1,8 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index bad3606c..a2839553 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -247,7 +247,7 @@ Author Fork on GitHub Send an email - kosh20111@gmail.com + fastaccess.app@gmail.com Question concerning FastHub Feedback Report an issue