From 059fbc9d7512e678e02bbe87755037b9172dadc3 Mon Sep 17 00:00:00 2001 From: k0shk0sh Date: Thu, 26 Dec 2019 10:16:05 +0100 Subject: [PATCH] this fixes #2810 --- .../tasks/git/GithubActionService.java | 66 ++++++++++++------- .../provider/timeline/CommentsHelper.java | 1 + 2 files changed, 43 insertions(+), 24 deletions(-) diff --git a/app/src/main/java/com/fastaccess/provider/tasks/git/GithubActionService.java b/app/src/main/java/com/fastaccess/provider/tasks/git/GithubActionService.java index 66120d2c..ba4240a5 100644 --- a/app/src/main/java/com/fastaccess/provider/tasks/git/GithubActionService.java +++ b/app/src/main/java/com/fastaccess/provider/tasks/git/GithubActionService.java @@ -5,6 +5,7 @@ import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; + import androidx.annotation.IntDef; import androidx.annotation.NonNull; import androidx.annotation.Nullable; @@ -18,6 +19,7 @@ import com.fastaccess.provider.rest.RestProvider; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; +import io.reactivex.disposables.CompositeDisposable; import io.reactivex.schedulers.Schedulers; @@ -37,6 +39,7 @@ public class GithubActionService extends IntentService { public static final int FORK_GIST = 8; private NotificationCompat.Builder notification; private NotificationManager notificationManager; + private CompositeDisposable disposable = new CompositeDisposable(); @IntDef({ STAR_REPO, @@ -112,99 +115,114 @@ public class GithubActionService extends IntentService { } } + @Override public void onDestroy() { + disposable.clear(); + super.onDestroy(); + } + private void forkGist(@Nullable String id, boolean isEnterprise) { if (id != null) { String msg = getString(R.string.forking, getString(R.string.gist)); - RestProvider.getGistService(isEnterprise) - .forkGist(id) - .doOnSubscribe(disposable -> showNotification(msg)) - .subscribeOn(Schedulers.io()) - .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + disposable.add( + RestProvider.getGistService(isEnterprise) + .forkGist(id) + .doOnSubscribe(disposable -> showNotification(msg)) + .subscribeOn(Schedulers.io()) + .subscribe(response -> { + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void forkRepo(@Nullable String id, @Nullable String login, boolean isEnterprise) { if (id != null && login != null) { String msg = getString(R.string.forking, id); - RestProvider.getRepoService(isEnterprise) - .forkRepo(login, id) - .doOnSubscribe(disposable -> showNotification(msg)) - .subscribeOn(Schedulers.io()) - .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + disposable.add( + RestProvider.getRepoService(isEnterprise) + .forkRepo(login, id) + .doOnSubscribe(disposable -> showNotification(msg)) + .subscribeOn(Schedulers.io()) + .subscribe(response -> { + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void starGist(@Nullable String id, boolean isEnterprise) { if (id != null) { String msg = getString(R.string.starring, getString(R.string.gist)); - RestProvider.getGistService(isEnterprise) + disposable.add(RestProvider.getGistService(isEnterprise) .starGist(id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void starRepo(@Nullable String id, @Nullable String login, boolean isEnterprise) { if (id != null && login != null) { String msg = getString(R.string.starring, id); - RestProvider.getRepoService(isEnterprise) + disposable.add(RestProvider.getRepoService(isEnterprise) .starRepo(login, id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void unStarGist(@Nullable String id, boolean isEnterprise) { if (id != null) { String msg = getString(R.string.un_starring, getString(R.string.gist)); - RestProvider.getGistService(isEnterprise) + disposable.add(RestProvider.getGistService(isEnterprise) .unStarGist(id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void unStarRepo(@Nullable String id, @Nullable String login, boolean isEnterprise) { if (id != null && login != null) { String msg = getString(R.string.un_starring, id); - RestProvider.getRepoService(isEnterprise) + disposable.add(RestProvider.getRepoService(isEnterprise) .unstarRepo(login, id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void unWatchRepo(@Nullable String id, @Nullable String login, boolean isEnterprise) { if (id != null && login != null) { String msg = getString(R.string.un_watching, id); - RestProvider.getRepoService(isEnterprise) + disposable.add(RestProvider.getRepoService(isEnterprise) .unwatchRepo(login, id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } private void watchRepo(@Nullable String id, @Nullable String login, boolean isEnterprise) { if (id != null && login != null) { String msg = getString(R.string.watching, id); - RestProvider.getRepoService(isEnterprise) + disposable.add(RestProvider.getRepoService(isEnterprise) .watchRepo(login, id) .doOnSubscribe(disposable -> showNotification(msg)) .subscribeOn(Schedulers.io()) .subscribe(response -> { - }, throwable -> hideNotification(msg), () -> hideNotification(msg)); + }, throwable -> hideNotification(msg), () -> hideNotification(msg)) + ); } } diff --git a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java index 3be60d73..1dde1391 100644 --- a/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java +++ b/app/src/main/java/com/fastaccess/provider/timeline/CommentsHelper.java @@ -115,6 +115,7 @@ public class CommentsHelper { @NonNull public static ArrayList getUsers(@NonNull List comments) { return Stream.of(comments) + .filter(comment -> comment.getUser() != null) .map(comment -> comment.getUser().getLogin()) .distinct() .collect(Collectors.toCollection(ArrayList::new));