From 935940151fe64dd2a9c604bc637fa0b97269e399 Mon Sep 17 00:00:00 2001 From: Kosh Date: Tue, 30 May 2017 19:21:21 +0800 Subject: [PATCH] this commit fixes #582 fixes #579 fixes #577 fixes #576 fixes #575 fixes #574 fixes #569 fixes #568 fixes #559 fixes #552 fixes #438 fixes #31 fixes #565 --- app/build.gradle | 8 +- app/src/debug/res/values/secrets.xml | 8 +- app/src/main/AndroidManifest.xml | 9 +- app/src/main/java/com/fastaccess/App.java | 6 +- .../data/dao/FragmentPagerAdapterModel.java | 4 +- .../data/dao/model/AbstractPinnedRepos.java | 1 + .../data/dao/types/MyIssuesType.java | 3 +- .../java/com/fastaccess/helper/RxHelper.java | 4 +- .../provider/colors/ColorsProvider.java | 36 +++-- .../provider/rest/RepoQueryProvider.java | 6 + .../com/fastaccess/ui/base/mvp/BaseMvp.java | 4 +- .../ui/base/mvp/presenter/BasePresenter.java | 20 ++- .../modules/changelog/ChangelogPresenter.java | 2 +- .../ui/modules/feeds/FeedsPresenter.java | 10 +- .../filter/issues/FilterIssuesActivity.java | 10 +- .../ui/modules/gists/GistsPresenter.java | 3 +- .../ui/modules/gists/gist/GistPresenter.java | 4 +- .../gist/comments/GistCommentsPresenter.java | 2 +- .../ui/modules/main/MainPresenter.java | 2 +- .../main/donation/DonationActivity.java | 44 +++--- .../modules/main/issues/MyIssuesFragment.java | 4 +- .../main/issues/MyIssuesPresenter.java | 2 + .../issues/pager/MyIssuesPagerFragment.java | 3 +- .../all/AllNotificationsPresenter.java | 6 +- .../unread/UnreadNotificationsPresenter.java | 4 +- .../modules/parser/LinksParserActivity.java | 10 +- .../modules/pinned/PinnedReposPresenter.java | 2 +- .../followers/ProfileFollowersPresenter.java | 2 +- .../following/ProfileFollowingPresenter.java | 2 +- .../profile/gists/ProfileGistsPresenter.java | 2 +- .../profile/org/repos/OrgReposPresenter.java | 2 +- .../overview/ProfileOverviewPresenter.java | 14 +- .../profile/repos/ProfileReposPresenter.java | 2 +- .../starred/ProfileStarredPresenter.java | 2 +- .../ui/modules/repos/RepoPagerPresenter.java | 33 +++-- .../code/commit/RepoCommitsPresenter.java | 6 +- .../commit/details/CommitPagerPresenter.java | 2 +- .../comments/CommitCommentsPresenter.java | 2 +- .../RepoContributorsPresenter.java | 2 +- .../repos/code/files/RepoFilesPresenter.java | 2 +- .../files/paths/RepoFilePathPresenter.java | 2 +- .../code/prettifier/ViewerPresenter.java | 2 +- .../code/releases/RepoReleasesPresenter.java | 2 +- .../issues/issue/RepoIssuesPresenter.java | 8 +- .../issue/details/IssuePagerActivity.java | 2 +- .../issue/details/IssuePagerPresenter.java | 6 +- .../timeline/IssueTimelineFragment.java | 4 +- .../timeline/IssueTimelinePresenter.java | 11 +- .../RepoPullRequestPresenter.java | 6 +- .../details/PullRequestPagerActivity.java | 5 +- .../details/PullRequestPagerPresenter.java | 8 +- .../commits/PullRequestCommitsPresenter.java | 2 +- .../timeline/PullRequestTimelineFragment.java | 4 +- .../PullRequestTimelinePresenter.java | 11 +- .../ui/modules/search/SearchPresenter.java | 2 +- .../fastaccess/ui/widgets/DiffLineSpan.java | 14 +- .../recyclerview/BaseRecyclerAdapter.java | 4 + app/src/main/res/drawable/ic_newline.xml | 10 ++ .../main_layouts/layout/editor_layout.xml | 6 +- .../layout/title_header_layout.xml | 128 +++++++++--------- .../layout/commit_file_row_item.xml | 4 +- app/src/main/res/values/strings.xml | 4 + build.gradle | 5 +- 63 files changed, 314 insertions(+), 226 deletions(-) create mode 100644 app/src/main/res/drawable/ic_newline.xml diff --git a/app/build.gradle b/app/build.gradle index 59aa0c91d..5e32f66f6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,8 +1,8 @@ apply plugin: 'com.android.application' -apply plugin: 'com.google.firebase.firebase-crash' //apply plugin: 'kotlin-android' apply plugin: 'com.novoda.build-properties' apply plugin: 'jacoco-android' +apply plugin: 'io.fabric' buildProperties { notThere { @@ -96,6 +96,7 @@ repositories { maven { url "https://oss.sonatype.org/content/repositories/snapshots/" } maven { url "https://jitpack.io" } maven { url "https://maven.google.com" } + maven { url 'https://maven.fabric.io/public' } mavenCentral() } @@ -137,11 +138,14 @@ dependencies { compile 'com.firebase:firebase-jobdispatcher:0.6.0' compile "com.google.firebase:firebase-ads:${gms}" compile "com.google.firebase:firebase-messaging:${gms}" - releaseCompile "com.google.firebase:firebase-crash:${gms}" compile "com.google.android.gms:play-services-auth:${gms}" compile "com.github.florent37:retrojsoup:${retroJsoup}" compile "com.github.florent37:rxjsoup:${retroJsoup}" + compile('com.crashlytics.sdk.android:crashlytics:2.6.8@aar') { + transitive = true + } compile "org.jsoup:jsoup:1.10.2" + compile "com.github.miguelbcr:RxBillingService:0.0.3" // compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:${kotlin_version}" provided "org.projectlombok:lombok:${lombokVersion}" annotationProcessor "com.github.florent37:retrojsoup-compiler:${retroJsoup}" diff --git a/app/src/debug/res/values/secrets.xml b/app/src/debug/res/values/secrets.xml index 0d195581e..2ed203b1f 100644 --- a/app/src/debug/res/values/secrets.xml +++ b/app/src/debug/res/values/secrets.xml @@ -2,8 +2,8 @@ ca-app-pub-3940256099942544/6300978111 YOUR-DEVICE-ID-FROM-LOGCAT - your_product_1 - your_product_2 - your_product_3 - your_product_4 + android.test.purchased + android.test.canceled + android.test.refunded + android.test.item_unavailable \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index b8cc8853c..81e5cab13 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -210,11 +210,6 @@ - - - @@ -233,6 +228,10 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/fastaccess/App.java b/app/src/main/java/com/fastaccess/App.java index 1480a2a70..e89e0166c 100644 --- a/app/src/main/java/com/fastaccess/App.java +++ b/app/src/main/java/com/fastaccess/App.java @@ -4,6 +4,7 @@ import android.support.annotation.NonNull; import android.support.v7.preference.PreferenceManager; +import com.crashlytics.android.Crashlytics; import com.fastaccess.data.dao.model.Models; import com.fastaccess.helper.TypeFaceHelper; import com.fastaccess.provider.colors.ColorsProvider; @@ -12,7 +13,9 @@ import com.fastaccess.provider.uil.UILProvider; import com.google.android.gms.auth.api.Auth; import com.google.android.gms.common.api.GoogleApiClient; +import com.miguelbcr.io.rx_billing_service.RxBillingService; +import io.fabric.sdk.android.Fabric; import io.requery.Persistable; import io.requery.android.sqlite.DatabaseSource; import io.requery.meta.EntityModel; @@ -24,7 +27,6 @@ import shortbread.Shortbread; - /** * Created by Kosh on 03 Feb 2017, 12:07 AM */ @@ -65,6 +67,8 @@ public class App extends Application { } private void init() { + Fabric.with(this, new Crashlytics()); + RxBillingService.register(this); deleteDatabase("database.db"); getDataStore();//init requery before anything. setupPreference(); 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 c4af9cc90..efeb9cc7b 100644 --- a/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java +++ b/app/src/main/java/com/fastaccess/data/dao/FragmentPagerAdapterModel.java @@ -173,7 +173,9 @@ public static List buildForMyIssues(@NonNull Context new FragmentPagerAdapterModel(context.getString(R.string.assigned), MyIssuesFragment.newInstance(IssueState.open, MyIssuesType.ASSIGNED)), new FragmentPagerAdapterModel(context.getString(R.string.mentioned), - MyIssuesFragment.newInstance(IssueState.open, MyIssuesType.MENTIONED))) + MyIssuesFragment.newInstance(IssueState.open, MyIssuesType.MENTIONED)), + new FragmentPagerAdapterModel(context.getString(R.string.participated), + MyIssuesFragment.newInstance(IssueState.open, MyIssuesType.PARTICIPATED))) .collect(Collectors.toList()); } diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPinnedRepos.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPinnedRepos.java index 9d768d344..ae074cc6c 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPinnedRepos.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPinnedRepos.java @@ -62,6 +62,7 @@ public static boolean pinUpin(@NonNull Repo repo) { .firstOrNull(); } + public static boolean isPinned(@NonNull String repoFullName) { return get(repoFullName) != null; } diff --git a/app/src/main/java/com/fastaccess/data/dao/types/MyIssuesType.java b/app/src/main/java/com/fastaccess/data/dao/types/MyIssuesType.java index 74efc474a..ba93a0ad3 100644 --- a/app/src/main/java/com/fastaccess/data/dao/types/MyIssuesType.java +++ b/app/src/main/java/com/fastaccess/data/dao/types/MyIssuesType.java @@ -8,5 +8,6 @@ public enum MyIssuesType { CREATED, ASSIGNED, MENTIONED, - REVIEW + REVIEW, + PARTICIPATED } diff --git a/app/src/main/java/com/fastaccess/helper/RxHelper.java b/app/src/main/java/com/fastaccess/helper/RxHelper.java index aa047a13a..09c8c5908 100644 --- a/app/src/main/java/com/fastaccess/helper/RxHelper.java +++ b/app/src/main/java/com/fastaccess/helper/RxHelper.java @@ -25,8 +25,8 @@ public static Observable safeObservable(@NonNull Observable observable .doOnError(Throwable::printStackTrace); } - public static Single getSingle(@NonNull Single observable) { - return observable + public static Single getSingle(@NonNull Single single) { + return single .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()); } diff --git a/app/src/main/java/com/fastaccess/provider/colors/ColorsProvider.java b/app/src/main/java/com/fastaccess/provider/colors/ColorsProvider.java index e46d6182b..b90daf791 100644 --- a/app/src/main/java/com/fastaccess/provider/colors/ColorsProvider.java +++ b/app/src/main/java/com/fastaccess/provider/colors/ColorsProvider.java @@ -8,6 +8,7 @@ import com.fastaccess.App; import com.fastaccess.data.dao.LanguageColorModel; +import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.RxHelper; import com.fastaccess.ui.widgets.color.ColorGenerator; import com.google.gson.Gson; @@ -22,7 +23,6 @@ import java.util.Map; import io.reactivex.Observable; -import io.reactivex.schedulers.Schedulers; /** * Created by Kosh on 27 May 2017, 9:50 PM @@ -34,18 +34,22 @@ public class ColorsProvider { public static void load() { if (colors.isEmpty()) { - RxHelper.safeObservable(Observable.fromCallable(() -> { - try { - Type type = new TypeToken>() {}.getType(); - InputStream stream = App.getInstance().getAssets().open("colors.json"); - Gson gson = new Gson(); - JsonReader reader = new JsonReader(new InputStreamReader(stream)); - colors.putAll(gson.fromJson(reader, type)); - } catch (IOException e) { - e.printStackTrace(); - } - return ""; - })).subscribeOn(Schedulers.io()).subscribe(); + RxHelper.safeObservable(Observable + .create(observableEmitter -> { + try { + Type type = new TypeToken>() {}.getType(); + InputStream stream = App.getInstance().getAssets().open("colors.json"); + Gson gson = new Gson(); + JsonReader reader = new JsonReader(new InputStreamReader(stream)); + colors.putAll(gson.fromJson(reader, type)); + observableEmitter.onNext(""); + } catch (IOException e) { + e.printStackTrace(); + observableEmitter.onError(e); + } + observableEmitter.onComplete(); + })) + .subscribe(s -> {/**/}, Throwable::printStackTrace); } } @@ -55,6 +59,10 @@ public static void load() { @ColorInt public static int getColorAsColor(@NonNull String lang, @NonNull Context context) { LanguageColorModel color = getColor(lang); - return color != null ? Color.parseColor(color.getColor()) : ColorGenerator.getColor(context, lang); + int langColor = ColorGenerator.getColor(context, lang); + if (color != null && !InputHelper.isEmpty(color.getColor())) { + try {langColor = Color.parseColor(color.getColor());} catch (Exception ignored) {} + } + return langColor; } } diff --git a/app/src/main/java/com/fastaccess/provider/rest/RepoQueryProvider.java b/app/src/main/java/com/fastaccess/provider/rest/RepoQueryProvider.java index 81cf84ed4..65adb2ae8 100644 --- a/app/src/main/java/com/fastaccess/provider/rest/RepoQueryProvider.java +++ b/app/src/main/java/com/fastaccess/provider/rest/RepoQueryProvider.java @@ -39,4 +39,10 @@ public class RepoQueryProvider { "+" + "review-requested:" + username + "+is:" + issueState.name(); } + + public static String getParticipated(@NonNull String username, @NonNull IssueState issueState, boolean isPr) { + return "type:" + (isPr ? "pr" : "issue") + + "+" + "involves:" + username + + "+is:" + issueState.name(); + } } diff --git a/app/src/main/java/com/fastaccess/ui/base/mvp/BaseMvp.java b/app/src/main/java/com/fastaccess/ui/base/mvp/BaseMvp.java index 9cb667591..6188985c4 100644 --- a/app/src/main/java/com/fastaccess/ui/base/mvp/BaseMvp.java +++ b/app/src/main/java/com/fastaccess/ui/base/mvp/BaseMvp.java @@ -49,10 +49,12 @@ interface FAPresenter { void onRestoreInstanceState(Bundle outState); - void manageSubscription(@Nullable Disposable... disposables); + void manageDisposable(@Nullable Disposable... disposables); void manageObservable(@Nullable Observable observable); + void manageViewDisposable(@Nullable Disposable... disposables); + boolean isApiCalled(); void onSubscribed(); diff --git a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java index 6cf0794c7..bf3743b76 100644 --- a/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/base/mvp/presenter/BasePresenter.java @@ -40,15 +40,25 @@ public class BasePresenter extends TiPresenter impl if (outState != null) Icepick.restoreInstanceState(this, outState); } - @Override public void manageSubscription(@Nullable Disposable... subscription) { - if (subscription != null) { - subscriptionHandler.manageDisposables(subscription); + @Override public void manageDisposable(@Nullable Disposable... disposables) { + if (disposables != null) { + subscriptionHandler.manageDisposables(disposables); } } @Override public void manageObservable(@Nullable Observable observable) { if (observable != null) { - manageSubscription(observable.subscribe(t -> {/**/}, Throwable::printStackTrace)); + manageDisposable(RxHelper.getObserver(observable).subscribe(t -> {/**/}, Throwable::printStackTrace)); + } + } + + @Override public void manageViewDisposable(@Nullable Disposable... disposables) { + if (disposables != null) { + if (isViewAttached()) { + subscriptionHandler.manageViewDisposables(disposables); + } else { + sendToView(v -> manageViewDisposable(disposables)); + } } } @@ -76,7 +86,7 @@ public class BasePresenter extends TiPresenter impl } @Override public void makeRestCall(@NonNull Observable observable, @NonNull Consumer onNext) { - manageSubscription( + manageDisposable( RxHelper.getObserver(observable) .doOnSubscribe(disposable -> onSubscribed()) .subscribe(onNext, this::onError, () -> apiCalled = true) diff --git a/app/src/main/java/com/fastaccess/ui/modules/changelog/ChangelogPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/changelog/ChangelogPresenter.java index 0de860388..4dc0a1681 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/changelog/ChangelogPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/changelog/ChangelogPresenter.java @@ -15,7 +15,7 @@ private String html; @Override public void onLoadChangelog() { - manageSubscription(RxHelper.getObserver(ChangelogProvider.getChangelog(App.getInstance())) + manageDisposable(RxHelper.getObserver(ChangelogProvider.getChangelog(App.getInstance())) .subscribe(s -> { this.html = s; sendToView(view -> view.onChangelogLoaded(html)); diff --git a/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java index 3873f037f..5957dbbc1 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/feeds/FeedsPresenter.java @@ -89,12 +89,12 @@ class FeedsPresenter extends BasePresenter implements FeedsMvp.Pr @Override public void onWorkOffline() { if (eventsModels.isEmpty()) { - manageSubscription(RxHelper.getObserver(Event.getEvents().toObservable()) + manageDisposable(RxHelper.getObserver(Event.getEvents().toObservable()) .subscribe(modelList -> { - if (modelList != null) { - sendToView(view -> view.onNotifyAdapter(modelList, 1)); - } - })); + if (modelList != null) { + sendToView(view -> view.onNotifyAdapter(modelList, 1)); + } + }, Throwable::printStackTrace)); } else { sendToView(FeedsMvp.View::hideProgress); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/filter/issues/FilterIssuesActivity.java b/app/src/main/java/com/fastaccess/ui/modules/filter/issues/FilterIssuesActivity.java index 445ed420e..0ba781984 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/filter/issues/FilterIssuesActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/filter/issues/FilterIssuesActivity.java @@ -458,7 +458,7 @@ private void appendAssignee(User item) { onSearch(); } - private void appendSort(String item) { + private void appendSort(String item) { dismissPopup(); appendIfEmpty(); Resources resources = getResources(); @@ -468,7 +468,7 @@ private void appendSort(String item) { String leastCommentedQuery = "comments-asc"; String recentlyUpdatedQuery = "updated-desc"; String leastRecentUpdatedQuery = "updated-asc"; - String sortThumbUp = "reactions-+1-desc"; + String sortThumbUp = "reactions-%2B1-desc"; String sortThumbDown = "reactions--1-desc"; String sortThumbLaugh = "reactions-smile-desc"; String sortThumbHooray = "reactions-tada-desc"; @@ -496,22 +496,16 @@ private void appendSort(String item) { toQuery = leastRecentUpdatedQuery; } else if (item.equalsIgnoreCase(CommentsHelper.getThumbsUp())) { toQuery = sortThumbUp; - showMessage(R.string.error, R.string.not_really_working); } else if (item.equalsIgnoreCase(CommentsHelper.getThumbsDown())) { toQuery = sortThumbDown; - showMessage(R.string.error, R.string.not_really_working); } else if (item.equalsIgnoreCase(CommentsHelper.getLaugh())) { toQuery = sortThumbLaugh; - showMessage(R.string.error, R.string.not_really_working); } else if (item.equalsIgnoreCase(CommentsHelper.getHooray())) { toQuery = sortThumbHooray; - showMessage(R.string.error, R.string.not_really_working); } else if (item.equalsIgnoreCase(CommentsHelper.getSad())) { toQuery = sortThumbConfused; - showMessage(R.string.error, R.string.not_really_working); } else if (item.equalsIgnoreCase(CommentsHelper.getHeart())) { toQuery = sortThumbHeart; - showMessage(R.string.error, R.string.not_really_working); } if (!text.replaceAll(regex, "sort:\"" + toQuery + "\"").equalsIgnoreCase(text)) { String space = text.endsWith(" ") ? "" : " "; diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/GistsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/GistsPresenter.java index 7aeaf2c29..1089ce5f8 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/GistsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/GistsPresenter.java @@ -69,7 +69,8 @@ class GistsPresenter extends BasePresenter implements GistsMvp.Pr @Override public void onWorkOffline() { if (gistsModels.isEmpty()) { - manageSubscription(RxHelper.getObserver(Gist.getGists().toObservable()).subscribe(gists -> sendToView(view -> view.onNotifyAdapter(gists, 1)))); + manageDisposable(RxHelper.getObserver(Gist.getGists().toObservable()) + .subscribe(gists -> sendToView(view -> view.onNotifyAdapter(gists, 1)))); } else { sendToView(GistsMvp.View::hideProgress); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java index 175a0bb1a..d766ecc17 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/GistPresenter.java @@ -53,7 +53,7 @@ class GistPresenter extends BasePresenter implements GistMvp.Prese @Override public void onDeleteGist() { if (getGist() == null) return; - manageSubscription(RxHelper.getObserver(RestProvider.getGistService().deleteGist(getGist().getGistId())) + manageDisposable(RxHelper.getObserver(RestProvider.getGistService().deleteGist(getGist().getGistId())) .doOnSubscribe(disposable -> onSubscribed()) .doOnNext(booleanResponse -> { if (booleanResponse.code() == 204) { @@ -100,7 +100,7 @@ class GistPresenter extends BasePresenter implements GistMvp.Prese @Override public void onWorkOffline(@NonNull String gistId) { if (gist == null) { - manageSubscription(RxHelper.getObserver(Gist.getGist(gistId)) + manageDisposable(RxHelper.getObserver(Gist.getGist(gistId)) .subscribe(gistsModel -> { this.gist = gistsModel; sendToView(GistMvp.View::onSetupDetails); diff --git a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java index 475198e2b..0e5634991 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/gists/gist/comments/GistCommentsPresenter.java @@ -95,7 +95,7 @@ class GistCommentsPresenter extends BasePresenter implemen @Override public void onWorkOffline(@NonNull String gistId) { if (comments.isEmpty()) { - manageSubscription(RxHelper.getObserver(Comment.getGistComments(gistId).toObservable()) + manageDisposable(RxHelper.getObserver(Comment.getGistComments(gistId).toObservable()) .subscribe(localComments -> sendToView(view -> view.onNotifyAdapter(localComments, 1)))); } else { sendToView(BaseMvp.FAView::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java index 27558e86a..ed5e717d4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/MainPresenter.java @@ -29,7 +29,7 @@ class MainPresenter extends BasePresenter implements MainMvp.Prese MainPresenter() { - manageSubscription(RxHelper.getObserver(RestProvider.getUserService().getUser()) + manageDisposable(RxHelper.getObserver(RestProvider.getUserService().getUser()) .flatMap(login -> login.update(login)) .subscribe(login -> { if (login != null) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java index 0ded0e363..ef1a58cc4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/donation/DonationActivity.java @@ -1,14 +1,21 @@ package com.fastaccess.ui.modules.main.donation; +import android.content.pm.ActivityInfo; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.AppBarLayout; import android.view.View; +import com.fastaccess.BuildConfig; import com.fastaccess.R; import com.fastaccess.helper.AnimHelper; +import com.fastaccess.helper.Logger; +import com.fastaccess.helper.RxHelper; import com.fastaccess.ui.base.BaseActivity; import com.fastaccess.ui.base.mvp.presenter.BasePresenter; +import com.miguelbcr.io.rx_billing_service.RxBillingService; +import com.miguelbcr.io.rx_billing_service.RxBillingServiceException; +import com.miguelbcr.io.rx_billing_service.entities.ProductType; import net.grandcentrix.thirtyinch.TiPresenter; @@ -23,17 +30,8 @@ public class DonationActivity extends BaseActivity { @BindView(R.id.cardsHolder) View cardsHolder; @BindView(R.id.appbar) AppBarLayout appBarLayout; - -// private Pago pago; private Disposable subscription; -// @NonNull public Pago getPago() { -// if (pago == null) { -// pago = new Pago(getApplicationContext()); -// } -// return pago; -// } - @Override protected void onDestroy() { if (subscription != null && !subscription.isDisposed()) { subscription.dispose(); @@ -87,16 +85,22 @@ public class DonationActivity extends BaseActivity { } private void onProceed(@NonNull String productKey) { -// subscription = getPago().purchaseProduct(productKey, "inapp:com.fastaccess.github:" + productKey) -// .subscribeOn(Schedulers.io()) -// .observeOn(AndroidSchedulers.mainThread()) -// .onErrorReturn(throwable -> { -// showErrorMessage(throwable.getMessage()); -// return null; -// }) -// .subscribe(order -> { -// Logger.e(order); -// if (order != null) showMessage(R.string.success, R.string.success_purchase_message); -// }, Throwable::printStackTrace); +// RxBillingService.getInstance(this, BuildConfig.DEBUG) +// .getPurchases(ProductType.IN_APP) +// .subscribe((purchases, throwable) -> Logger.e(purchases)); + subscription = RxHelper.getSingle(RxBillingService.getInstance(this, BuildConfig.DEBUG) + .purchase(ProductType.IN_APP, productKey, "inapp:com.fastaccess.github:" + productKey)) + .doOnSubscribe(disposable -> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT)) + .doFinally(() -> setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_FULL_USER)) + .subscribe((purchase, throwable) -> { + if (throwable == null) { + showMessage(R.string.success, R.string.success_purchase_message); + } else { + if (throwable instanceof RxBillingServiceException) { + Logger.e(((RxBillingServiceException) throwable).getCode()); + } + throwable.printStackTrace(); + } + }); } } 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 13bb303f5..5d04e4a0a 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 @@ -156,6 +156,9 @@ public static MyIssuesFragment newInstance(@NonNull IssueState issueState, @NonN case MENTIONED: tabsBadgeListener.onSetBadge(2, totalCount); break; + case PARTICIPATED: + tabsBadgeListener.onSetBadge(3, totalCount); + break; } } } @@ -179,7 +182,6 @@ public static MyIssuesFragment newInstance(@NonNull IssueState issueState, @NonN if (recycler != null) recycler.scrollToPosition(0); } - private MyIssuesType getIssuesType() { if (issuesType == null) { issuesType = (MyIssuesType) getArguments().getSerializable(BundleConstant.EXTRA_TWO); diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesPresenter.java index 41ae8b158..54ea1595b 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/issues/MyIssuesPresenter.java @@ -95,6 +95,8 @@ public class MyIssuesPresenter extends BasePresenter implement return RepoQueryProvider.getAssigned(login, parameter, false); case MENTIONED: return RepoQueryProvider.getMentioned(login, parameter, false); + case PARTICIPATED: + return RepoQueryProvider.getParticipated(login, parameter, false); } return RepoQueryProvider.getMyIssuesPullRequestQuery(login, parameter, false); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java b/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java index 8fc6a2277..6a11b9b06 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/main/issues/pager/MyIssuesPagerFragment.java @@ -67,7 +67,6 @@ public static MyIssuesPagerFragment newInstance() { }); tabs.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { - Logger.e(tab.getTag()); if (tab.getTag() == null) { int position = tab.getPosition(); selectTab(position, false); @@ -139,6 +138,8 @@ private void updateCount(@NonNull TabsCountStateModel model) { case 2: title = getString(R.string.mentioned); break; + case 3: + title = getString(R.string.participated); } updateDrawable(model, tv); tv.setText(SpannableBuilder.builder() diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsPresenter.java index 5795c4737..7af54ad55 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/all/AllNotificationsPresenter.java @@ -77,7 +77,7 @@ private void markAsRead(int position, View v, Notification item) { @Override public void onWorkOffline() { if (notifications.isEmpty()) { - manageSubscription(RxHelper.getObserver(Notification.getAlltNotifications().toObservable()) + manageDisposable(RxHelper.getObserver(Notification.getAlltNotifications().toObservable()) .flatMap(notifications -> Observable.just(GroupedNotificationModel.construct(notifications))) .subscribe(models -> sendToView(view -> view.onNotifyAdapter(models)))); } else { @@ -117,7 +117,7 @@ private void markAsRead(int position, View v, Notification item) { } @Override public void onMarkAllAsRead(@NonNull List data) { - manageSubscription(RxHelper.getObserver(Observable.fromIterable(data)) + manageDisposable(RxHelper.getObserver(Observable.fromIterable(data)) .filter(group -> group.getType() == GroupedNotificationModel.ROW) .filter(group -> group.getNotification() != null && group.getNotification().isUnread()) .map(GroupedNotificationModel::getNotification) @@ -130,7 +130,7 @@ private void markAsRead(int position, View v, Notification item) { } @Override public void onMarkReadByRepo(@NonNull List data, @NonNull Repo repo) { - manageSubscription(RxHelper.getObserver(Observable.fromIterable(data)) + manageDisposable(RxHelper.getObserver(Observable.fromIterable(data)) .filter(group -> group.getType() == GroupedNotificationModel.ROW) .filter(group -> group.getNotification() != null && group.getNotification().isUnread()) .filter(group -> group.getNotification().getRepository().getFullName().equalsIgnoreCase(repo.getFullName())) diff --git a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsPresenter.java index 5a9455269..d6417f340 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/notification/unread/UnreadNotificationsPresenter.java @@ -52,7 +52,7 @@ public class UnreadNotificationsPresenter extends BasePresenter Observable.just(GroupedNotificationModel.onlyNotifications(notifications))) .subscribe(models -> sendToView(view -> view.onNotifyAdapter(models)))); } else { @@ -65,7 +65,7 @@ public class UnreadNotificationsPresenter extends BasePresenter data) { - manageSubscription(RxHelper.getObserver(Observable.fromIterable(data)) + manageDisposable(RxHelper.getObserver(Observable.fromIterable(data)) .filter(group -> group.getType() == GroupedNotificationModel.ROW) .filter(group -> group.getNotification() != null && group.getNotification().isUnread()) .map(GroupedNotificationModel::getNotification) diff --git a/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java b/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java index 58ae854e2..f444b284a 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/parser/LinksParserActivity.java @@ -8,7 +8,7 @@ import com.fastaccess.R; import com.fastaccess.data.dao.model.Login; -import com.fastaccess.provider.scheme.StackBuilderSchemeParser; +import com.fastaccess.provider.scheme.SchemeParser; import com.fastaccess.ui.modules.login.LoginActivity; /** @@ -39,14 +39,16 @@ private void onCreate(@Nullable Intent intent) { return; } if (intent.getAction().equals(Intent.ACTION_VIEW)) { - onUriReceived(); - return; + if (intent.getData() != null) { + onUriReceived(); + return; + } } finish(); } private void onUriReceived() { - StackBuilderSchemeParser.launchUri(this, getIntent()); + SchemeParser.launchUri(this, getIntent().getData()); finish(); } } diff --git a/app/src/main/java/com/fastaccess/ui/modules/pinned/PinnedReposPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/pinned/PinnedReposPresenter.java index fa50dc335..1c3a2ee81 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/pinned/PinnedReposPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/pinned/PinnedReposPresenter.java @@ -30,7 +30,7 @@ public class PinnedReposPresenter extends BasePresenter imp } @Override public void onReload() { - manageSubscription(AbstractPinnedRepos.getMyPinnedRepos() + manageDisposable(AbstractPinnedRepos.getMyPinnedRepos() .subscribe(repos -> sendToView(view -> view.onNotifyAdapter(repos)), throwable -> sendToView(view -> view.onNotifyAdapter(null)))); } diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/followers/ProfileFollowersPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/followers/ProfileFollowersPresenter.java index 8258991f5..d4995f136 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/followers/ProfileFollowersPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/followers/ProfileFollowersPresenter.java @@ -76,7 +76,7 @@ class ProfileFollowersPresenter extends BasePresenter @Override public void onWorkOffline(@NonNull String login) { if (users.isEmpty()) { - manageSubscription(RxHelper.getSingle(User.getUserFollowerList(login)).subscribe(userModels -> + manageDisposable(RxHelper.getSingle(User.getUserFollowerList(login)).subscribe(userModels -> sendToView(view -> view.onNotifyAdapter(userModels, 1)))); } else { sendToView(ProfileFollowersMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/following/ProfileFollowingPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/following/ProfileFollowingPresenter.java index 7e65ed542..8fb0fb2af 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/following/ProfileFollowingPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/following/ProfileFollowingPresenter.java @@ -76,7 +76,7 @@ class ProfileFollowingPresenter extends BasePresenter @Override public void onWorkOffline(@NonNull String login) { if (users.isEmpty()) { - manageSubscription(RxHelper.getSingle(User.getUserFollowingList(login)).subscribe(userModels -> + manageDisposable(RxHelper.getSingle(User.getUserFollowingList(login)).subscribe(userModels -> sendToView(view -> view.onNotifyAdapter(userModels, 1)))); } else { sendToView(ProfileFollowingMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/gists/ProfileGistsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/gists/ProfileGistsPresenter.java index 8cf88d8ab..db7669fef 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/gists/ProfileGistsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/gists/ProfileGistsPresenter.java @@ -75,7 +75,7 @@ class ProfileGistsPresenter extends BasePresenter implemen @Override public void onWorkOffline(@NonNull String login) { if (gistsModels.isEmpty()) { - manageSubscription(RxHelper.getObserver(Gist.getMyGists(login).toObservable()).subscribe(gistsModels1 -> + manageDisposable(RxHelper.getObserver(Gist.getMyGists(login).toObservable()).subscribe(gistsModels1 -> sendToView(view -> view.onNotifyAdapter(gistsModels1, 1)))); } else { sendToView(ProfileGistsMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposPresenter.java index f21c7b8dc..957632806 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/org/repos/OrgReposPresenter.java @@ -78,7 +78,7 @@ class OrgReposPresenter extends BasePresenter implements OrgRe @Override public void onWorkOffline(@NonNull String login) { if (repos.isEmpty()) { - manageSubscription(RxHelper.getObserver(Repo.getMyRepos(login).toObservable()).subscribe(repoModels -> + manageDisposable(RxHelper.getObserver(Repo.getMyRepos(login).toObservable()).subscribe(repoModels -> sendToView(view -> view.onNotifyAdapter(repoModels, 1)))); } else { sendToView(OrgReposMvp.View::hideProgress); 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 c546713fb..c8f66b505 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 @@ -58,8 +58,8 @@ class ProfileOverviewPresenter extends BasePresenter im } @Override public void onFollowButtonClicked(@NonNull String login) { - manageSubscription(RxHelper.getObserver(!isFollowing ? RestProvider.getUserService().followUser(login) - : RestProvider.getUserService().unfollowUser(login)) + manageDisposable(RxHelper.getObserver(!isFollowing ? RestProvider.getUserService().followUser(login) + : RestProvider.getUserService().unfollowUser(login)) .subscribe(booleanResponse -> { if (booleanResponse.code() == 204) { isFollowing = !isFollowing; @@ -174,7 +174,7 @@ class ProfileOverviewPresenter extends BasePresenter im private void loadContributions() { String url = String.format(URL, login); - manageSubscription(RxHelper.getObserver(RestProvider.getContribution().getContributions(url)) + manageDisposable(RxHelper.getObserver(RestProvider.getContribution().getContributions(url)) .flatMap(s -> Observable.just(new ContributionsProvider().getContributions(s))) .subscribe(lists -> { contributions.clear(); @@ -185,8 +185,8 @@ private void loadContributions() { private void loadOrgs() { boolean isMe = login.equalsIgnoreCase(Login.getUser() != null ? Login.getUser().getLogin() : ""); - manageSubscription(RxHelper.getObserver(isMe ? RestProvider.getOrgService().getMyOrganizations() - : RestProvider.getOrgService().getMyOrganizations(login)) + manageDisposable(RxHelper.getObserver(isMe ? RestProvider.getOrgService().getMyOrganizations() + : RestProvider.getOrgService().getMyOrganizations(login)) .subscribe(response -> { if (response != null && response.getItems() != null) { userOrgs.addAll(response.getItems()); @@ -198,7 +198,7 @@ private void loadOrgs() { private void loadUrlBackgroundImage() { if (Login.getUser().getLogin().equalsIgnoreCase(login)) { if (PrefGetter.getProfileBackgroundUrl() == null) { - manageSubscription(getHeaderGist() + manageDisposable(getHeaderGist() .flatMap(s -> RxHelper.getObserver(Observable.fromArray(s.split("\n")))) .flatMap(s -> RxHelper.getObserver(Observable.just(s.split("->")))) .filter(strings -> strings != null && strings[0].equalsIgnoreCase(login)) @@ -208,7 +208,7 @@ private void loadUrlBackgroundImage() { sendToView(view -> view.onImagePosted(PrefGetter.getProfileBackgroundUrl())); } } else { - manageSubscription(getHeaderGist() + manageDisposable(getHeaderGist() .flatMap(s -> RxHelper.getObserver(Observable.fromArray(s.split("\n")))) .flatMap(s -> RxHelper.getObserver(Observable.just(s.split("->")))) .filter(strings -> strings != null && strings[0].equalsIgnoreCase(login)) diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposPresenter.java index 68bce9187..06684a41f 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/repos/ProfileReposPresenter.java @@ -86,7 +86,7 @@ class ProfileReposPresenter extends BasePresenter implemen @Override public void onWorkOffline(@NonNull String login) { if (repos.isEmpty()) { - manageSubscription(RxHelper.getObserver(Repo.getMyRepos(login).toObservable()).subscribe(repoModels -> + manageDisposable(RxHelper.getObserver(Repo.getMyRepos(login).toObservable()).subscribe(repoModels -> sendToView(view -> view.onNotifyAdapter(repoModels, 1)))); } else { sendToView(ProfileReposMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredPresenter.java index b08544f84..9c8bb7fb3 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/profile/starred/ProfileStarredPresenter.java @@ -78,7 +78,7 @@ class ProfileStarredPresenter extends BasePresenter impl @Override public void onWorkOffline(@NonNull String login) { if (repos.isEmpty()) { - manageSubscription(RxHelper.getObserver(Repo.getStarred(login).toObservable()).subscribe(repoModels -> + manageDisposable(RxHelper.getObserver(Repo.getStarred(login).toObservable()).subscribe(repoModels -> sendToView(view -> view.onNotifyAdapter(repoModels, 1)))); } else { sendToView(ProfileStarredMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerPresenter.java index d2dfe3cee..9c8542019 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/RepoPagerPresenter.java @@ -10,6 +10,7 @@ import com.fastaccess.R; import com.fastaccess.data.dao.model.AbstractPinnedRepos; import com.fastaccess.data.dao.model.Login; +import com.fastaccess.data.dao.model.PinnedRepos; import com.fastaccess.data.dao.model.Repo; import com.fastaccess.helper.AppHelper; import com.fastaccess.helper.InputHelper; @@ -38,17 +39,21 @@ class RepoPagerPresenter extends BasePresenter implements Rep private void callApi(int navTyp) { if (InputHelper.isEmpty(login) || InputHelper.isEmpty(repoId)) return; - makeRestCall(RestProvider.getRepoService().getRepo(login(), repoId()), - repoModel -> { - this.repo = repoModel; - manageObservable(this.repo.save(repo).toObservable()); - sendToView(view -> { - view.onInitRepo(); - view.onNavigationChanged(navTyp); - }); - onCheckStarring(); - onCheckWatching(); - }); + makeRestCall(RestProvider.getRepoService().getRepo(login(), repoId()), repoModel -> { + this.repo = repoModel; + manageObservable(this.repo.save(repo).toObservable()); + PinnedRepos pinnedRepos = PinnedRepos.get(repoModel.getFullName()); + if (pinnedRepos != null) { + pinnedRepos.setPinnedRepo(repoModel); + manageObservable(PinnedRepos.save(pinnedRepos).toObservable()); + } + sendToView(view -> { + view.onInitRepo(); + view.onNavigationChanged(navTyp); + }); + onCheckStarring(); + onCheckWatching(); + }); } @Override public void onError(@NonNull Throwable throwable) { @@ -132,7 +137,7 @@ private void callApi(int navTyp) { if (getRepo() != null) { String login = login(); String name = repoId(); - manageSubscription(RxHelper.getObserver(RestProvider.getRepoService().isWatchingRepo(login, name)) + manageDisposable(RxHelper.getObserver(RestProvider.getRepoService().isWatchingRepo(login, name)) .doOnSubscribe(disposable -> sendToView(view -> view.onEnableDisableWatch(false))) .doOnNext(subscriptionModel -> sendToView(view -> view.onRepoWatched(isWatched = subscriptionModel.isSubscribed()))) .subscribe(o -> {/**/}, throwable -> { @@ -146,7 +151,7 @@ private void callApi(int navTyp) { if (getRepo() != null) { String login = login(); String name = repoId(); - manageSubscription(RxHelper.getObserver(RestProvider.getRepoService().checkStarring(login, name)) + manageDisposable(RxHelper.getObserver(RestProvider.getRepoService().checkStarring(login, name)) .doOnSubscribe(disposable -> sendToView(view -> view.onEnableDisableStar(false))) .doOnNext(response -> sendToView(view -> view.onRepoStarred(isStarred = response.code() == 204))) .subscribe(booleanResponse -> {/**/}, throwable -> { @@ -158,7 +163,7 @@ private void callApi(int navTyp) { @Override public void onWorkOffline() { if (!InputHelper.isEmpty(login()) && !InputHelper.isEmpty(repoId())) { - manageSubscription(RxHelper.getObserver(Repo.getRepo(repoId, login).toObservable()) + manageDisposable(RxHelper.getObserver(Repo.getRepo(repoId, login).toObservable()) .subscribe(repoModel -> { repo = repoModel; if (repo != null) { 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 5f81980ec..0009475b2 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 @@ -110,7 +110,7 @@ class RepoCommitsPresenter extends BasePresenter implements } return branchesModels; })); - manageSubscription(observable + manageDisposable(observable .doOnSubscribe(disposable -> sendToView(RepoCommitsMvp.View::showBranchesProgress)) .doOnNext(branchesModels -> { branches.clear(); @@ -134,7 +134,7 @@ class RepoCommitsPresenter extends BasePresenter implements @Override public void onWorkOffline() { if (commits.isEmpty()) { - manageSubscription(RxHelper.getObserver(Commit.getCommits(repoId, login).toObservable()) + manageDisposable(RxHelper.getObserver(Commit.getCommits(repoId, login).toObservable()) .subscribe(models -> sendToView(view -> view.onNotifyAdapter(models, 1)))); } else { sendToView(BaseMvp.FAView::hideProgress); @@ -160,7 +160,7 @@ class RepoCommitsPresenter extends BasePresenter implements @Override public void onItemLongClick(int position, View v, Commit item) {} private void getCommitCount(@NonNull String branch) { - manageSubscription(RxHelper.safeObservable(RxHelper.getObserver(RestProvider.getRepoService() + manageDisposable(RxHelper.safeObservable(RxHelper.getObserver(RestProvider.getRepoService() .getCommitCounts(login, repoId, branch))) .subscribe(response -> { if (response != null) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerPresenter.java index 7f738e47e..371f353a3 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/CommitPagerPresenter.java @@ -79,7 +79,7 @@ class CommitPagerPresenter extends BasePresenter implements } @Override public void onWorkOffline(@NonNull String sha, @NonNull String repoId, @NonNull String login) { - manageSubscription(RxHelper.getObserver(Commit.getCommit(sha, repoId, login)) + manageDisposable(RxHelper.getObserver(Commit.getCommit(sha, repoId, login)) .subscribe(commit -> { commitModel = commit; sendToView(CommitPagerMvp.View::onSetup); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsPresenter.java index a9ac5820b..cfa5b4640 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/commit/details/comments/CommitCommentsPresenter.java @@ -102,7 +102,7 @@ class CommitCommentsPresenter extends BasePresenter impl @Override public void onWorkOffline() { if (comments.isEmpty()) { - manageSubscription(RxHelper.getObserver(Comment.getCommitComments(repoId(), login(), sha).toObservable()) + manageDisposable(RxHelper.getObserver(Comment.getCommitComments(repoId(), login(), sha).toObservable()) .flatMap(comments -> Observable.just(TimelineModel.construct(comments))) .subscribe(models -> sendToView(view -> view.onNotifyAdapter(models, 1)))); } else { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/contributors/RepoContributorsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/contributors/RepoContributorsPresenter.java index 4762fe713..0bc2c498d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/contributors/RepoContributorsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/contributors/RepoContributorsPresenter.java @@ -81,7 +81,7 @@ class RepoContributorsPresenter extends BasePresenter @Override public void onWorkOffline() { if (users.isEmpty()) { - manageSubscription(RxHelper.getObserver(User.getUserContributorList(repoId).toObservable()) + manageDisposable(RxHelper.getObserver(User.getUserContributorList(repoId).toObservable()) .subscribe(userModels -> sendToView(view -> view.onNotifyAdapter(userModels, 1)))); } else { sendToView(BaseMvp.FAView::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java index e8cc0dcaf..f39914bd9 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/RepoFilesPresenter.java @@ -50,7 +50,7 @@ class RepoFilesPresenter extends BasePresenter implements Rep @Override public void onWorkOffline() { if ((repoId == null || login == null) || !files.isEmpty()) return; - manageSubscription(RxHelper.getObserver(RepoFile.getFiles(login, repoId).toObservable()) + manageDisposable(RxHelper.getObserver(RepoFile.getFiles(login, repoId).toObservable()) .flatMap(response -> { if (response != null) { return Observable.fromIterable(response).sorted((repoFile, repoFile2) -> repoFile2.getType().compareTo(repoFile.getType())); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathPresenter.java index e195e38ec..c95714470 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/files/paths/RepoFilePathPresenter.java @@ -99,7 +99,7 @@ class RepoFilePathPresenter extends BasePresenter implemen } return branchesModels; })); - manageSubscription(observable + manageDisposable(observable .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) .doOnNext(branchesModels -> { branches.clear(); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerPresenter.java index 187e8040b..63d4714e9 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/prettifier/ViewerPresenter.java @@ -70,7 +70,7 @@ class ViewerPresenter extends BasePresenter implements ViewerMvp @Override public void onWorkOffline() { if (downloadedStream == null) { - manageSubscription(RxHelper.getObserver(ViewerFile.get(url)) + manageDisposable(RxHelper.getObserver(ViewerFile.get(url)) .subscribe(fileModel -> { if (fileModel != null) { isImage = MarkDownProvider.isImage(fileModel.getFullUrl()); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesPresenter.java index e278f7a09..28c757fa5 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/code/releases/RepoReleasesPresenter.java @@ -89,7 +89,7 @@ private void onResponse(Pageable response) { @Override public void onWorkOffline() { if (releases.isEmpty()) { - manageSubscription(RxHelper.getSingle(Release.get(repoId, login)) + manageDisposable(RxHelper.getSingle(Release.get(repoId, login)) .subscribe(releasesModels -> sendToView(view -> view.onNotifyAdapter(releasesModels, 1)))); } else { sendToView(RepoReleasesMvp.View::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java index c8d5163fe..ae367866d 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/RepoIssuesPresenter.java @@ -11,7 +11,6 @@ import com.fastaccess.data.dao.types.IssueState; 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.RepoQueryProvider; import com.fastaccess.provider.rest.RestProvider; @@ -63,8 +62,8 @@ class RepoIssuesPresenter extends BasePresenter implements R return; } this.issueState = parameter; - Logger.e(page, page, login, repoId); if (page == 1) { + onCallCountApi(issueState); lastPage = Integer.MAX_VALUE; sendToView(view -> view.getLoadMore().reset()); } @@ -91,7 +90,7 @@ class RepoIssuesPresenter extends BasePresenter implements R } private void onCallCountApi(@NonNull IssueState issueState) { - manageSubscription(RxHelper.getObserver(RestProvider.getIssueService() + manageDisposable(RxHelper.getObserver(RestProvider.getIssueService() .getIssuesWithCount(RepoQueryProvider.getIssuesPullRequestQuery(login, repoId, issueState, false), 1)) .subscribe(pullRequestPageable -> sendToView(view -> view.onUpdateCount(pullRequestPageable.getTotalCount())), Throwable::printStackTrace)); @@ -103,13 +102,12 @@ private void onCallCountApi(@NonNull IssueState issueState) { this.issueState = issueState; if (!InputHelper.isEmpty(login) && !InputHelper.isEmpty(repoId)) { onCallApi(1, issueState); - onCallCountApi(issueState); } } @Override public void onWorkOffline() { if (issues.isEmpty()) { - manageSubscription(RxHelper.getSingle(Issue.getIssues(repoId, login, issueState)) + manageDisposable(RxHelper.getSingle(Issue.getIssues(repoId, login, issueState)) .subscribe(issueModel -> sendToView(view -> { view.onNotifyAdapter(issueModel, 1); view.onUpdateCount(issueModel.size()); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java index b0e87f2d3..9b46fee58 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerActivity.java @@ -126,7 +126,7 @@ public static Intent createIntent(@NonNull Context context, @NonNull String repo if (savedInstanceState == null) { getPresenter().onActivityCreated(getIntent()); } else { - if (getPresenter().isApiCalled()) onSetupIssue(); + if (getPresenter().getIssue() != null) onSetupIssue(); } startGist.setVisibility(View.GONE); forkGist.setVisibility(View.GONE); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerPresenter.java index 9f1689f43..6a89962e4 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/IssuePagerPresenter.java @@ -99,7 +99,7 @@ private void setupIssue(Issue issue) { @Override public void onWorkOffline(long issueNumber, @NonNull String repoId, @NonNull String login) { if (issueModel == null) { - manageSubscription(RxHelper.getObserver(Issue.getIssueByNumber((int) issueNumber, repoId, login)) + manageDisposable(RxHelper.getObserver(Issue.getIssueByNumber((int) issueNumber, repoId, login)) .subscribe(issueModel1 -> { if (issueModel1 != null) { issueModel = issueModel1; @@ -154,7 +154,7 @@ private void setupIssue(Issue issue) { Issue currentIssue = getIssue(); if (currentIssue != null) { IssueRequestModel requestModel = IssueRequestModel.clone(currentIssue, true); - manageSubscription(RxHelper.getObserver(RestProvider.getIssueService().editIssue(login, repoId, + manageDisposable(RxHelper.getObserver(RestProvider.getIssueService().editIssue(login, repoId, issueNumber, requestModel)) .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) .doOnNext(issue -> { @@ -192,7 +192,7 @@ private void setupIssue(Issue issue) { } @Override public void onLoadLabels() { - manageSubscription( + manageDisposable( RxHelper.getObserver(RestProvider.getRepoService().getLabels(login, repoId)) .doOnSubscribe(disposable -> onSubscribed()) .doOnNext(response -> { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelineFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelineFragment.java index 92f82e06d..709c2a990 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelineFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelineFragment.java @@ -206,7 +206,9 @@ public static IssueTimelineFragment newInstance(@NonNull Issue issueModel) { } @Override public void onSetHeader(@NonNull TimelineModel timelineModel) { - adapter.addItem(timelineModel, 0); + if (adapter != null && adapter.isEmpty()) { + adapter.addItem(timelineModel, 0); + } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelinePresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelinePresenter.java index 314ffb0a0..ea3066d71 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelinePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/issues/issue/details/timeline/IssueTimelinePresenter.java @@ -43,7 +43,6 @@ public class IssueTimelinePresenter extends BasePresenter private int previousTotal; private int lastPage = Integer.MAX_VALUE; - @Override public boolean isPreviouslyReacted(long commentId, int vId) { return getReactionsProvider().isPreviouslyReacted(commentId, vId); } @@ -136,6 +135,14 @@ public class IssueTimelinePresenter extends BasePresenter return timeline; } + @Override protected void onCreate() { + super.onCreate(); + if (issue != null && timeline.isEmpty()) { + sendToView(view -> view.onSetHeader(TimelineModel.constructHeader(issue))); + onCallApi(1, null); + } + } + @Override public void onFragmentCreated(@Nullable Bundle bundle) { if (bundle == null) throw new NullPointerException("Bundle is null?"); issue = bundle.getParcelable(BundleConstant.ITEM); @@ -187,7 +194,7 @@ public class IssueTimelinePresenter extends BasePresenter String login = login(); String repoId = repoId(); Observable observable = getReactionsProvider().onHandleReaction(viewId, id, login, repoId, reactionType); - if (observable != null) manageSubscription(observable.subscribe()); + if (observable != null) manageObservable(observable); } @Override public boolean isCallingApi(long id, int vId) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/RepoPullRequestPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/RepoPullRequestPresenter.java index 05a7f6389..2bb109314 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/RepoPullRequestPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/RepoPullRequestPresenter.java @@ -60,6 +60,7 @@ class RepoPullRequestPresenter extends BasePresenter im } this.issueState = parameter; if (page == 1) { + onCallCountApi(issueState); lastPage = Integer.MAX_VALUE; sendToView(view -> view.getLoadMore().reset()); } @@ -84,12 +85,11 @@ class RepoPullRequestPresenter extends BasePresenter im issueState = (IssueState) bundle.getSerializable(BundleConstant.EXTRA_TWO); if (!InputHelper.isEmpty(login) && !InputHelper.isEmpty(repoId)) { onCallApi(1, issueState); - onCallCountApi(issueState); } } private void onCallCountApi(@NonNull IssueState issueState) { - manageSubscription(RxHelper.getObserver(RestProvider.getPullRequestService() + manageDisposable(RxHelper.getObserver(RestProvider.getPullRequestService() .getPullsWithCount(RepoQueryProvider.getIssuesPullRequestQuery(login, repoId, issueState, true), 0)) .subscribe(pullRequestPageable -> sendToView(view -> view.onUpdateCount(pullRequestPageable.getTotalCount())), Throwable::printStackTrace)); @@ -97,7 +97,7 @@ private void onCallCountApi(@NonNull IssueState issueState) { @Override public void onWorkOffline() { if (pullRequests.isEmpty()) { - manageSubscription(RxHelper.getSingle(PullRequest.getPullRequests(repoId, login, issueState)) + manageDisposable(RxHelper.getSingle(PullRequest.getPullRequests(repoId, login, issueState)) .subscribe(pulls -> sendToView(view -> { view.onNotifyAdapter(pulls, 1); view.onUpdateCount(pulls.size()); 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 8a21be9c0..27c06f574 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 @@ -127,7 +127,7 @@ public static Intent createIntent(@NonNull Context context, @NonNull String repo if (savedInstanceState == null) { getPresenter().onActivityCreated(getIntent()); } else { - if (getPresenter().isApiCalled()) onSetupIssue(); + if (getPresenter().getPullRequest() != null) onSetupIssue(); } startGist.setVisibility(View.GONE); forkGist.setVisibility(View.GONE); @@ -249,8 +249,7 @@ public static Intent createIntent(@NonNull Context context, @NonNull String repo supportInvalidateOptionsMenu(); PullRequest pullRequest = getPresenter().getPullRequest(); setTitle(String.format("#%s", pullRequest.getNumber())); - boolean isMerge = !InputHelper.isEmpty(pullRequest.getMergedAt()); - date.setText(getPresenter().getMergeBy(pullRequest, getApplicationContext()) + "\n" + pullRequest.getRepoId()); + date.setText(String.format("%s\n%s", getPresenter().getMergeBy(pullRequest, getApplicationContext()), pullRequest.getRepoId())); size.setVisibility(View.GONE); User userModel = pullRequest.getUser(); if (userModel != null) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java index 13e7670b1..0cb1c4388 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/PullRequestPagerPresenter.java @@ -98,7 +98,7 @@ class PullRequestPagerPresenter extends BasePresenter @Override public void onWorkOffline() { if (pullRequest == null) { - manageSubscription(PullRequest.getPullRequestByNumber(issueNumber, repoId, login) + manageDisposable(PullRequest.getPullRequestByNumber(issueNumber, repoId, login) .subscribe(pullRequestModel -> { if (pullRequestModel != null) { pullRequest = pullRequestModel; @@ -166,7 +166,7 @@ class PullRequestPagerPresenter extends BasePresenter @Override public void onOpenCloseIssue() { if (getPullRequest() != null) { IssueRequestModel requestModel = IssueRequestModel.clone(getPullRequest(), true); - manageSubscription(RxHelper.getObserver(RestProvider.getPullRequestService().editPullRequest(login, repoId, + manageDisposable(RxHelper.getObserver(RestProvider.getPullRequestService().editPullRequest(login, repoId, issueNumber, requestModel)) .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) .doOnNext(issue -> { @@ -188,7 +188,7 @@ class PullRequestPagerPresenter extends BasePresenter } @Override public void onLoadLabels() { - manageSubscription( + manageDisposable( RxHelper.getObserver(RestProvider.getRepoService().getLabels(login, repoId)) .doOnSubscribe(disposable -> onSubscribed()) .doOnNext(response -> { @@ -264,7 +264,7 @@ class PullRequestPagerPresenter extends BasePresenter MergeRequestModel mergeRequestModel = new MergeRequestModel(); mergeRequestModel.setSha(getPullRequest().getHead().getSha()); mergeRequestModel.setCommitMessage(msg); - manageSubscription( + manageDisposable( RxHelper.getObserver(RestProvider.getPullRequestService().mergePullRequest(login, repoId, issueNumber, mergeRequestModel)) .doOnSubscribe(disposable -> sendToView(view -> view.showProgress(0))) .doOnNext(mergeResponseModel -> { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/commits/PullRequestCommitsPresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/commits/PullRequestCommitsPresenter.java index f8ae6f150..85d1fc958 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/commits/PullRequestCommitsPresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/commits/PullRequestCommitsPresenter.java @@ -86,7 +86,7 @@ class PullRequestCommitsPresenter extends BasePresenter sendToView(view -> view.onNotifyAdapter(models, 1)))); } else { sendToView(BaseMvp.FAView::hideProgress); diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelineFragment.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelineFragment.java index 7da401b5b..cfc0652fa 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelineFragment.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelineFragment.java @@ -279,7 +279,9 @@ public static PullRequestTimelineFragment newInstance(@NonNull PullRequest pullR } @Override public void onSetHeader(@NonNull TimelineModel timelineModel) { - adapter.addItem(timelineModel, 0); + if (adapter != null && adapter.isEmpty()) { + adapter.addItem(timelineModel, 0); + } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { diff --git a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java index a8628517c..081809194 100644 --- a/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java +++ b/app/src/main/java/com/fastaccess/ui/modules/repos/pull_requests/pull_request/details/timeline/timeline/PullRequestTimelinePresenter.java @@ -21,7 +21,6 @@ import com.fastaccess.helper.ActivityHelper; import com.fastaccess.helper.BundleConstant; import com.fastaccess.helper.InputHelper; -import com.fastaccess.helper.RxHelper; import com.fastaccess.provider.rest.RestProvider; import com.fastaccess.provider.scheme.SchemeParser; import com.fastaccess.provider.timeline.CommentsHelper; @@ -145,6 +144,14 @@ public class PullRequestTimelinePresenter extends BasePresenter view.onSetHeader(TimelineModel.constructHeader(pullRequest))); + onCallApi(1, null); + } + } + @Override public void onFragmentCreated(@Nullable Bundle bundle) { if (bundle == null) throw new NullPointerException("Bundle is null?"); pullRequest = bundle.getParcelable(BundleConstant.ITEM); @@ -209,7 +216,7 @@ public class PullRequestTimelinePresenter extends BasePresenter implements SearchMvp @Override protected void onAttachView(@NonNull SearchMvp.View view) { super.onAttachView(view); if (hints.isEmpty()) { - manageSubscription(SearchHistory.getHistory() + manageDisposable(SearchHistory.getHistory() .subscribe(strings -> { hints.clear(); if (strings != null) hints.addAll(strings); 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 e82d20fc3..0d654c915 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/DiffLineSpan.java @@ -8,6 +8,7 @@ import android.support.annotation.ColorInt; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.v4.content.ContextCompat; import android.text.SpannableString; import android.text.SpannableStringBuilder; import android.text.Spanned; @@ -16,6 +17,8 @@ import android.text.style.MetricAffectingSpan; import android.text.style.TypefaceSpan; +import com.fastaccess.App; +import com.fastaccess.R; import com.fastaccess.helper.InputHelper; import com.fastaccess.helper.Logger; @@ -59,6 +62,7 @@ private void apply(TextPaint paint) { @NonNull public static SpannableStringBuilder getSpannable(@Nullable String text, @ColorInt int patchAdditionColor, @ColorInt int patchDeletionColor, @ColorInt int patchRefColor, boolean truncate) { + boolean noNewlineRemoved = false; SpannableStringBuilder builder = new SpannableStringBuilder(); if (!InputHelper.isEmpty(text)) { String[] split = text.split("\\r?\\n|\\r"); @@ -67,7 +71,6 @@ private void apply(TextPaint paint) { for (int i = 0; i < lines; i++) { Logger.e(lines, i, lines + i, lines - i); if (truncate && (lines - i) > 3) continue; -// if(truncate && (lines - i)) String token = split[i]; if (i < (lines - 1)) { token = token.concat("\n"); @@ -80,9 +83,10 @@ private void apply(TextPaint paint) { color = patchDeletionColor; } else if (token.startsWith("@@")) { color = patchRefColor; + } else if (firstChar == '\\') { + token = token.replace("\\ No newline at end of file", ""); + noNewlineRemoved = true; } - String noNewLine = "\\No newline at end of file"; - token = token.replace(noNewLine, ""); SpannableString spannableDiff = new SpannableString(token); if (color != Color.TRANSPARENT) { DiffLineSpan span = new DiffLineSpan(color); @@ -92,6 +96,10 @@ private void apply(TextPaint paint) { } } } + if (noNewlineRemoved) { + builder.insert(builder.length() - 1, SpannableBuilder.builder() + .append(ContextCompat.getDrawable(App.getInstance(), R.drawable.ic_newline))); + } builder.setSpan(new TypefaceSpan("monospace"), 0, builder.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); return builder; } diff --git a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BaseRecyclerAdapter.java b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BaseRecyclerAdapter.java index 1deccdf1f..f700c1565 100644 --- a/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BaseRecyclerAdapter.java +++ b/app/src/main/java/com/fastaccess/ui/widgets/recyclerview/BaseRecyclerAdapter.java @@ -147,6 +147,10 @@ public void clear() { notifyDataSetChanged(); } + public boolean isEmpty() { + return data.isEmpty(); + } + public void setEnableAnimation(boolean enableAnimation) { this.enableAnimation = enableAnimation; notifyDataSetChanged(); diff --git a/app/src/main/res/drawable/ic_newline.xml b/app/src/main/res/drawable/ic_newline.xml new file mode 100644 index 000000000..769ed6960 --- /dev/null +++ b/app/src/main/res/drawable/ic_newline.xml @@ -0,0 +1,10 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/layouts/main_layouts/layout/editor_layout.xml b/app/src/main/res/layouts/main_layouts/layout/editor_layout.xml index bf4b4c8fb..631b05a57 100644 --- a/app/src/main/res/layouts/main_layouts/layout/editor_layout.xml +++ b/app/src/main/res/layouts/main_layouts/layout/editor_layout.xml @@ -187,7 +187,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?selectableItemBackgroundBorderless" - android:contentDescription="@string/numbered_list" + android:contentDescription="@string/todo_checked" android:padding="@dimen/spacing_normal" android:scaleType="centerCrop" android:src="@drawable/ic_checkbox"/> @@ -197,7 +197,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?selectableItemBackgroundBorderless" - android:contentDescription="@string/numbered_list" + android:contentDescription="@string/todo_unchecked" android:padding="@dimen/spacing_normal" android:scaleType="centerCrop" android:src="@drawable/ic_checkbox_empty"/> @@ -207,7 +207,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?selectableItemBackgroundBorderless" - android:contentDescription="@string/header" + android:contentDescription="@string/divider" android:padding="@dimen/spacing_normal" android:scaleType="centerCrop" android:src="@drawable/ic_minus"/> diff --git a/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml b/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml index bd6a7a42a..3dd6146d6 100644 --- a/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml +++ b/app/src/main/res/layouts/main_layouts/layout/title_header_layout.xml @@ -32,90 +32,90 @@ + android:orientation="vertical"> + android:orientation="horizontal"> - - - - - - - - - - + + + - - - + android:orientation="horizontal"> + + + + + + + + + diff --git a/app/src/main/res/layouts/row_layouts/layout/commit_file_row_item.xml b/app/src/main/res/layouts/row_layouts/layout/commit_file_row_item.xml index 13ac755e9..23ed768dd 100644 --- a/app/src/main/res/layouts/row_layouts/layout/commit_file_row_item.xml +++ b/app/src/main/res/layouts/row_layouts/layout/commit_file_row_item.xml @@ -37,7 +37,7 @@ android:id="@+id/toggle" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:padding="@dimen/spacing_normal" + android:padding="@dimen/spacing_micro" android:background="?selectableItemBackgroundBorderless" android:src="@drawable/ic_arrow_drop_down"/> @@ -46,7 +46,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="?selectableItemBackgroundBorderless" - android:padding="@dimen/spacing_normal" + android:padding="@dimen/spacing_micro" android:src="@drawable/ic_overflow"/> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3195b1b51..65e6f8fea 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -460,4 +460,8 @@ Sort by emojies is not really working due to GitHub limitation Scroll Up Scroll down + Participated + Todo checked + Todo unchecked + Divider \ No newline at end of file diff --git a/build.gradle b/build.gradle index e45d920a3..bd8681300 100644 --- a/build.gradle +++ b/build.gradle @@ -21,15 +21,14 @@ buildscript { repositories { jcenter() maven { url "https://maven.google.com" } + maven { url 'https://maven.fabric.io/public' } } dependencies { classpath 'com.android.tools.build:gradle:2.4.0-alpha7' classpath 'com.google.gms:google-services:3.0.0' - classpath('com.google.firebase:firebase-plugins:1.0.5') { - exclude group: 'com.google.guava', module: 'guava-jdk5' - } classpath 'com.novoda:gradle-build-properties-plugin:0.3' classpath 'com.dicedmelon.gradle:jacoco-android:0.1.1' + classpath 'io.fabric.tools:gradle:1.+' // classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" } }