From 8c9b2b2ab108a33ad082e46f561d74240631d1d9 Mon Sep 17 00:00:00 2001 From: Shinokuni Date: Mon, 5 Jul 2021 21:00:40 +0200 Subject: [PATCH] Nextcloud News : get read/unread starred items at initial synchronisation --- .../nextcloudnews/NextNewsDataSource.java | 33 +++++++++++++++++-- .../nextcloudnews/NextNewsService.java | 2 +- .../app/repositories/NextNewsRepository.java | 5 ++- 3 files changed, 35 insertions(+), 5 deletions(-) diff --git a/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsDataSource.java b/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsDataSource.java index 24875679..fd8c57ee 100644 --- a/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsDataSource.java +++ b/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsDataSource.java @@ -30,7 +30,8 @@ public class NextNewsDataSource { private static final String TAG = NextNewsDataSource.class.getSimpleName(); - protected static final int MAX_ITEMS = 5000; + private static final int MAX_ITEMS = 5000; + private static final int MAX_STARRED_ITEMS = 1000; private NextNewsService api; @@ -86,7 +87,8 @@ public class NextNewsDataSource { private void initialSync(SyncResult syncResult) throws IOException { getFeedsAndFolders(syncResult); - Response> itemsResponse = api.getItems(3, false, MAX_ITEMS).execute(); + // unread items + Response> itemsResponse = api.getItems(ItemQueryType.ALL.value, false, MAX_ITEMS).execute(); List itemList = itemsResponse.body(); if (!itemsResponse.isSuccessful()) @@ -94,13 +96,23 @@ public class NextNewsDataSource { if (itemList != null) syncResult.setItems(itemList); + + // starred items + Response> starredItemsResponse = api.getItems(ItemQueryType.STARRED.value, true, MAX_STARRED_ITEMS).execute(); + List starredItems = starredItemsResponse.body(); + + if (!itemsResponse.isSuccessful()) + syncResult.setError(true); + + if (itemList != null) + syncResult.setStarredItems(starredItems); } private void classicSync(SyncResult syncResult, NextNewsSyncData data) throws IOException { putModifiedItems(data, syncResult); getFeedsAndFolders(syncResult); - Response> itemsResponse = api.getNewItems(data.getLastModified(), 3).execute(); + Response> itemsResponse = api.getNewItems(data.getLastModified(), ItemQueryType.ALL.value).execute(); List itemList = itemsResponse.body(); if (!itemsResponse.isSuccessful()) @@ -265,4 +277,19 @@ public class NextNewsDataSource { STAR, UNSTAR } + + public enum ItemQueryType { + ALL(3), + STARRED(2); + + private int value; + + ItemQueryType(int value) { + this.value = value; + } + + public int getValue() { + return value; + } + } } diff --git a/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsService.java b/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsService.java index cf1ce098..1520ffa7 100644 --- a/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsService.java +++ b/api/src/main/java/com/readrops/api/services/nextcloudnews/NextNewsService.java @@ -20,7 +20,7 @@ import retrofit2.http.Query; public interface NextNewsService { - String END_POINT = "/index.php/apps/news/api/v1-2/"; + String END_POINT = "/index.php/apps/news/api/v1-2"; @GET("/ocs/v1.php/cloud/users/{userId}") @Headers("OCS-APIRequest: true") 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 5a491cea..6fe9dc1e 100644 --- a/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java +++ b/app/src/main/java/com/readrops/app/repositories/NextNewsRepository.java @@ -147,8 +147,11 @@ public class NextNewsRepository extends ARepository { insertFeeds(result.getFeeds(), false); timings.addSplit("insert feeds"); - insertItems(result.getItems(), syncType == SyncType.INITIAL_SYNC); + boolean initialSync = syncType == SyncType.INITIAL_SYNC; + insertItems(result.getItems(), initialSync); timings.addSplit("insert items"); + + insertItems(result.getStarredItems(), initialSync); timings.dumpToLog(); account.setLastModified(lastModified);