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 83da466b..c9c642dd 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java @@ -69,7 +69,7 @@ public class FragmentPagerAdapterModel { @NonNull String defaultBranch) { return Stream.of(new FragmentPagerAdapterModel(context.getString(R.string.readme), ViewerView.newInstance(url, true)), new FragmentPagerAdapterModel(context.getString(R.string.files), RepoFilePathView.newInstance(login, repoId, null, defaultBranch)), - new FragmentPagerAdapterModel(context.getString(R.string.commits), RepoCommitsView.newInstance(repoId, login)), + new FragmentPagerAdapterModel(context.getString(R.string.commits), RepoCommitsView.newInstance(repoId, login, defaultBranch)), new FragmentPagerAdapterModel(context.getString(R.string.releases), RepoReleasesView.newInstance(repoId, login)), new FragmentPagerAdapterModel(context.getString(R.string.contributors), RepoContributorsView.newInstance(repoId, login))) .collect(Collectors.toList()); diff --git a/app/src/main/java/com/fastaccess/data/service/RepoService.java b/app/src/main/java/com/fastaccess/data/service/RepoService.java index 3898bb4e..bdc8323c 100644 --- a/app/src/main/java/com/fastaccess/data/service/RepoService.java +++ b/app/src/main/java/com/fastaccess/data/service/RepoService.java @@ -35,93 +35,94 @@ import rx.Observable; public interface RepoService { - @GET @Headers("Accept: application/vnd.github.VERSION.raw") + @NonNull @GET @Headers("Accept: application/vnd.github.VERSION.raw") Observable getFileAsStream(@Url String url); - @POST("markdown") + @NonNull @POST("markdown") Observable convertReadmeToHtml(@Body MarkdownModel model); - @GET("repos/{login}/{repoId}") @Headers({"Accept: application/vnd.github.drax-preview+json"}) + @NonNull @GET("repos/{login}/{repoId}") @Headers({"Accept: application/vnd.github.drax-preview+json"}) Observable getRepo(@Path("login") String login, @Path("repoId") String repoId); - @DELETE("repos/{login}/{repoId}") + @NonNull @DELETE("repos/{login}/{repoId}") Observable> deleteRepo(@Path("login") String login, @Path("repoId") String repoId); - @GET @Headers("Accept: application/vnd.github.html") + @NonNull @GET @Headers("Accept: application/vnd.github.html") Observable getReadmeHtml(@NonNull @Url String url); - @GET("user/starred/{owner}/{repo}") + @NonNull @GET("user/starred/{owner}/{repo}") Observable> checkStarring(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); - @PUT("user/starred/{owner}/{repo}") + @NonNull @PUT("user/starred/{owner}/{repo}") Observable> starRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); - @DELETE("user/starred/{owner}/{repo}") + @NonNull @DELETE("user/starred/{owner}/{repo}") Observable> unstarRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); - @POST("/repos/{owner}/{repo}/forks") + @NonNull @POST("/repos/{owner}/{repo}/forks") Observable forkRepo(@NonNull @Path("owner") String login, @NonNull @Path("repo") String repoId); - @GET("user/subscriptions/{owner}/{repo}") + @NonNull @GET("user/subscriptions/{owner}/{repo}") Observable> isWatchingRepo(@Path("owner") String owner, @Path("repo") String repo); - @PUT("user/subscriptions/{owner}/{repo}") + @NonNull @PUT("user/subscriptions/{owner}/{repo}") Observable> watchRepo(@Path("owner") String owner, @Path("repo") String repo); - @DELETE("user/subscriptions/{owner}/{repo}") + @NonNull @DELETE("user/subscriptions/{owner}/{repo}") Observable> unwatchRepo(@Path("owner") String owner, @Path("repo") String repo); - @GET("repos/{owner}/{repo}/commits") - Observable> getCommits(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); + @NonNull @GET("repos/{owner}/{repo}/commits/{branch}") + Observable> getCommits(@Path("owner") String owner, @Path("repo") String repo, + @NonNull @Path("branch") String branch, @Query("page") int page); - @GET("repos/{owner}/{repo}/releases") + @NonNull @GET("repos/{owner}/{repo}/releases") @Headers("Accept: application/vnd.github.VERSION.full+json") Observable> getReleases(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); - @GET("repos/{owner}/{repo}/contributors") + @NonNull @GET("repos/{owner}/{repo}/contributors") Observable> getContributors(@Path("owner") String owner, @Path("repo") String repo, @Query("page") int page); - @GET("repos/{owner}/{repo}/commits/{sha}") + @NonNull @GET("repos/{owner}/{repo}/commits/{sha}") Observable getCommit(@Path("owner") String owner, @Path("repo") String repo, @Path("sha") String sha); - @GET("repos/{owner}/{repo}/commits/{sha}/comments") + @NonNull @GET("repos/{owner}/{repo}/commits/{sha}/comments") Observable> getCommitComments(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String ref, @Query("page") int page); - @POST("repos/{owner}/{repo}/commits/{sha}/comments") + @NonNull @POST("repos/{owner}/{repo}/commits/{sha}/comments") @Headers("Accept: application/vnd.github.VERSION.full+json") Observable postCommitComment(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("sha") String ref, @Body CommentRequestModel model); - @PATCH("repos/{owner}/{repo}/comments/{id}") + @NonNull @PATCH("repos/{owner}/{repo}/comments/{id}") @Headers("Accept: application/vnd.github.VERSION.full+json") Observable editCommitComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id, @Body CommentRequestModel body); - @DELETE("repos/{owner}/{repo}/comments/{id}") + @NonNull @DELETE("repos/{owner}/{repo}/comments/{id}") Observable> deleteComment(@Path("owner") String owner, @Path("repo") String repo, @Path("id") long id); - @GET("repos/{owner}/{repo}/contents/{path}") + @NonNull @GET("repos/{owner}/{repo}/contents/{path}") Observable> getRepoFiles(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("path") String path, @NonNull @Query("ref") String ref); - @GET("repos/{owner}/{repo}/labels") + @NonNull @GET("repos/{owner}/{repo}/labels") Observable> getLabels(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); - @GET("repos/{owner}/{repo}/collaborators/{username}") + @NonNull @GET("repos/{owner}/{repo}/collaborators/{username}") Observable> isCollaborator(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo, @NonNull @Path("username") String username); - @GET("repos/{owner}/{repo}/branches") + @NonNull @GET("repos/{owner}/{repo}/branches") Observable> getBranches(@NonNull @Path("owner") String owner, @NonNull @Path("repo") String repo); - @GET("repos/{owner}/{repo}/milestones") + @NonNull @GET("repos/{owner}/{repo}/milestones") Observable> getMilestones(@Path("owner") String owner, @Path("repo") String repo); - @POST("repos/{owner}/{repo}/milestones") + @NonNull @POST("repos/{owner}/{repo}/milestones") Observable createMilestone(@Path("owner") String owner, @Path("repo") String repo, @Body CreateMilestoneModel create); - @GET("repos/{owner}/{repo}/assignees") + @NonNull @GET("repos/{owner}/{repo}/assignees") Observable> getAssignees(@Path("owner") String owner, @Path("repo") String repo); } diff --git a/app/src/main/java/com/fastaccess/helper/PrefGetter.java b/app/src/main/java/com/fastaccess/helper/PrefGetter.java index ddb0924a..219a0337 100644 --- a/app/src/main/java/com/fastaccess/helper/PrefGetter.java +++ b/app/src/main/java/com/fastaccess/helper/PrefGetter.java @@ -98,4 +98,8 @@ public class PrefGetter { } return 0; } + + public static boolean isTwiceBackButtonDisabled() { + return PrefHelper.getBoolean("back_button"); + } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/MainView.java b/app/src/main/java/com/fastaccess/ui/modules/main/MainView.java index ca76a774..54f39c4a 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/MainView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/MainView.java @@ -130,14 +130,25 @@ public class MainView extends BaseActivity implemen } @Override public void onBackPressed() { + boolean clickTwichToExit = !PrefGetter.isTwiceBackButtonDisabled(); if (drawerLayout != null) { if (getPresenter().canBackPress(drawerLayout)) { - if (canExit()) super.onBackPressed(); + superOnBackPressed(clickTwichToExit); } else { drawerLayout.closeDrawer(GravityCompat.START); } } else { - if (canExit()) super.onBackPressed(); + superOnBackPressed(clickTwichToExit); + } + } + + private void superOnBackPressed(boolean clickTwichToExit) { + if (clickTwichToExit) { + if (canExit()) { + super.onBackPressed(); + } + } else { + super.onBackPressed(); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java index aa1b0f2f..4e3818fd 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerMvp.java @@ -1,17 +1,21 @@ package com.fastaccess.ui.modules.repos.code; +import android.support.annotation.NonNull; + import com.fastaccess.ui.base.mvp.BaseMvp; /** * Created by Kosh on 31 Dec 2016, 1:35 AM */ -interface RepoCodePagerMvp { +public interface RepoCodePagerMvp { interface View extends BaseMvp.FAView { boolean canPressBack(); void onBackPressed(); + + void onBranchChanged(@NonNull String branch); } interface Presenter extends BaseMvp.FAPresenter {} diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java index 5e7db2ee..e3e97f5d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/RepoCodePagerView.java @@ -14,6 +14,7 @@ import com.fastaccess.helper.Bundler; import com.fastaccess.helper.InputHelper; import com.fastaccess.ui.adapter.FragmentsPagerAdapter; import com.fastaccess.ui.base.BaseFragment; +import com.fastaccess.ui.modules.repos.code.commit.RepoCommitsView; import com.fastaccess.ui.modules.repos.code.files.paths.RepoFilePathView; import com.fastaccess.ui.widgets.ViewPagerView; @@ -77,4 +78,13 @@ public class RepoCodePagerView extends BaseFragment getCommits(); void onWorkOffline(); + + void onBranchChanged(@NonNull String branch); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java index b6b89ec9..0dd440c3 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsPresenter.java @@ -3,11 +3,13 @@ package com.fastaccess.ui.modules.repos.code.commit; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.text.TextUtils; import android.view.View; import com.fastaccess.data.dao.CommitModel; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.InputHelper; +import com.fastaccess.helper.Logger; import com.fastaccess.helper.RxHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.ui.base.mvp.BaseMvp; @@ -16,8 +18,6 @@ import com.fastaccess.ui.modules.repos.code.commit.details.CommitPagerView; import java.util.ArrayList; -import rx.Observable; - /** * Created by Kosh on 03 Dec 2016, 3:48 PM */ @@ -27,6 +27,7 @@ class RepoCommitsPresenter extends BasePresenter implements private ArrayList commits = new ArrayList<>(); private String login; private String repoId; + private String branch; private int page; private int previousTotal; private int lastPage = Integer.MAX_VALUE; @@ -63,7 +64,7 @@ class RepoCommitsPresenter extends BasePresenter implements return; } if (repoId == null || login == null) return; - makeRestCall(RestProvider.getRepoService().getCommits(login, repoId, page), + makeRestCall(RestProvider.getRepoService().getCommits(login, repoId, branch, page), response -> { lastPage = response.getLast(); if (getCurrentPage() == 1) { @@ -78,6 +79,8 @@ class RepoCommitsPresenter extends BasePresenter implements @Override public void onFragmentCreated(@NonNull Bundle bundle) { repoId = bundle.getString(BundleConstant.ID); login = bundle.getString(BundleConstant.EXTRA); + branch = bundle.getString(BundleConstant.EXTRA_TWO); + Logger.e(branch); if (!InputHelper.isEmpty(login) && !InputHelper.isEmpty(repoId)) { onCallApi(1, null); } @@ -99,6 +102,13 @@ class RepoCommitsPresenter extends BasePresenter implements } } + @Override public void onBranchChanged(@NonNull String branch) { + if (!TextUtils.equals(branch, this.branch)) { + this.branch = branch; + onCallApi(1, null); + } + } + @Override public void onItemClick(int position, View v, CommitModel item) { CommitPagerView.createIntentForOffline(v.getContext(), item); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java index 5dab54df..645fd37f 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/RepoCommitsView.java @@ -29,11 +29,12 @@ public class RepoCommitsView extends BaseFragmentDue On No Assignees This + Commits has been switched to the selected branch. + General Settings + Change the background notification task time + Background Notification Sync + Every + Behavior + Disable RecyclerView animation. + RecylerView Animation + Disable pressing the back button twice to exit FastHub. + Back Button Behavior diff --git a/app/src/main/res/xml/fasthub_settings.xml b/app/src/main/res/xml/fasthub_settings.xml index e6f151b3..68636a0a 100644 --- a/app/src/main/res/xml/fasthub_settings.xml +++ b/app/src/main/res/xml/fasthub_settings.xml @@ -9,14 +9,24 @@ android:entries="@array/notification_duration" android:entryValues="@array/notification_duration" android:key="notificationTime" - android:summary="Change the background notification task time" - android:title="Background Notification Sync"/> + android:summary="@string/background_job_summary" + android:title="@string/background_job_title"/> + + + + + android:summary="@string/recycler_view_animation_summary" + android:title="@string/recycler_view_animation_title"/> + +