diff --git a/.github_changelog_generator b/.github_changelog_generator index 3f1803de..6873c8f7 100644 --- a/.github_changelog_generator +++ b/.github_changelog_generator @@ -1,4 +1,4 @@ -since-tag=4.5.5 +since-tag=4.5.6 issues-wo-labels=false issue-line-labels=true exclude-labels=Type: Invalid,Type: Duplicate,Type: Unknown,Type: Question,Type: No API,Type: Work as Intended,Type: Can't Reproduce,Status: Won't Fix diff --git a/.gitignore b/.gitignore index 0c77a124..1ec699f2 100644 --- a/.gitignore +++ b/.gitignore @@ -8,4 +8,5 @@ /app/google-services.json /app/build/ /app/src/main/res/values/secrets.xml -/app/fastaccess-key \ No newline at end of file +/app/fastaccess-key +/changelog_generator diff --git a/app/build.gradle b/app/build.gradle index fabf90b3..39695c62 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -29,8 +29,8 @@ android { applicationId "com.fastaccess.github" minSdkVersion 21 targetSdkVersion 27 - versionCode 461 - versionName "4.6.1" + versionCode 462 + versionName "4.6.2" buildConfigString "GITHUB_CLIENT_ID", (buildProperties.secrets['github_client_id'] | buildProperties.notThere['github_client_id']).string buildConfigString "GITHUB_SECRET", (buildProperties.secrets['github_secret'] | buildProperties.notThere['github_secret']).string buildConfigString "IMGUR_CLIENT_ID", (buildProperties.secrets['imgur_client_id'] | buildProperties.notThere['imgur_client_id']).string diff --git a/app/src/main/java/com/fastaccess/data/service/UserRestService.java b/app/src/main/java/com/fastaccess/data/service/UserRestService.java index 520d5806..a3d2289d 100644 --- a/app/src/main/java/com/fastaccess/data/service/UserRestService.java +++ b/app/src/main/java/com/fastaccess/data/service/UserRestService.java @@ -14,6 +14,7 @@ import io.reactivex.Observable; import retrofit2.Response; import retrofit2.http.DELETE; import retrofit2.http.GET; +import retrofit2.http.Headers; import retrofit2.http.PUT; import retrofit2.http.Path; import retrofit2.http.Query; @@ -66,4 +67,16 @@ public interface UserRestService { Observable> unfollowUser(@Path("username") @NonNull String username); @GET Observable getContributions(@Url String url); + + @GET("user/blocks/{username}") + @Headers("Accept: application/vnd.github.giant-sentry-fist-preview+json") + Observable> isUserBlocked(@Path("username") @NonNull String username); + + @PUT("user/blocks/{username}") + @Headers("Accept: application/vnd.github.giant-sentry-fist-preview+json") + Observable> blockUser(@Path("username") @NonNull String username); + + @DELETE("user/blocks/{username}") + @Headers("Accept: application/vnd.github.giant-sentry-fist-preview+json") + Observable> unBlockUser(@Path("username") @NonNull String username); } diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java index b8faac85..8bd68e0d 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/IssueDetailsViewHolder.java @@ -220,7 +220,7 @@ public class IssueDetailsViewHolder extends BaseViewHolder { owner.setVisibility(View.VISIBLE); owner.setText(R.string.owner); } else { - owner.setText(null); + owner.setText(""); owner.setVisibility(View.GONE); } if (reactionsModel != null) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java index e29faf00..72700d9e 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/ReviewCommentsViewHolder.java @@ -150,7 +150,7 @@ public class ReviewCommentsViewHolder extends BaseViewHolder owner.setVisibility(View.VISIBLE); owner.setText(R.string.original_poster); } else { - owner.setText(null); + owner.setText(""); owner.setVisibility(View.GONE); } } 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 c18914dd..f34e5772 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 @@ -162,14 +162,14 @@ public class TimelineCommentsViewHolder extends BaseViewHolder { owner.setVisibility(View.VISIBLE); owner.setText(R.string.original_poster); } else { - owner.setText(null); + owner.setText(""); owner.setVisibility(View.GONE); } } } } else { avatar.setUrl(null, null, false, false); - name.setText(null); + name.setText(""); } if (!InputHelper.isEmpty(commentsModel.getPath()) && commentsModel.getPosition() > 0) { pathText.setVisibility(View.VISIBLE); 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 08d1ea57..835d90ce 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 @@ -307,7 +307,7 @@ public class GistActivity extends BaseActivity } @SuppressWarnings("ConstantConditions") @Override public void onClearEditText() { - if (commentEditorFragment != null && commentEditorFragment.commentText != null) commentEditorFragment.commentText.setText(null); + if (commentEditorFragment != null && commentEditorFragment.commentText != null) commentEditorFragment.commentText.setText(""); } @NonNull @Override public ArrayList getNamesToTag() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerActivity.java index f1f215f0..33305db5 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerActivity.java @@ -268,7 +268,7 @@ public class CommitPagerActivity extends BaseActivity getNamesToTag() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java index 43f81a02..1b121fec 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/create/CreateIssueActivity.java @@ -396,7 +396,7 @@ public class CreateIssueActivity extends BaseActivity getNamesToTag() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java index 74496876..fab18064 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerActivity.java @@ -477,7 +477,7 @@ public class PullRequestPagerActivity extends BaseActivity getNamesToTag() { diff --git a/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java index d068cf18..454a33c4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/user/UserPagerActivity.java @@ -25,6 +25,7 @@ import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; import com.fastaccess.helper.ViewHelper; import com.fastaccess.provider.scheme.LinkParserHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; @@ -117,8 +118,12 @@ public class UserPagerActivity extends BaseActivity implements UserPagerMvp.Presenter { @com.evernote.android.state.State int isMember = -1; + @com.evernote.android.state.State boolean isUserBlocked; + @com.evernote.android.state.State boolean isUserBlockedRequested; + + @Override public void onCheckBlocking(@NonNull String login) { + makeRestCall(RestProvider.getUserService(isEnterprise()).isUserBlocked(login), + booleanResponse -> sendToView(view -> { + isUserBlockedRequested = true; + isUserBlocked = booleanResponse.code() == 204; + view.onInvalidateMenu(); + })); + } @Override public void checkOrgMembership(@NonNull String org) { makeRestCall(RestProvider.getOrgService(isEnterprise()).isMember(org, Login.getUser().getLogin()), @@ -22,4 +33,24 @@ import lombok.Getter; view.onInitOrg(isMember == 1); })); } + + @Override public void onBlockUser(@NonNull String login) { + if (isUserBlocked()) { + onUnblockUser(login); + } else { + makeRestCall(RestProvider.getUserService(isEnterprise()).blockUser(login), + booleanResponse -> sendToView(view -> { + isUserBlocked = true; + view.onUserBlocked(); + })); + } + } + + @Override public void onUnblockUser(@NonNull String login) { + makeRestCall(RestProvider.getUserService(isEnterprise()).unBlockUser(login), + booleanResponse -> sendToView(view -> { + isUserBlocked = false; + view.onUserUnBlocked(); + })); + } } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BottomPaddingDecoration.java b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BottomPaddingDecoration.java index 056f5a85..8a1ab7d2 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BottomPaddingDecoration.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BottomPaddingDecoration.java @@ -35,7 +35,14 @@ class BottomPaddingDecoration extends RecyclerView.ItemDecoration { super.getItemOffsets(outRect, view, parent, state); int dataSize = state.getItemCount(); int position = parent.getChildAdapterPosition(view); - if (parent.getLayoutManager() instanceof LinearLayoutManager) { + if (parent.getLayoutManager() instanceof GridLayoutManager) { + GridLayoutManager grid = (GridLayoutManager) parent.getLayoutManager(); + if ((dataSize - position) <= grid.getSpanCount()) { + outRect.set(0, 0, 0, bottomPadding); + } else { + outRect.set(0, 0, 0, 0); + } + } else if (parent.getLayoutManager() instanceof LinearLayoutManager) { if (dataSize > 0 && position == dataSize - 1) { outRect.set(0, 0, 0, bottomPadding); } else { @@ -48,13 +55,6 @@ class BottomPaddingDecoration extends RecyclerView.ItemDecoration { } else { outRect.set(0, 0, 0, 0); } - } else if (parent.getLayoutManager() instanceof GridLayoutManager) { - GridLayoutManager grid = (GridLayoutManager) parent.getLayoutManager(); - if ((dataSize - position) <= grid.getSpanCount()) { - outRect.set(0, 0, 0, bottomPadding); - } else { - outRect.set(0, 0, 0, 0); - } } } } \ No newline at end of file diff --git a/app/src/main/res/menu/share_menu.xml b/app/src/main/res/menu/share_menu.xml index 8e417946..fdac78bc 100644 --- a/app/src/main/res/menu/share_menu.xml +++ b/app/src/main/res/menu/share_menu.xml @@ -2,6 +2,13 @@ + +

FastHub changelog

-

Version 4.6.0(Starred Gists) +

Version 4.6.2(Block/Unblock Users)

Please report the issues in FastHub repo instead, by opening the Drawer Menu and clicking on “Report an Issue” PLEASE USE IT.

+

Implemented enhancements:

+
    +
  • [Feature request] Block or report user #1230
  • +
  • [README] GPLv3 Badge Added #1409 (BTaskaya) +
  • +
+

Fixed bugs:

+
    +
  • Comment submition error #1419
  • +
  • Incorrect url when sharing wiki #1417
  • +

Closed issues:

    -
  • Handle Issues and Prs search urls #1394
  • -
  • Format persists when pasting text in search field #1393
  • -
  • View issues with embedded image crashes the app #1392
  • -
  • Can’t scroll down on a repo’s README when my phone is in Battery Saver mode #1390
  • -
  • Opening Label links not working properly. #1389
  • -
  • tool #1388
  • -
  • Download Unsuccessful #1387
  • -
  • Profile photo is not updated #1385
  • -
  • Following is missing #1384
  • -
  • Purchasing pro doesn’t enable pro features #1383
  • -
  • [Request Feature] Chat for teams #1382
  • -
  • Crashes when trying to edit issues #1381
  • -
  • The app crashes when trying to edit an issue #1380
  • -
  • Scroll Area Height in Code View #1378
  • -
  • Can’t see organization. #1377
  • -
  • When reviewing a PR, I cannot choose whether to approve #1376
  • -
  • [feature request] sharing repo/wiki pages #1375
  • -
  • Clarification on Kotlin migration #1373
  • -
  • ‘Backup’ creates a json file that is greyed out when trying to restore #1372
  • -
  • Allow to pin searches #1371
  • -
  • Default issues header update #1369
  • -
  • Migrate horizontal progressbar somewhere else while loading README.md #1368
  • -
  • Pictures are not shown in mk table #1366
  • -
  • Overlapping pictures in md table #1365
  • -
  • Issues are shown twice #1364
  • -
  • Koshosh #1363
  • -
  • Enable opening URLs in an external browser #1362
  • -
  • Click Feeds button when in same view to scroll to top #1360
  • -
  • test #1359
  • -
  • Labels don’t work at all #1358
  • -
  • Can’t see my organization nor norbky organization repositories #1357
  • -
  • Reaction button clickable area #1356
  • -
  • LICENSE template suggestion #1355
  • -
  • Can’t add/view images in issue comments #1354
  • -
  • Notification on wear is shown #1353
  • -
  • Copy line specific urls #1352
  • -
  • Improve behaviour at launch #1350
  • -
  • Alfarizie #1349
  • -
  • Remove branding from comments for pro users. #1346
  • -
  • Change log won’t completely go away #1345
  • -
  • DL always fail #1344
  • -
  • Downloads won’t open #1342
  • -
  • Back button goes too far #1340
  • -
  • Missing translations #1338
  • -
  • C Syntex is not Highlighted #1337
  • -
  • Opening issue on k0shk0sh/fasthub: model not detected #1336
  • -
  • Resize of filter window #1335
  • -
  • Typo in Playstore description #1334
  • -
  • Ability to create (or initialize repository in app) #1333
  • -
  • [ poll ] Make some of GitHub terms translatable #1329
  • -
  • Opening issue #448 on openhab/openhab.android crashes app #1280
  • +
  • I believe your BottomPaddingDecoration is flawed #1434

Merged pull requests:

What's left for FastHub?

diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 1e12338e..06a0cd8a 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -595,4 +595,6 @@ Disable loading image while on data plan This issue will be submitted to FastHub\'s repo in GitHub Block + User blocked + User unlocked \ No newline at end of file diff --git a/build.gradle b/build.gradle index de858c6d..d5ede6b9 100644 --- a/build.gradle +++ b/build.gradle @@ -23,7 +23,7 @@ buildscript { maven { url 'https://maven.fabric.io/public' } } dependencies { - classpath 'com.android.tools.build:gradle:3.1.0-alpha07' + classpath 'com.android.tools.build:gradle:3.1.0-alpha08' classpath 'com.google.gms:google-services:3.0.0' classpath 'com.novoda:gradle-build-properties-plugin:0.3' classpath 'com.dicedmelon.gradle:jacoco-android:0.1.2'