diff --git a/app/build.gradle b/app/build.gradle
index f740dc6a..00280645 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -1,6 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: 'com.google.firebase.firebase-crash'
-apply plugin: 'kotlin-android'
+//apply plugin: 'kotlin-android'
apply plugin: 'com.novoda.build-properties'
apply plugin: 'jacoco-android'
@@ -144,9 +144,9 @@ dependencies {
implementation 'com.firebase:firebase-jobdispatcher:0.6.0'
implementation "com.google.firebase:firebase-ads:${gms}"
implementation "com.google.firebase:firebase-messaging:${gms}"
- implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
releaseImplementation "com.google.firebase:firebase-crash:${gms}"
implementation "com.google.android.gms:play-services-auth:${gms}"
+// implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:${kotlin_version}"
compileOnly "org.projectlombok:lombok:${lombokVersion}"
annotationProcessor "io.requery:requery-processor:${requery}"
annotationProcessor "org.projectlombok:lombok:${lombokVersion}"
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 5043cd88..b33cf9e0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -165,6 +165,17 @@
android:name="android.support.PARENT_ACTIVITY"
android:value=".ui.modules.repos.RepoPagerActivity"/>
+
+
+
+
+
+
-
+
-
-
-
-
-
\ No newline at end of file
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 5938e89c..c4af9cc9 100644
--- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java
+++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java
@@ -155,15 +155,16 @@ import lombok.Setter;
}
public static List buildForNotifications(@NonNull Context context) {
-
return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.unread), new UnreadNotificationsFragment()),
- new FragmentPagerAdapterModel(context.getString(R.string.all), new AllNotificationsFragment())).collect(Collectors.toList());
+ new FragmentPagerAdapterModel(context.getString(R.string.all), AllNotificationsFragment.newInstance()))
+ .collect(Collectors.toList());
}
public static List buildForGists(@NonNull Context context) {
return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.my_gists), ProfileGistsFragment.newInstance(Login.getUser().getLogin())),
- new FragmentPagerAdapterModel(context.getString(R.string.public_gists), GistsFragment.newInstance())).collect(Collectors.toList());
+ new FragmentPagerAdapterModel(context.getString(R.string.public_gists), GistsFragment.newInstance()))
+ .collect(Collectors.toList());
}
public static List buildForMyIssues(@NonNull Context context) {
diff --git a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java
index 1a222745..88b413f1 100644
--- a/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java
+++ b/app/src/main/java/com/fastaccess/provider/scheme/SchemeParser.java
@@ -17,6 +17,7 @@ import com.fastaccess.ui.modules.gists.gist.GistActivity;
import com.fastaccess.ui.modules.repos.RepoPagerActivity;
import com.fastaccess.ui.modules.repos.RepoPagerMvp;
import com.fastaccess.ui.modules.repos.code.commit.details.CommitPagerActivity;
+import com.fastaccess.ui.modules.repos.code.releases.ReleasesListActivity;
import com.fastaccess.ui.modules.repos.issues.create.CreateIssueActivity;
import com.fastaccess.ui.modules.repos.issues.issue.details.IssuePagerActivity;
import com.fastaccess.ui.modules.repos.pull_requests.pull_request.details.PullRequestPagerActivity;
@@ -108,12 +109,13 @@ public class SchemeParser {
Intent createIssueIntent = getCreateIssueIntent(context, data);
Intent pullRequestIntent = getPullRequestIntent(context, data, showRepoBtn);
Intent issueIntent = getIssueIntent(context, data, showRepoBtn);
+ Intent releasesIntent = getReleases(context, data);
Intent repoIntent = getRepo(context, data);
Intent commit = getCommit(context, data, showRepoBtn);
Intent commits = getCommits(context, data, showRepoBtn);
Intent blob = getBlob(context, data);
Optional intentOptional = returnNonNull(userIntent, repoIssues, repoPulls, pullRequestIntent, commit, commits,
- createIssueIntent, issueIntent, repoIntent, blob);
+ createIssueIntent, issueIntent, releasesIntent, repoIntent, blob);
Optional empty = Optional.empty();
if (intentOptional != null && intentOptional.isPresent() && intentOptional != empty) {
return intentOptional.get();
@@ -300,6 +302,20 @@ public class SchemeParser {
return null;
}
+ @Nullable private static Intent getReleases(@NonNull Context context, @NonNull Uri uri) {
+ List segments = uri.getPathSegments();
+ Logger.e(segments.size());
+ if (segments != null && segments.size() > 2) {
+ if (uri.getPathSegments().get(2).equals("releases")) {
+ String owner = segments.get(0);
+ String repo = segments.get(1);
+ return ReleasesListActivity.getIntent(context, owner, repo);
+ }
+ return null;
+ }
+ return null;
+ }
+
/**
* https://github.com/owner/repo/issues/new
*/
diff --git a/app/src/main/java/com/fastaccess/provider/scheme/StackBuilderSchemeParser.java b/app/src/main/java/com/fastaccess/provider/scheme/StackBuilderSchemeParser.java
index 84cb25b8..2448eb6c 100644
--- a/app/src/main/java/com/fastaccess/provider/scheme/StackBuilderSchemeParser.java
+++ b/app/src/main/java/com/fastaccess/provider/scheme/StackBuilderSchemeParser.java
@@ -20,6 +20,7 @@ import com.fastaccess.ui.modules.repos.RepoPagerActivity;
import com.fastaccess.ui.modules.repos.RepoPagerMvp;
import com.fastaccess.ui.modules.repos.code.commit.details.CommitPagerActivity;
import com.fastaccess.ui.modules.repos.code.files.activity.RepoFilesActivity;
+import com.fastaccess.ui.modules.repos.code.releases.ReleasesListActivity;
import com.fastaccess.ui.modules.repos.issues.create.CreateIssueActivity;
import com.fastaccess.ui.modules.repos.issues.issue.details.IssuePagerActivity;
import com.fastaccess.ui.modules.repos.pull_requests.pull_request.details.PullRequestPagerActivity;
@@ -115,12 +116,13 @@ public class StackBuilderSchemeParser {
TaskStackBuilder pullRequestIntent = getPullRequestIntent(context, data);
TaskStackBuilder createIssueIntent = getCreateIssueIntent(context, data);
TaskStackBuilder issueIntent = getIssueIntent(context, data);
+ TaskStackBuilder releasesIntent = getReleases(context, data);
TaskStackBuilder repoIntent = getRepo(context, data);
TaskStackBuilder commit = getCommit(context, data);
TaskStackBuilder commits = getCommits(context, data);
TaskStackBuilder blob = getBlob(context, data);
Optional intentOptional = returnNonNull(userIntent, repoIssuesIntent, repoPullsIntent, pullRequestIntent, commit,
- commits, createIssueIntent, issueIntent, repoIntent, blob);
+ commits, createIssueIntent, issueIntent, releasesIntent, repoIntent, blob);
Optional empty = Optional.empty();
if (intentOptional != null && intentOptional.isPresent() && intentOptional != empty) {
return intentOptional.get();
@@ -328,7 +330,6 @@ public class StackBuilderSchemeParser {
@Nullable private static TaskStackBuilder getCreateIssueIntent(@NonNull Context context, @NonNull Uri uri) {
List segments = uri.getPathSegments();
- Logger.e(segments);
if (uri.getLastPathSegment() == null) return null;
if (segments == null || segments.size() < 3 || !uri.getLastPathSegment().equalsIgnoreCase("new")) return null;
if ("issues".equals(segments.get(2))) {
@@ -355,6 +356,23 @@ public class StackBuilderSchemeParser {
return null;
}
+ @Nullable private static TaskStackBuilder getReleases(@NonNull Context context, @NonNull Uri uri) {
+ List segments = uri.getPathSegments();
+ if (segments != null && segments.size() >= 2) {
+ if (uri.getPathSegments().get(2).equals("releases")) {
+ String owner = segments.get(0);
+ String repo = segments.get(1);
+ return TaskStackBuilder.create(context)
+ .addParentStack(MainActivity.class)
+ .addNextIntentWithParentStack(new Intent(context, MainActivity.class))
+ .addNextIntentWithParentStack(RepoPagerActivity.createIntent(context, repo, owner, RepoPagerMvp.CODE))
+ .addNextIntent(ReleasesListActivity.getIntent(context, owner, repo));
+ }
+ return null;
+ }
+ return null;
+ }
+
@Nullable private static String getGistId(@NonNull Uri uri) {
List segments = uri.getPathSegments();
return segments != null && !segments.isEmpty() ? uri.getLastPathSegment() : null;
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java b/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java
index a8637fed..0d3d82e4 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/HtmlHelper.java
@@ -2,6 +2,7 @@ package com.fastaccess.provider.timeline;
import android.content.Context;
import android.graphics.Point;
+import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.support.annotation.ColorInt;
import android.support.annotation.NonNull;
@@ -54,6 +55,8 @@ public class HtmlHelper {
boolean isDark = AppHelper.isNightMode(textView.getResources());
@ColorInt int windowBackground = isDark ? ViewHelper.getWindowBackground(textView.getContext()) :
ContextCompat.getColor(textView.getContext(), R.color.light_patch_ref_color);
+ Drawable checked = ContextCompat.getDrawable(textView.getContext(), R.drawable.ic_checkbox_small);
+ Drawable unchecked = ContextCompat.getDrawable(textView.getContext(), R.drawable.ic_checkbox_empty_small);
HtmlSpanner mySpanner = new HtmlSpanner();
mySpanner.setStripExtraWhiteSpace(true);
mySpanner.registerHandler("pre", new PreTagHandler(windowBackground, true, isDark));
@@ -67,7 +70,7 @@ public class HtmlHelper {
mySpanner.registerHandler("em", new ItalicHandler());
mySpanner.registerHandler("ul", new MarginHandler());
mySpanner.registerHandler("ol", new MarginHandler());
- mySpanner.registerHandler("li", new ListsHandler());
+ mySpanner.registerHandler("li", new ListsHandler(checked, unchecked));
mySpanner.registerHandler("u", new UnderlineHandler());
mySpanner.registerHandler("strike", new StrikethroughHandler());
mySpanner.registerHandler("ins", new UnderlineHandler());
diff --git a/app/src/main/java/com/fastaccess/provider/timeline/handler/ListsHandler.java b/app/src/main/java/com/fastaccess/provider/timeline/handler/ListsHandler.java
index 2ea4c7c0..400bb890 100644
--- a/app/src/main/java/com/fastaccess/provider/timeline/handler/ListsHandler.java
+++ b/app/src/main/java/com/fastaccess/provider/timeline/handler/ListsHandler.java
@@ -1,14 +1,23 @@
package com.fastaccess.provider.timeline.handler;
+import android.graphics.drawable.Drawable;
+import android.support.annotation.Nullable;
import android.text.SpannableStringBuilder;
import com.fastaccess.helper.Logger;
+import com.fastaccess.ui.widgets.SpannableBuilder;
import net.nightwhistler.htmlspanner.TagNodeHandler;
import org.htmlcleaner.TagNode;
-public class ListsHandler extends TagNodeHandler {
+import lombok.AllArgsConstructor;
+import lombok.NoArgsConstructor;
+
+@NoArgsConstructor @AllArgsConstructor public class ListsHandler extends TagNodeHandler {
+
+ @Nullable private Drawable checked;
+ @Nullable private Drawable unchecked;
private int getMyIndex(TagNode node) {
if (node.getParent() == null) {
@@ -35,31 +44,35 @@ public class ListsHandler extends TagNodeHandler {
}
@Override public void beforeChildren(TagNode node, SpannableStringBuilder builder) {
- TodoItems todoItems = null;
+ TodoItems todoItem = null;
if (node.getChildTags() != null && node.getChildTags().length > 0) {
- TagNode tagNode = node.getChildTags()[0];
- if (tagNode.getName() != null && "input".equalsIgnoreCase(tagNode.getName())) {
- todoItems = new TodoItems();
- todoItems.isChecked = tagNode.getAttributeByName("checked") != null;
+ for (TagNode tagNode : node.getChildTags()) {
+ Logger.e(tagNode.getName(), tagNode.getAttributes(), tagNode.getText());
+ if (tagNode.getName() != null && tagNode.getName().equals("input")) {
+ todoItem = new TodoItems();
+ todoItem.isChecked = tagNode.getAttributeByName("checked") != null;
+ break;
+ }
}
- Logger.e(tagNode.getName(), tagNode.getAttributeByName("checked"));
}
if ("ol".equals(getParentName(node))) {
builder.append("").append(String.valueOf(getMyIndex(node))).append(". ");
} else if ("ul".equals(getParentName(node))) {
- if (todoItems != null) {
- builder.append(todoItems.isChecked ? "☑ " : "☐ ");
+ if (todoItem != null) {
+ if (checked == null || unchecked == null) {
+ builder.append(todoItem.isChecked ? "☑" : "☐");
+ } else {
+ builder.append(SpannableBuilder.builder()
+ .append(todoItem.isChecked ? checked : unchecked))
+ .append(" ");
+ }
} else {
builder.append("\u2022 ");
}
}
}
- public void handleTagNode(TagNode node, SpannableStringBuilder builder, int start, int end) {
- if (builder.length() > 0 && builder.charAt(builder.length() - 1) != '\n') {
- builder.append("\n");
- }
- }
+ public void handleTagNode(TagNode node, SpannableStringBuilder builder, int start, int end) {}
static class TodoItems {
boolean isChecked;
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java
index 9cec70ba..c4a9a0d3 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/FeedsViewHolder.java
@@ -3,7 +3,6 @@ package com.fastaccess.ui.adapter.viewholder;
import android.net.Uri;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
-import android.text.Html;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
@@ -77,7 +76,7 @@ public class FeedsViewHolder extends BaseViewHolder {
spannableBuilder.bold(action != null ? action.toLowerCase() : "")
.append(eventsModel.getPayload() != null && eventsModel.getPayload().getAction() != null ? " " : "");
if (type != EventsType.WatchEvent) {
- if (type == EventsType.CreateEvent && !InputHelper.isEmpty(eventsModel.getPayload().getRefType())) {
+ if (type == EventsType.CreateEvent && !InputHelper.isEmpty(eventsModel.getPayload().getRef())) {
spannableBuilder
.bold(itemView.getResources().getString(type.getType()).toLowerCase())
.append(" ")
diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
index 7887f3e5..87471f7f 100644
--- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
+++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/TimelineCommentsViewHolder.java
@@ -8,7 +8,6 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
-import com.fastaccess.App;
import com.fastaccess.R;
import com.fastaccess.data.dao.TimelineModel;
import com.fastaccess.data.dao.model.Comment;
@@ -113,7 +112,8 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
}
name.setText(commentsModel.getUser() != null ? commentsModel.getUser().getLogin() : "Anonymous");
if (commentsModel.getCreatedAt().before(commentsModel.getUpdatedAt())) {
- date.setText(ParseDateFormat.getTimeAgo(commentsModel.getCreatedAt()) + " " + App.getInstance().getResources().getString(R.string.edited));
+ date.setText(String.format("%s %s", ParseDateFormat.getTimeAgo(commentsModel.getCreatedAt()), itemView
+ .getResources().getString(R.string.edited)));
} else {
date.setText(ParseDateFormat.getTimeAgo(commentsModel.getCreatedAt()));
}
@@ -135,6 +135,7 @@ public class TimelineCommentsViewHolder extends BaseViewHolder {
if (comment != null) {
boolean isReacted = reactionsCallback == null || reactionsCallback.isPreviouslyReacted(comment.getId(), v.getId());
boolean isCallingApi = reactionsCallback != null && reactionsCallback.isCallingApi(comment.getId(), v.getId());
+// if (isCallingApi) return;
ReactionsModel reactionsModel = comment.getReactions() != null ? comment.getReactions() : new ReactionsModel();
switch (v.getId()) {
case R.id.heart:
diff --git a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
index c06672a2..46d92444 100644
--- a/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/base/BaseActivity.java
@@ -284,14 +284,17 @@ public abstract class BaseActivity i
@Override public void showProgress(@StringRes int resId) {
-refresh.setRefreshing(true);
+ refresh.setRefreshing(true);
stateLayout.showProgress();
}
@@ -97,11 +97,6 @@ refresh.setRefreshing(true);
super.showMessage(titleRes, msgRes);
}
- private void showReload() {
- hideProgress();
- stateLayout.showReload(adapter.getItemCount());
- }
-
@NonNull @Override public GistsPresenter providePresenter() {
return new GistsPresenter();
}
@@ -121,4 +116,14 @@ refresh.setRefreshing(true);
@Override public void onClick(View view) {
onRefresh();
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/GistsListActivity.java b/app/src/main/java/com/fastaccess/ui/modules/gists/GistsListActivity.java
index a934c101..240d2843 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/GistsListActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/GistsListActivity.java
@@ -6,18 +6,18 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
import com.fastaccess.R;
import com.fastaccess.data.dao.FragmentPagerAdapterModel;
-import com.fastaccess.data.dao.model.Login;
import com.fastaccess.helper.ActivityHelper;
import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.Bundler;
import com.fastaccess.ui.adapter.FragmentsPagerAdapter;
import com.fastaccess.ui.base.BaseActivity;
+import com.fastaccess.ui.base.BaseFragment;
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
import com.fastaccess.ui.modules.gists.create.CreateGistActivity;
-import com.fastaccess.ui.modules.profile.gists.ProfileGistsFragment;
import com.fastaccess.ui.widgets.ViewPagerView;
import net.grandcentrix.thirtyinch.TiPresenter;
@@ -72,6 +72,20 @@ public class GistsListActivity extends BaseActivity {
setTitle(R.string.gists);
setupTabs();
fab.show();
+ tabs.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager) {
+ @Override public void onTabReselected(TabLayout.Tab tab) {
+ super.onTabReselected(tab);
+ onScrollTop(tab.getPosition());
+ }
+ });
+ }
+
+ @Override public void onScrollTop(int index) {
+ if (pager == null || pager.getAdapter() == null) return;
+ Fragment fragment = (BaseFragment) pager.getAdapter().instantiateItem(pager, index);
+ if (fragment instanceof BaseFragment) {
+ ((BaseFragment) fragment).onScrollTop(index);
+ }
}
private void setupTabs() {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java
index 19ceeabc..c85ee38e 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistActivity.java
@@ -7,6 +7,7 @@ import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.text.format.Formatter;
import android.view.Menu;
@@ -25,6 +26,7 @@ import com.fastaccess.helper.ViewHelper;
import com.fastaccess.provider.tasks.git.GithubActionService;
import com.fastaccess.ui.adapter.FragmentsPagerAdapter;
import com.fastaccess.ui.base.BaseActivity;
+import com.fastaccess.ui.base.BaseFragment;
import com.fastaccess.ui.modules.gists.gist.comments.GistCommentsFragment;
import com.fastaccess.ui.widgets.AvatarLayout;
import com.fastaccess.ui.widgets.FontTextView;
@@ -207,7 +209,7 @@ public class GistActivity extends BaseActivity
title.setText(gistsModel.getDisplayTitle(false, true));
detailsIcon.setVisibility(InputHelper.isEmpty(gistsModel.getDescription()) || !ViewHelper.isEllipsed(title) ? View.GONE : View.VISIBLE);
if (gistsModel.getCreatedAt().before(gistsModel.getUpdatedAt())) {
- date.setText(ParseDateFormat.getTimeAgo(gistsModel.getCreatedAt()) + " " + getString(R.string.edited));
+ date.setText(String.format("%s %s", ParseDateFormat.getTimeAgo(gistsModel.getCreatedAt()), getString(R.string.edited)));
} else {
date.setText(ParseDateFormat.getTimeAgo(gistsModel.getCreatedAt()));
}
@@ -224,6 +226,20 @@ public class GistActivity extends BaseActivity
onGistForked(getPresenter().isForked());
onGistStarred(getPresenter().isStarred());
hideShowFab();
+ tabs.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager) {
+ @Override public void onTabReselected(TabLayout.Tab tab) {
+ super.onTabReselected(tab);
+ onScrollTop(tab.getPosition());
+ }
+ });
+ }
+
+ @Override public void onScrollTop(int index) {
+ if (pager == null || pager.getAdapter() == null) return;
+ Fragment fragment = (BaseFragment) pager.getAdapter().instantiateItem(pager, index);
+ if (fragment instanceof BaseFragment) {
+ ((BaseFragment) fragment).onScrollTop(index);
+ }
}
private void hideShowFab() {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsFragment.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsFragment.java
index ef3138a1..1e854dc6 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsFragment.java
@@ -245,6 +245,11 @@ public class GistCommentsFragment extends BaseFragment impl
}
@Override public void onNavigationChanged(@MainMvp.NavigationType int navType) {
+ if (navType == MainMvp.PROFILE) {
+ getPresenter().onModuleChanged(getSupportFragmentManager(), navType);
+ bottomNavigation.setSelectedIndex(this.navType, true);
+ return;
+ }
this.navType = navType;
//noinspection WrongConstant
if (bottomNavigation.getSelectedIndex() != navType) bottomNavigation.setSelectedIndex(navType, true);
diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesFragment.java b/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesFragment.java
index f1625bb9..70d191be 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesFragment.java
@@ -92,7 +92,7 @@ public class MyIssuesFragment extends BaseFragment models) {
Logger.e(models);
ListDialogView dialogView = new ListDialogView<>();
@@ -163,32 +157,44 @@ refresh.setRefreshing(true);
}
@Override public void onHidePromptComplete() {
- if(!dismissed[0])
- new MaterialTapTargetPrompt.Builder(getActivity())
- .setTarget(itemView)
- .setPrimaryText(R.string.fork)
- .setSecondaryText(R.string.feeds_fork_hint)
- .setCaptureTouchEventOutsidePrompt(true)
- .setBackgroundColourAlpha(244)
- .setBackgroundColour(ViewHelper.getAccentColor(getContext()))
- .setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {
- @Override
- public void onHidePrompt(MotionEvent motionEvent, boolean b) {
- ActivityHelper.hideDismissHints(OrgFeedsFragment.this.getContext());
- }
+ if (!dismissed[0])
+ new MaterialTapTargetPrompt.Builder(getActivity())
+ .setTarget(itemView)
+ .setPrimaryText(R.string.fork)
+ .setSecondaryText(R.string.feeds_fork_hint)
+ .setCaptureTouchEventOutsidePrompt(true)
+ .setBackgroundColourAlpha(244)
+ .setBackgroundColour(ViewHelper.getAccentColor(getContext()))
+ .setOnHidePromptListener(new MaterialTapTargetPrompt.OnHidePromptListener() {
+ @Override
+ public void onHidePrompt(MotionEvent motionEvent, boolean b) {
+ ActivityHelper.hideDismissHints(OrgFeedsFragment.this.getContext());
+ }
- @Override
- public void onHidePromptComplete() {
+ @Override
+ public void onHidePromptComplete() {
- }
- })
- .show();
+ }
+ })
+ .show();
ActivityHelper.bringDismissAllToFront(getContext());
}
})
.setCaptureTouchEventOutsidePrompt(true)
.show();
- ActivityHelper.showDismissHints(getContext(), () -> { dismissed[0] = true; });
+ ActivityHelper.showDismissHints(getContext(), () -> {
+ dismissed[0] = true;
+ });
}
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/members/OrgMembersFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/members/OrgMembersFragment.java
index 2ce36ad7..1b4a40a9 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/members/OrgMembersFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/members/OrgMembersFragment.java
@@ -115,6 +115,11 @@ refresh.setRefreshing(true);
onRefresh();
}
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
private void showReload() {
hideProgress();
stateLayout.showReload(adapter.getItemCount());
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposFragment.java
index 5d665c46..e06811a3 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposFragment.java
@@ -118,6 +118,11 @@ refresh.setRefreshing(true);
onRefresh();
}
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
private void showReload() {
hideProgress();
stateLayout.showReload(adapter.getItemCount());
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/OrgTeamFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/OrgTeamFragment.java
index d0f98e05..a78875e5 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/OrgTeamFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/OrgTeamFragment.java
@@ -81,7 +81,7 @@ public class OrgTeamFragment extends BaseFragment getLoadMore() {
if (onLoadMore == null) {
onLoadMore = new OnLoadMore<>(getPresenter(), getArguments().getString(BundleConstant.EXTRA));
@@ -119,4 +114,14 @@ refresh.setRefreshing(true);
@Override public void onClick(View view) {
onRefresh();
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/TeamPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/TeamPagerActivity.java
index 765add10..29dd6495 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/TeamPagerActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/TeamPagerActivity.java
@@ -6,6 +6,7 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
import com.fastaccess.R;
import com.fastaccess.data.dao.FragmentPagerAdapterModel;
@@ -13,6 +14,7 @@ import com.fastaccess.helper.BundleConstant;
import com.fastaccess.helper.Bundler;
import com.fastaccess.ui.adapter.FragmentsPagerAdapter;
import com.fastaccess.ui.base.BaseActivity;
+import com.fastaccess.ui.base.BaseFragment;
import com.fastaccess.ui.base.mvp.presenter.BasePresenter;
import com.fastaccess.ui.widgets.ViewPagerView;
@@ -81,5 +83,19 @@ public class TeamPagerActivity extends BaseActivity {
tabs.setTabMode(TabLayout.MODE_FIXED);
tabs.setupWithViewPager(pager);
tabs.setPaddingRelative(0, 0, 0, 0);
+ tabs.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager) {
+ @Override public void onTabReselected(TabLayout.Tab tab) {
+ super.onTabReselected(tab);
+ onScrollTop(tab.getPosition());
+ }
+ });
+ }
+
+ @Override public void onScrollTop(int index) {
+ if (pager == null || pager.getAdapter() == null) return;
+ Fragment fragment = (BaseFragment) pager.getAdapter().instantiateItem(pager, index);
+ if (fragment instanceof BaseFragment) {
+ ((BaseFragment) fragment).onScrollTop(index);
+ }
}
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/members/TeamMembersFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/members/TeamMembersFragment.java
index 5fd77db3..eda9cd41 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/members/TeamMembersFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/teams/details/members/TeamMembersFragment.java
@@ -81,7 +81,7 @@ public class TeamMembersFragment extends BaseFragment getLoadMore() {
if (onLoadMore == null) {
onLoadMore = new OnLoadMore<>(getPresenter(), getArguments().getLong(BundleConstant.EXTRA));
@@ -120,4 +115,14 @@ refresh.setRefreshing(true);
@Override public void onClick(View view) {
onRefresh();
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewFragment.java
index 52e48b1a..e82382d4 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewFragment.java
@@ -217,6 +217,10 @@ public class ProfileOverviewFragment extends BaseFragment items);
void onInitOrgs(@Nullable List orgs);
+
+ void onUserNotFound();
}
interface Presenter extends BaseMvp.FAPresenter {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewPresenter.java
index a52a78b5..32302908 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewPresenter.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/overview/ProfileOverviewPresenter.java
@@ -61,6 +61,11 @@ class ProfileOverviewPresenter extends BasePresenter im
}
@Override public void onError(@NonNull Throwable throwable) {
+ int statusCode = RestProvider.getErrorCode(throwable);
+ if (statusCode == 404) {
+ sendToView(ProfileOverviewMvp.View::onUserNotFound);
+ return;
+ }
if (!InputHelper.isEmpty(login)) {
onWorkOffline(login);
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposFragment.java
index e78f978f..77819190 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposFragment.java
@@ -82,7 +82,7 @@ public class ProfileReposFragment extends BaseFragment getLoadMore() {
if (onLoadMore == null) {
onLoadMore = new OnLoadMore<>(getPresenter(), getArguments().getString(BundleConstant.EXTRA));
@@ -121,4 +116,14 @@ refresh.setRefreshing(true);
@Override public void onClick(View view) {
onRefresh();
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredFragment.java b/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredFragment.java
index 5af5e0ee..7a82c0e9 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredFragment.java
@@ -82,7 +82,7 @@ public class ProfileStarredFragment extends BaseFragment getLoadMore() {
if (onLoadMore == null) {
onLoadMore = new OnLoadMore<>(getPresenter(), getArguments().getString(BundleConstant.EXTRA));
@@ -121,4 +116,14 @@ refresh.setRefreshing(true);
@Override public void onClick(View view) {
onRefresh();
}
+
+ @Override public void onScrollTop(int index) {
+ super.onScrollTop(index);
+ if (recycler != null) recycler.scrollToPosition(0);
+ }
+
+ private void showReload() {
+ hideProgress();
+ stateLayout.showReload(adapter.getItemCount());
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java
index 768629a3..7632c923 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerActivity.java
@@ -300,11 +300,15 @@ public class RepoPagerActivity extends BaseActivity 0) {
tabTwo.setText(getString(R.string.comments) + " (" + commit.getGitCommit().getCommentCount() + ")");
}
+ tabs.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(pager) {
+ @Override public void onTabReselected(TabLayout.Tab tab) {
+ super.onTabReselected(tab);
+ onScrollTop(tab.getPosition());
+ }
+ });
+ }
+
+ @Override public void onScrollTop(int index) {
+ if (pager == null || pager.getAdapter() == null) return;
+ Fragment fragment = (BaseFragment) pager.getAdapter().instantiateItem(pager, index);
+ if (fragment instanceof BaseFragment) {
+ ((BaseFragment) fragment).onScrollTop(index);
+ }
}
@Override public void onFinishActivity() {
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java
index 55a4f4ef..77b4bc95 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsFragments.java
@@ -273,6 +273,11 @@ public class CommitCommentsFragments extends BaseFragment
return getReactionsProvider().isCallingApi(id, vId);
}
- private ReactionsProvider getReactionsProvider() {
+ @NonNull private ReactionsProvider getReactionsProvider() {
if (reactionsProvider == null) {
reactionsProvider = new ReactionsProvider();
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/RepoPullRequestPagerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/RepoPullRequestPagerFragment.java
index 2dffbada..3b4964a0 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/RepoPullRequestPagerFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/RepoPullRequestPagerFragment.java
@@ -4,6 +4,7 @@ import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.design.widget.TabLayout;
+import android.support.v4.app.Fragment;
import android.view.View;
import android.widget.TextView;
@@ -38,7 +39,6 @@ public class RepoPullRequestPagerFragment extends BaseFragment counts = new HashSet<>();
-
public static RepoPullRequestPagerFragment newInstance(@NonNull String repoId, @NonNull String login) {
RepoPullRequestPagerFragment view = new RepoPullRequestPagerFragment();
view.setArguments(Bundler.start()
@@ -62,6 +62,20 @@ public class RepoPullRequestPagerFragment extends BaseFragment getAdapter() {
if (adapter == null) adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, getPresenter().getHints());
return adapter;
}
+
+ private void setupTab() {
+ for (TabsCountStateModel model : tabsCountSet) {
+ int index = model.getTabIndex();
+ int count = model.getCount();
+ TextView textView = ViewHelper.getTabTextView(tabs, index);
+ if (index == 0) {
+ textView.setText(String.format("%s(%s)", getString(R.string.repos), numberFormat.format(count)));
+ } else if (index == 1) {
+ textView.setText(String.format("%s(%s)", getString(R.string.users), numberFormat.format(count)));
+ } else if (index == 2) {
+ textView.setText(String.format("%s(%s)", getString(R.string.issues), numberFormat.format(count)));
+ } else if (index == 3) {
+ textView.setText(String.format("%s(%s)", getString(R.string.code), numberFormat.format(count)));
+ }
+ }
+ }
}
diff --git a/app/src/main/java/com/fastaccess/ui/modules/search/code/SearchCodeFragment.java b/app/src/main/java/com/fastaccess/ui/modules/search/code/SearchCodeFragment.java
index e86ba414..de765ef1 100644
--- a/app/src/main/java/com/fastaccess/ui/modules/search/code/SearchCodeFragment.java
+++ b/app/src/main/java/com/fastaccess/ui/modules/search/code/SearchCodeFragment.java
@@ -134,17 +134,15 @@ public class SearchCodeFragment extends BaseFragment
+
+
diff --git a/app/src/main/res/drawable/ic_checkbox_small.xml b/app/src/main/res/drawable/ic_checkbox_small.xml
new file mode 100644
index 00000000..9a7bf25c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_checkbox_small.xml
@@ -0,0 +1,9 @@
+
+
+
diff --git a/build.gradle b/build.gradle
index ca8f8dc7..280dc4ec 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,11 +1,7 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
- ext.kotlin_version = '1.1.2-4'
ext {
- // See http://stackoverflow.com/questions/27372828/access-project-extra-properties-in-buildscript-closure
- taskRequests = getGradle().getStartParameter().getTaskRequests().toString()
-
butterKnifeVersion = '8.5.1'
icepickVersion = '3.2.0'
lombokVersion = '1.12.6'
@@ -18,6 +14,7 @@ buildscript {
assertjVersion = '2.5.0'
espresseVersion = '2.2.2'
requery = '1.3.2'
+// kotlin_version = '1.1.2-4'
}
repositories {
@@ -32,7 +29,7 @@ buildscript {
}
classpath 'com.novoda:gradle-build-properties-plugin:0.3'
classpath 'com.dicedmelon.gradle:jacoco-android:0.1.1'
- classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
+// classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}