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