diff --git a/app/build.gradle b/app/build.gradle index 46703faa..e74f6b4d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -27,8 +27,8 @@ android { applicationId "com.fastaccess.github" minSdkVersion 21 targetSdkVersion 25 - versionCode 111 - versionName "1.1.1" + versionCode 120 + versionName "1.2.0" signingConfig signingConfigs.signing buildConfigString "GITHUB_CLIENT_ID", (buildProperties.secrets['github_client_id'] | buildProperties.notThere['github_client_id']).string buildConfigString "GITHUB_SECRET", (buildProperties.secrets['github_secret'] | buildProperties.notThere['github_secret']).string diff --git a/app/src/main/java/com/fastaccess/App.java b/app/src/main/java/com/fastaccess/App.java index 46df77e8..6e6864a0 100644 --- a/app/src/main/java/com/fastaccess/App.java +++ b/app/src/main/java/com/fastaccess/App.java @@ -15,7 +15,6 @@ import io.requery.meta.EntityModel; import io.requery.rx.RxSupport; import io.requery.rx.SingleEntityStore; import io.requery.sql.Configuration; -import io.requery.sql.ConfigurationBuilder; import io.requery.sql.EntityDataStore; import io.requery.sql.TableCreationMode; @@ -46,9 +45,7 @@ public class App extends MultiDexApplication { if (dataStore == null) { EntityModel model = Models.DEFAULT; DatabaseSource source = new DatabaseSource(this, model, "FastHub-DB", 1); - Configuration configuration = new ConfigurationBuilder(source, model) - .useDefaultLogging() - .build(); + Configuration configuration = source.getConfiguration(); if (BuildConfig.DEBUG) { source.setTableCreationMode(TableCreationMode.DROP_CREATE); } diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractComment.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractComment.java index 802f51f4..8edf77e0 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractComment.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractComment.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.converters.UserConverter; @@ -61,79 +62,72 @@ import static com.fastaccess.data.dao.model.Comment.UPDATED_AT; .andThen(App.getInstance().getDataStore().insert(modelEntity).toCompletable()); } - public static Completable saveForGist(@NonNull List models, @NonNull String gistId) { + public static Observable saveForGist(@NonNull List models, @NonNull String gistId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Comment.class) + singleEntityStore.delete(Comment.class) .where(GIST_ID.equal(gistId)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(model -> { - model.setGistId(gistId); - return model.save(model); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(model -> { + model.setGistId(gistId); + model.save(model).toObservable().toBlocking().singleOrDefault(null); + })); } - public static Completable saveForCommits(@NonNull List models, @NonNull String repoId, - @NonNull String login, @NonNull String commitId) { + public static Observable saveForCommits(@NonNull List models, @NonNull String repoId, + @NonNull String login, @NonNull String commitId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Comment.class) + singleEntityStore.delete(Comment.class) .where(COMMIT_ID.equal(commitId) .and(REPO_ID.equal(repoId)) .and(LOGIN.equal(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(model -> { - model.setLogin(login); - model.setRepoId(repoId); - model.setCommitId(commitId); - return model.save(model); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(model -> { + model.setLogin(login); + model.setRepoId(repoId); + model.setCommitId(commitId); + model.save(model).toObservable().toBlocking().singleOrDefault(null); + })); } - public static Completable saveForIssues(@NonNull List models, @NonNull String repoId, - @NonNull String login, @NonNull String issueId) { + public static Observable saveForIssues(@NonNull List models, @NonNull String repoId, + @NonNull String login, @NonNull String issueId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Comment.class) + singleEntityStore.delete(Comment.class) .where(ISSUE_ID.equal(issueId) .and(REPO_ID.equal(repoId)) .and(LOGIN.equal(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(model -> { - model.setLogin(login); - model.setRepoId(repoId); - model.setIssueId(issueId); - return model.save(model); - })) - .toCompletable(); + .value(); + + return Observable.create(subscriber -> Stream.of(models) + .forEach(model -> { + model.setLogin(login); + model.setRepoId(repoId); + model.setIssueId(issueId); + model.save(model).toObservable().toBlocking().singleOrDefault(null); + })); } - public static Completable saveForPullRequest(@NonNull List models, @NonNull String repoId, - @NonNull String login, @NonNull String pullRequestId) { + public static Observable saveForPullRequest(@NonNull List models, @NonNull String repoId, + @NonNull String login, @NonNull String pullRequestId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Comment.class) + singleEntityStore.delete(Comment.class) .where(PULL_REQUEST_ID.equal(pullRequestId) .and(REPO_ID.equal(repoId)) .and(LOGIN.equal(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(model -> { - model.setLogin(login); - model.setRepoId(repoId); - model.setPullRequestId(pullRequestId); - return model.save(model); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(model -> { + model.setLogin(login); + model.setRepoId(repoId); + model.setPullRequestId(pullRequestId); + model.save(model).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getGistComments(@NonNull String gistId) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractCommit.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractCommit.java index 2a5f707a..0dafe2ae 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractCommit.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractCommit.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.CommitFileListModel; import com.fastaccess.data.dao.CommitListModel; @@ -63,40 +64,36 @@ public abstract class AbstractCommit implements Parcelable { .toCompletable(); } - public static Completable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { + public static Observable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Commit.class) + singleEntityStore.delete(Commit.class) .where(REPO_ID.eq(repoId) .and(LOGIN.eq(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(commitModel -> { - commitModel.setRepoId(repoId); - commitModel.setLogin(login); - return commitModel.save(commitModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(commitModel -> { + commitModel.setRepoId(repoId); + commitModel.setLogin(login); + commitModel.save(commitModel).toObservable().toBlocking().singleOrDefault(null); + })); } - public static Completable save(@NonNull List models, @NonNull String repoId, @NonNull String login, long number) { + public static Observable save(@NonNull List models, @NonNull String repoId, @NonNull String login, long number) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Commit.class) + singleEntityStore.delete(Commit.class) .where(REPO_ID.eq(repoId) .and(LOGIN.eq(login)) .and(PULL_REQUEST_NUMBER.eq(number))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(commitModel -> { - commitModel.setRepoId(repoId); - commitModel.setLogin(login); - commitModel.setPullRequestNumber(number); - return commitModel.save(commitModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(commitModel -> { + commitModel.setRepoId(repoId); + commitModel.setLogin(login); + commitModel.setPullRequestNumber(number); + commitModel.save(commitModel).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getCommits(@NonNull String repoId, @NonNull String login) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractGist.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractGist.java index 99fbe1b2..9d3cc077 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractGist.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractGist.java @@ -70,6 +70,7 @@ import rx.Observable; public static Completable save(@NonNull List gists) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); return singleEntityStore.delete(Gist.class) + .where(Gist.OWNER_NAME.isNull()) .get() .toSingle() .toCompletable() @@ -78,19 +79,17 @@ import rx.Observable; .toCompletable(); } - public static Completable save(@NonNull List gists, @NonNull String ownerName) { + public static Observable save(@NonNull List gists, @NonNull String ownerName) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Gist.class) + singleEntityStore.delete(Gist.class) .where(Gist.OWNER_NAME.equal(ownerName)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(gists) - .map(gistsModel -> { - gistsModel.setOwnerName(ownerName); - return gistsModel.save(gistsModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(gists) + .forEach(gistsModel -> { + gistsModel.setOwnerName(ownerName); + gistsModel.save(gistsModel).toObservable().toBlocking().singleOrDefault(null); + })); } @NonNull public static Observable> getMyGists(@NonNull String ownerName) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssue.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssue.java index 0c775ea6..7086ff54 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssue.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssue.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.LabelListModel; import com.fastaccess.data.dao.MilestoneModel; @@ -77,22 +78,19 @@ import static com.fastaccess.data.dao.model.Issue.UPDATED_AT; .toCompletable()); } - public static Completable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { + public static Observable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Issue.class) + singleEntityStore.delete(Issue.class) .where(REPO_ID.equal(repoId) .and(LOGIN.equal(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(issueModel -> { - issueModel.setRepoId(repoId); - issueModel.setLogin(login); - return issueModel.save(issueModel); - })) - .toCompletable(); - + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(issueModel -> { + issueModel.setRepoId(repoId); + issueModel.setLogin(login); + issueModel.save(issueModel).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getIssues(@NonNull String repoId, @NonNull String login, @NonNull IssueState issueState) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssueEvent.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssueEvent.java index 17482bda..812a6d7b 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssueEvent.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractIssueEvent.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.LabelModel; import com.fastaccess.data.dao.MilestoneModel; @@ -68,24 +69,22 @@ import static com.fastaccess.data.dao.model.IssueEvent.REPO_ID; .toCompletable()); } - public static Completable save(@NonNull List models, @NonNull String repoId, - @NonNull String login, @NonNull String issueId) { + public static Observable save(@NonNull List models, @NonNull String repoId, + @NonNull String login, @NonNull String issueId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(IssueEvent.class) + singleEntityStore.delete(IssueEvent.class) .where(LOGIN.equal(login) .and(REPO_ID.equal(repoId)) .and(ISSUE_ID.equal(issueId))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(issueEventModel -> { - issueEventModel.setIssueId(issueId); - issueEventModel.setLogin(login); - issueEventModel.setRepoId(repoId); - return issueEventModel.save(issueEventModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(issueEventModel -> { + issueEventModel.setIssueId(issueId); + issueEventModel.setLogin(login); + issueEventModel.setRepoId(repoId); + issueEventModel.save(issueEventModel).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> get(@NonNull String repoId, @NonNull String login, diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractNotification.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractNotification.java index 9609a479..5cc0e1e1 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractNotification.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractNotification.java @@ -3,6 +3,7 @@ package com.fastaccess.data.dao.model; import android.os.Parcel; import android.os.Parcelable; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.NotificationSubjectModel; import com.fastaccess.data.dao.converters.NotificationSubjectConverter; @@ -48,15 +49,13 @@ import rx.Observable; .toCompletable()); } - public static Completable save(@NonNull List models) { + public static Observable save(@NonNull List models) { SingleEntityStore dataSource = App.getInstance().getDataStore(); - return dataSource.delete(Notification.class) + dataSource.delete(Notification.class) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(notification -> notification.save(notification))) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(notification -> notification.save(notification).toObservable().toBlocking().singleOrDefault(null))); } public static Observable> getNotifications() { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java index 87c7d138..0f62a05a 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractPullRequest.java @@ -5,6 +5,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.R; import com.fastaccess.data.dao.LabelListModel; @@ -96,21 +97,19 @@ import static com.fastaccess.data.dao.model.PullRequest.UPDATED_AT; .toCompletable()); } - public static Completable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { + public static Observable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(PullRequest.class) + singleEntityStore.delete(PullRequest.class) .where(REPO_ID.equal(repoId) .and(LOGIN.equal(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(pulRequest -> { - pulRequest.setRepoId(repoId); - pulRequest.setLogin(login); - return pulRequest.save(pulRequest); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(pulRequest -> { + pulRequest.setRepoId(repoId); + pulRequest.setLogin(login); + pulRequest.save(pulRequest).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getPullRequests(@NonNull String repoId, @NonNull String login, diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRelease.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRelease.java index a1d2d9be..17c4402e 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRelease.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRelease.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.ReleasesAssetsListModel; import com.fastaccess.data.dao.converters.ReleasesAssetsConverter; @@ -65,20 +66,18 @@ public abstract class AbstractRelease implements Parcelable { .toCompletable()); } - public static Completable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { + public static Observable save(@NonNull List models, @NonNull String repoId, @NonNull String login) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Release.class) + singleEntityStore.delete(Release.class) .where(REPO_ID.eq(login)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(releasesModel -> { - releasesModel.setRepoId(repoId); - releasesModel.setLogin(login); - return releasesModel.save(releasesModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(releasesModel -> { + releasesModel.setRepoId(repoId); + releasesModel.setLogin(login); + releasesModel.save(releasesModel).toObservable().toBlocking().singleOrDefault(null); + })); } diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepo.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepo.java index a2ee092a..f3e52704 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepo.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepo.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.LicenseModel; import com.fastaccess.data.dao.RepoPermissionsModel; @@ -139,34 +140,30 @@ import static com.fastaccess.data.dao.model.Repo.UPDATED_AT; .firstOrNull(); } - public static Completable saveStarred(@NonNull List models, @NonNull String starredUser) { + public static Observable saveStarred(@NonNull List models, @NonNull String starredUser) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Repo.class) + singleEntityStore.delete(Repo.class) .where(STARRED_USER.eq(starredUser)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(repoModel -> { - repoModel.setStarredUser(starredUser); - return repoModel.save(repoModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(repo -> { + repo.setStarredUser(starredUser); + repo.save(repo).toObservable().toBlocking().singleOrDefault(null); + })); } - public static Completable saveMyRepos(@NonNull List models, @NonNull String reposOwner) { + public static Observable saveMyRepos(@NonNull List models, @NonNull String reposOwner) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(Repo.class) + singleEntityStore.delete(Repo.class) .where(REPOS_OWNER.eq(reposOwner)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(repoModel -> { - repoModel.setReposOwner(reposOwner); - return repoModel.save(repoModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(repo -> { + repo.setReposOwner(reposOwner); + repo.save(repo).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getStarred(@NonNull String starredUser) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepoFile.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepoFile.java index 1f81d55f..4b3ddb64 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepoFile.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractRepoFile.java @@ -4,6 +4,7 @@ import android.os.Parcel; import android.os.Parcelable; import android.support.annotation.NonNull; +import com.annimon.stream.Stream; import com.fastaccess.App; import com.fastaccess.data.dao.types.FilesType; @@ -48,21 +49,19 @@ import static com.fastaccess.data.dao.model.RepoFile.TYPE; .toCompletable(); } - public static Completable save(@NonNull List models, @NonNull String login, @NonNull String repoId) { + public static Observable save(@NonNull List models, @NonNull String login, @NonNull String repoId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(RepoFile.class) + singleEntityStore.delete(RepoFile.class) .where(REPO_ID.eq(repoId) .and(LOGIN.eq(login))) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(filesModel -> { - filesModel.setRepoId(repoId); - filesModel.setLogin(login); - return filesModel.save(filesModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(filesModel -> { + filesModel.setRepoId(repoId); + filesModel.setLogin(login); + filesModel.save(filesModel).toObservable().toBlocking().singleOrDefault(null); + })); } public static Observable> getFiles(@NonNull String login, @NonNull String repoId) { diff --git a/app/src/main/java/com/fastaccess/data/dao/model/AbstractUser.java b/app/src/main/java/com/fastaccess/data/dao/model/AbstractUser.java index ab401772..f393efb7 100644 --- a/app/src/main/java/com/fastaccess/data/dao/model/AbstractUser.java +++ b/app/src/main/java/com/fastaccess/data/dao/model/AbstractUser.java @@ -5,6 +5,7 @@ import android.os.Parcelable; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import com.annimon.stream.Stream; import com.fastaccess.App; import java.util.Date; @@ -110,49 +111,43 @@ public abstract class AbstractUser implements Parcelable { .firstOrNull(); } - public static Completable saveUserFollowerList(@NonNull List models, @NonNull String followingName) { + public static Observable saveUserFollowerList(@NonNull List models, @NonNull String followingName) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(User.class) + singleEntityStore.delete(User.class) .where(FOLLOWING_NAME.eq(followingName)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(userModel -> { - userModel.setFollowingName(followingName); - return userModel.saveToCompletable(userModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(userModel -> { + userModel.setFollowingName(followingName); + userModel.save(userModel); + })); } - public static Completable saveUserFollowingList(@NonNull List models, @NonNull String followerName) { + public static Observable saveUserFollowingList(@NonNull List models, @NonNull String followerName) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(User.class) + singleEntityStore.delete(User.class) .where(FOLLOWER_NAME.eq(followerName)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(userModel -> { - userModel.setFollowerName(followerName); - return userModel.saveToCompletable(userModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(userModel -> { + userModel.setFollowerName(followerName); + userModel.save(userModel); + })); } - public static Completable saveUserContributorList(@NonNull List models, @NonNull String repoId) { + public static Observable saveUserContributorList(@NonNull List models, @NonNull String repoId) { SingleEntityStore singleEntityStore = App.getInstance().getDataStore(); - return singleEntityStore.delete(User.class) + singleEntityStore.delete(User.class) .where(REPO_ID.eq(repoId)) .get() - .toSingle() - .toCompletable() - .andThen(Observable.from(models) - .map(userModel -> { - userModel.setRepoId(repoId); - return userModel.saveToCompletable(userModel); - })) - .toCompletable(); + .value(); + return Observable.create(subscriber -> Stream.of(models) + .forEach(userModel -> { + userModel.setRepoId(repoId); + userModel.save(userModel); + })); } diff --git a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java index 1be410ee..f61ac982 100644 --- a/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java +++ b/app/src/main/java/com/fastaccess/provider/tasks/notification/NotificationSchedulerJobTask.java @@ -82,7 +82,7 @@ public class NotificationSchedulerJobTask extends JobService { private void onSave(@Nullable List notificationThreadModels) { if (notificationThreadModels != null) { Notification.save(notificationThreadModels) - .subscribe(() -> onNotifyUser(notificationThreadModels)); + .subscribe(o -> onNotifyUser(notificationThreadModels)); } }