diff --git a/app/src/debug/res/values/secrets.xml b/app/src/debug/res/values/secrets.xml index e4bfb611..593f12ec 100644 --- a/app/src/debug/res/values/secrets.xml +++ b/app/src/debug/res/values/secrets.xml @@ -9,4 +9,5 @@ android.test.purchased android.test.purchased android.test.purchased + fasthub_pro \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java b/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java index 147a2653..b297cfba 100644 --- a/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java +++ b/app/src/main/java/com/fastaccess/data/dao/CommitFileChanges.java @@ -10,6 +10,7 @@ import com.annimon.stream.Stream; import java.util.ArrayList; import java.util.List; +import io.reactivex.Observable; import lombok.Getter; import lombok.Setter; @@ -24,23 +25,30 @@ import lombok.Setter; public CommitFileChanges() {} + public static Observable constructToObservable(@Nullable List files) { + if (files == null || files.isEmpty()) return Observable.empty(); + return Observable.fromIterable(files).map(CommitFileChanges::getCommitFileChanges); + } + @NonNull public static List construct(@Nullable List files) { if (files == null || files.isEmpty()) { return new ArrayList<>(); } return Stream.of(files) - .map(m -> { - CommitFileChanges model = new CommitFileChanges(); - model.setLinesModel(CommitLinesModel.getLines(m.getPatch())); - if (m.getPatch() != null) { - m.setPatch("fake"); - } - model.setCommitFileModel(m); - return model; - }) + .map(CommitFileChanges::getCommitFileChanges) .toList(); } + @NonNull private static CommitFileChanges getCommitFileChanges(CommitFileModel m) { + CommitFileChanges model = new CommitFileChanges(); + model.setLinesModel(CommitLinesModel.getLines(m.getPatch())); + if (m.getPatch() != null) { + m.setPatch("fake"); + } + model.setCommitFileModel(m); + return model; + } + @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java index 9d7d70cf..ad513ba0 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/GroupedReviewsViewHolder.java @@ -2,8 +2,6 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.transition.ChangeBounds; -import android.support.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import android.widget.LinearLayout; @@ -119,9 +117,6 @@ public class GroupedReviewsViewHolder extends BaseViewHolder impl } private void onToggle(boolean expanded, boolean animate) { - if (animate) { - TransitionManager.beginDelayedTransition(viewGroup, new ChangeBounds()); - } if (!expanded) { minimized.setVisibility(View.GONE); patch.setText(""); diff --git a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java index 7f7dd337..6bb2d56b 100644 --- a/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java +++ b/app/src/main/java/com/fastaccess/ui/adapter/viewholder/PullRequestFilesViewHolder.java @@ -2,15 +2,13 @@ package com.fastaccess.ui.adapter.viewholder; import android.support.annotation.NonNull; import android.support.annotation.Nullable; -import android.support.transition.ChangeBounds; -import android.support.transition.TransitionManager; import android.view.View; import android.view.ViewGroup; import com.fastaccess.R; +import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.data.dao.CommitFileModel; import com.fastaccess.data.dao.CommitLinesModel; -import com.fastaccess.data.dao.CommitFileChanges; import com.fastaccess.helper.Logger; import com.fastaccess.ui.adapter.CommitLinesAdapter; import com.fastaccess.ui.adapter.callback.OnToggleView; @@ -98,9 +96,6 @@ public class PullRequestFilesViewHolder extends BaseViewHolder items) { - stateLayout.hideReload(); - if (items == null || items.isEmpty()) { - adapter.clear(); - return; + hideProgress(); + if (items != null) { + adapter.insertItems(items); } - adapter.insertItems(items); } @Override public void onCommentAdded(@NonNull Comment newComment) { @@ -84,6 +82,15 @@ public class CommitFilesFragment extends BaseFragment items); void onCommentAdded(@NonNull Comment newComment); + + void clearAdapter(); } interface Presenter extends BaseMvp.FAPresenter, BaseViewHolder.OnItemClickListener { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java index 890e59ac..ee202c3f 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/files/CommitFilesPresenter.java @@ -20,6 +20,7 @@ import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.InputHelper; import com.fastaccess.provider.rest.RestProvider; +import com.fastaccess.ui.base.mvp.BaseMvp; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; import com.fastaccess.ui.modules.code.CodeViewerActivity; @@ -76,7 +77,8 @@ class CommitFilesPresenter extends BasePresenter implements if (commitFiles != null) { manageObservable(Observable.just(commitFiles) .map(CommitFileChanges::construct) - .doFinally(() -> CommitFilesSingleton.getInstance().clear()) + .doOnSubscribe(disposable -> sendToView(CommitFilesMvp.View::clearAdapter)) + .doFinally(() -> sendToView(BaseMvp.FAView::hideProgress)) .doOnNext(commitFileChanges -> sendToView(view -> view.onNotifyAdapter(commitFileChanges)))); } @@ -104,4 +106,9 @@ class CommitFilesPresenter extends BasePresenter implements nameParser.getName(), sha, commentRequestModel), newComment -> sendToView(view -> view.onCommentAdded(newComment))); } } + + @Override protected void onDestroy() { + CommitFilesSingleton.getInstance().clear(); + super.onDestroy(); + } } 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 4516b0ac..f8de3d22 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 @@ -21,6 +21,7 @@ import com.fastaccess.data.dao.FragmentPagerAdapterModel; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MilestoneModel; import com.fastaccess.data.dao.ReviewRequestModel; +import com.fastaccess.data.dao.model.Login; import com.fastaccess.data.dao.model.PullRequest; import com.fastaccess.data.dao.model.User; import com.fastaccess.data.dao.types.IssueState; @@ -160,6 +161,8 @@ public class PullRequestPagerActivity extends BaseActivity if (repoId == null || login == null) return; makeRestCall(RestProvider.getPullRequestService().getPullRequestFiles(login, repoId, number, page) .flatMap(commitFileModelPageable -> { - if (commitFileModelPageable != null && commitFileModelPageable.getItems() != null) { + if (commitFileModelPageable != null) { lastPage = commitFileModelPageable.getLast(); - return Observable.just(CommitFileChanges.construct(commitFileModelPageable.getItems())); + if (commitFileModelPageable.getItems() != null) { + return Observable.just(CommitFileChanges.construct(commitFileModelPageable.getItems())); + } } return Observable.empty(); }), diff --git a/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt b/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt index a547afd4..f39108ff 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt +++ b/app/src/main/java/com/fastaccess/ui/modules/reviews/changes/ReviewChangesActivity.kt @@ -3,6 +3,7 @@ package com.fastaccess.ui.modules.reviews.changes import android.app.Activity import android.content.Intent import android.os.Bundle +import android.support.annotation.StringRes import android.support.design.widget.TextInputLayout import android.support.v7.widget.Toolbar import android.view.Menu @@ -12,18 +13,17 @@ import android.widget.Spinner import com.evernote.android.state.State import com.fastaccess.R import com.fastaccess.data.dao.ReviewRequestModel -import com.fastaccess.helper.ActivityHelper -import com.fastaccess.helper.BundleConstant -import com.fastaccess.helper.Bundler -import com.fastaccess.helper.InputHelper +import com.fastaccess.helper.* import com.fastaccess.provider.theme.ThemeEngine import com.fastaccess.ui.base.BaseActivity +import com.fastaccess.ui.widgets.dialog.ProgressDialogFragment /** * Created by Kosh on 25 Jun 2017, 1:25 AM */ class ReviewChangesActivity : BaseActivity(), ReviewChangesMvp.View { + val toolbar: Toolbar by lazy { findViewById(R.id.toolbar) as Toolbar } val spinner: Spinner by lazy { findViewById(R.id.reviewMethod) as Spinner } val editText: TextInputLayout by lazy { findViewById(R.id.editText) as TextInputLayout } @@ -32,6 +32,7 @@ class ReviewChangesActivity : BaseActivity(), ReviewCha override fun onSubmit(reviewRequest: ReviewRequestModel, repoId: String, owner: String, number: Long, comment: String, method: String) { reviewRequest.body = comment - reviewRequest.event = method + reviewRequest.event = method.replace(" ", "_").toUpperCase() makeRestCall(RestProvider.getReviewService().submitPrReview(owner, repoId, number, reviewRequest), { if (it.isSuccessful && it.code() == 200) { sendToView { it.onSuccessfullySubmitted() } } else { - sendToView { it.onErrorSubmitting()} + sendToView { it.onErrorSubmitting() } } }) } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java b/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java index 4b3b183d..d3a70f1b 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java @@ -20,15 +20,13 @@ import android.text.style.TypefaceSpan; import com.fastaccess.App; import com.fastaccess.R; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.Logger; -import java.util.regex.Matcher; import java.util.regex.Pattern; public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundSpan { private Rect rect = new Rect(); private final int color; - public static Pattern HUNK_TITLE = Pattern.compile("@@ -(\\d+),(\\d)+ \\+(\\d+),(\\d)+.*"); + public static Pattern HUNK_TITLE = Pattern.compile("^.*-([0-9]+)(?:,([0-9]+))? \\+([0-9]+)(?:,([0-9]+))?.*$"); private DiffLineSpan(int color) { this.color = color; @@ -72,7 +70,6 @@ public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundS if (split.length > 0) { int lines = split.length; int index = -1; - int lineNo = -1; for (int i = 0; i < lines; i++) { if (truncate && (lines - i) > 3) continue; String token = split[i]; @@ -83,28 +80,15 @@ public class DiffLineSpan extends MetricAffectingSpan implements LineBackgroundS int color = Color.TRANSPARENT; if (token.startsWith("@@")) { color = patchRefColor; - Matcher matcher = HUNK_TITLE.matcher(token.trim()); - if (matcher.matches()) { - try { - int leftLineNo = Math.abs(Integer.parseInt(matcher.group(1))) - 1; - int rightLineNo = Integer.parseInt(matcher.group(1)) - 1; - lineNo = leftLineNo <= 0 ? rightLineNo : leftLineNo; - } catch (NumberFormatException e) {e.printStackTrace();} - } } else if (firstChar == '+') { - ++lineNo; color = patchAdditionColor; } else if (firstChar == '-') { - ++lineNo; color = patchDeletionColor; - } else { - ++lineNo; } index = token.indexOf("\\ No newline at end of file"); if (index != -1) { token = token.replace("\\ No newline at end of file", ""); } - Logger.e(lineNo); SpannableString spannableDiff = new SpannableString(token); if (color != Color.TRANSPARENT) { DiffLineSpan span = new DiffLineSpan(color); diff --git a/app/src/main/java/com/fastaccess/ui/widgets/dialog/ProgressDialogFragment.java b/app/src/main/java/com/fastaccess/ui/widgets/dialog/ProgressDialogFragment.java index 8b455ef9..1e2a70ed 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/dialog/ProgressDialogFragment.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/dialog/ProgressDialogFragment.java @@ -35,8 +35,9 @@ public class ProgressDialogFragment extends DialogFragment { @NonNull @Override public Dialog onCreateDialog(Bundle savedInstanceState) { ProgressDialog progressDialog = new ProgressDialog(getContext()); progressDialog.setMessage(getArguments().getString("msg")); -// progressDialog.setCancelable(getArguments().getBoolean("isCancelable")); -// setCancelable(getArguments().getBoolean("isCancelable")); + boolean isCancelable = getArguments().getBoolean("isCancelable"); + progressDialog.setCancelable(isCancelable); + setCancelable(isCancelable); if (getActivity() != null && !getActivity().isFinishing()) { progressDialog.setOnShowListener(dialogInterface -> AnimHelper.revealDialog(progressDialog, 200)); } diff --git a/app/src/main/res/layouts/main_layouts/layout/login_chooser_layout.xml b/app/src/main/res/layouts/main_layouts/layout/login_chooser_layout.xml index ba91f35d..f076aa3f 100644 --- a/app/src/main/res/layouts/main_layouts/layout/login_chooser_layout.xml +++ b/app/src/main/res/layouts/main_layouts/layout/login_chooser_layout.xml @@ -95,16 +95,45 @@ android:paddingStart="@dimen/spacing_large" android:text="@string/or_character"/> - + android:orientation="horizontal"> + + + + + + + + + + android:layout_gravity="bottom" + android:background="@color/material_grey_200"> + Rebase Pull Request Reviews Review Changes + Enterprise + Loading, please wait… Action @@ -421,7 +423,7 @@ Login via basic auth If you are actually tied to an organizations and you can\'t see them here please follow link below.\nhttps://help.github.com/articles/about-third-party-application-restrictions\nPS: You could use Access token to login which will - grant FastHub access to see list your organizations.\nYou could also open up https://github.com/settings/applications and look for + grant FastHub access to list your organizations.\nYou could also open up https://github.com/settings/applications and look for FastHub, open it then scroll to Organization access and click on Grant Button. Insert Select