diff --git a/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java b/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java index fb376371..c1aec160 100644 --- a/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java +++ b/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java @@ -12,10 +12,10 @@ import com.readrops.app.database.entities.Folder; import com.readrops.app.database.entities.Item; import com.readrops.app.database.entities.account.Account; import com.readrops.app.utils.FeedInsertionResult; -import com.readrops.app.utils.matchers.FeedMatcher; -import com.readrops.app.utils.matchers.ItemMatcher; import com.readrops.app.utils.ParsingResult; import com.readrops.app.utils.Utils; +import com.readrops.app.utils.matchers.FeedMatcher; +import com.readrops.app.utils.matchers.ItemMatcher; import com.readrops.readropslibrary.services.SyncType; import com.readrops.readropslibrary.services.nextcloudnews.NextNewsAPI; import com.readrops.readropslibrary.services.nextcloudnews.NextNewsSyncData; @@ -115,7 +115,7 @@ public class NextNewsRepository extends ARepository { insertFolders(syncResult.getFolders()); timings.addSplit("insert folders"); - insertFeeds(syncResult.getFeeds()); + insertFeeds(syncResult.getFeeds(), false); timings.addSplit("insert feeds"); insertItems(syncResult.getItems(), syncType == SyncType.INITIAL_SYNC); @@ -149,7 +149,7 @@ public class NextNewsRepository extends ARepository { NextNewsFeeds nextNewsFeeds = api.createFeed(result.getUrl(), 0); if (nextNewsFeeds != null) { - List newFeeds = insertFeeds(nextNewsFeeds.getFeeds()); + List newFeeds = insertFeeds(nextNewsFeeds.getFeeds(), true); // there is always only one object in the list, see nextcloud news api doc insertionResult.setFeed(newFeeds.get(0)); } else @@ -268,14 +268,19 @@ public class NextNewsRepository extends ARepository { }).andThen(super.deleteFolder(folder)); } - private List insertFeeds(List nextNewsFeeds) { + private List insertFeeds(List nextNewsFeeds, boolean newFeeds) { List feeds = new ArrayList<>(); for (NextNewsFeed nextNewsFeed : nextNewsFeeds) { feeds.add(FeedMatcher.nextNewsFeedToFeed(nextNewsFeed, account)); } - List insertedFeedsIds = database.feedDao().feedsUpsert(feeds, account); + List insertedFeedsIds; + if (newFeeds) { + insertedFeedsIds = database.feedDao().insert(feeds); + } else { + insertedFeedsIds = database.feedDao().feedsUpsert(feeds, account); + } List insertedFeeds = new ArrayList<>(); if (!insertedFeedsIds.isEmpty()) { diff --git a/app/src/main/java/com/readrops/app/utils/matchers/FeedMatcher.java b/app/src/main/java/com/readrops/app/utils/matchers/FeedMatcher.java index 27eeb5a1..60f60cc0 100644 --- a/app/src/main/java/com/readrops/app/utils/matchers/FeedMatcher.java +++ b/app/src/main/java/com/readrops/app/utils/matchers/FeedMatcher.java @@ -21,7 +21,7 @@ public final class FeedMatcher { newFeed.setSiteUrl(feed.getLink()); newFeed.setUnreadCount(feed.getUnreadCount()); - newFeed.setFolderId(feed.getFolderId()); + newFeed.setFolderId(feed.getFolderId() > 0 ? feed.getFolderId() : null); newFeed.setIconUrl(feed.getFaviconLink()); newFeed.setRemoteId(String.valueOf(feed.getId()));