Use a single SyncResult class for both FreshRSS and Nextcloud News
This commit is contained in:
parent
cc65dcdc25
commit
237a2fc9c9
@ -15,10 +15,10 @@ import com.readrops.readropsdb.entities.Folder;
|
|||||||
import com.readrops.readropsdb.entities.Item;
|
import com.readrops.readropsdb.entities.Item;
|
||||||
import com.readrops.readropsdb.entities.account.Account;
|
import com.readrops.readropsdb.entities.account.Account;
|
||||||
import com.readrops.readropslibrary.services.Credentials;
|
import com.readrops.readropslibrary.services.Credentials;
|
||||||
|
import com.readrops.readropslibrary.services.SyncResult;
|
||||||
import com.readrops.readropslibrary.services.SyncType;
|
import com.readrops.readropslibrary.services.SyncType;
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.NextNewsAPI;
|
import com.readrops.readropslibrary.services.nextcloudnews.NextNewsAPI;
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.NextNewsSyncData;
|
import com.readrops.readropslibrary.services.nextcloudnews.NextNewsSyncData;
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.NextNewsSyncResult;
|
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.json.NextNewsUser;
|
import com.readrops.readropslibrary.services.nextcloudnews.json.NextNewsUser;
|
||||||
import com.readrops.readropslibrary.utils.UnknownFormatException;
|
import com.readrops.readropslibrary.utils.UnknownFormatException;
|
||||||
|
|
||||||
@ -100,7 +100,7 @@ public class NextNewsRepository extends ARepository<NextNewsAPI> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TimingLogger timings = new TimingLogger(TAG, "nextcloud news " + syncType.name().toLowerCase());
|
TimingLogger timings = new TimingLogger(TAG, "nextcloud news " + syncType.name().toLowerCase());
|
||||||
NextNewsSyncResult syncResult = api.sync(syncType, syncData);
|
SyncResult syncResult = api.sync(syncType, syncData);
|
||||||
timings.addSplit("server queries");
|
timings.addSplit("server queries");
|
||||||
|
|
||||||
if (!syncResult.isError()) {
|
if (!syncResult.isError()) {
|
||||||
|
@ -0,0 +1,16 @@
|
|||||||
|
package com.readrops.readropslibrary.services
|
||||||
|
|
||||||
|
import com.readrops.readropsdb.entities.Feed
|
||||||
|
import com.readrops.readropsdb.entities.Folder
|
||||||
|
import com.readrops.readropsdb.entities.Item
|
||||||
|
|
||||||
|
class SyncResult {
|
||||||
|
|
||||||
|
var items: List<Item> = listOf()
|
||||||
|
|
||||||
|
var feeds: List<Feed> = listOf()
|
||||||
|
|
||||||
|
var folders: List<Folder> = listOf()
|
||||||
|
|
||||||
|
var isError: Boolean = false
|
||||||
|
}
|
@ -8,6 +8,7 @@ import com.readrops.readropsdb.entities.Folder;
|
|||||||
import com.readrops.readropsdb.entities.Item;
|
import com.readrops.readropsdb.entities.Item;
|
||||||
import com.readrops.readropslibrary.services.API;
|
import com.readrops.readropslibrary.services.API;
|
||||||
import com.readrops.readropslibrary.services.Credentials;
|
import com.readrops.readropslibrary.services.Credentials;
|
||||||
|
import com.readrops.readropslibrary.services.SyncResult;
|
||||||
import com.readrops.readropslibrary.services.SyncType;
|
import com.readrops.readropslibrary.services.SyncType;
|
||||||
import com.readrops.readropslibrary.services.freshrss.adapters.FreshRSSFeedsAdapter;
|
import com.readrops.readropslibrary.services.freshrss.adapters.FreshRSSFeedsAdapter;
|
||||||
import com.readrops.readropslibrary.services.freshrss.adapters.FreshRSSFoldersAdapter;
|
import com.readrops.readropslibrary.services.freshrss.adapters.FreshRSSFoldersAdapter;
|
||||||
@ -94,8 +95,8 @@ public class FreshRSSAPI extends API<FreshRSSService> {
|
|||||||
* @param writeToken token for making modifications on the server
|
* @param writeToken token for making modifications on the server
|
||||||
* @return the result of the synchronization
|
* @return the result of the synchronization
|
||||||
*/
|
*/
|
||||||
public Single<FreshRSSSyncResult> sync(@NonNull SyncType syncType, @NonNull FreshRSSSyncData syncData, @NonNull String writeToken) {
|
public Single<SyncResult> sync(@NonNull SyncType syncType, @NonNull FreshRSSSyncData syncData, @NonNull String writeToken) {
|
||||||
FreshRSSSyncResult syncResult = new FreshRSSSyncResult();
|
SyncResult syncResult = new SyncResult();
|
||||||
|
|
||||||
return setItemsReadState(syncData, writeToken)
|
return setItemsReadState(syncData, writeToken)
|
||||||
.andThen(getFolders()
|
.andThen(getFolders()
|
||||||
|
@ -1,56 +0,0 @@
|
|||||||
package com.readrops.readropslibrary.services.freshrss;
|
|
||||||
|
|
||||||
import com.readrops.readropsdb.entities.Feed;
|
|
||||||
import com.readrops.readropsdb.entities.Folder;
|
|
||||||
import com.readrops.readropsdb.entities.Item;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class FreshRSSSyncResult {
|
|
||||||
|
|
||||||
private List<Folder> folders;
|
|
||||||
|
|
||||||
private List<Feed> feeds;
|
|
||||||
|
|
||||||
private List<Item> items;
|
|
||||||
|
|
||||||
private long lastUpdated;
|
|
||||||
|
|
||||||
public FreshRSSSyncResult() {
|
|
||||||
feeds = new ArrayList<>();
|
|
||||||
items = new ArrayList<>();
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Feed> getFeeds() {
|
|
||||||
return feeds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFeeds(List<Feed> feeds) {
|
|
||||||
this.feeds = feeds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Item> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<Item> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public long getLastUpdated() {
|
|
||||||
return lastUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setLastUpdated(long lastUpdated) {
|
|
||||||
this.lastUpdated = lastUpdated;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Folder> getFolders() {
|
|
||||||
return folders;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFolders(List<Folder> folders) {
|
|
||||||
this.folders = folders;
|
|
||||||
}
|
|
||||||
}
|
|
@ -10,6 +10,7 @@ import com.readrops.readropsdb.entities.Folder;
|
|||||||
import com.readrops.readropsdb.entities.Item;
|
import com.readrops.readropsdb.entities.Item;
|
||||||
import com.readrops.readropslibrary.services.API;
|
import com.readrops.readropslibrary.services.API;
|
||||||
import com.readrops.readropslibrary.services.Credentials;
|
import com.readrops.readropslibrary.services.Credentials;
|
||||||
|
import com.readrops.readropslibrary.services.SyncResult;
|
||||||
import com.readrops.readropslibrary.services.SyncType;
|
import com.readrops.readropslibrary.services.SyncType;
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.adapters.NextNewsFeedsAdapter;
|
import com.readrops.readropslibrary.services.nextcloudnews.adapters.NextNewsFeedsAdapter;
|
||||||
import com.readrops.readropslibrary.services.nextcloudnews.adapters.NextNewsFoldersAdapter;
|
import com.readrops.readropslibrary.services.nextcloudnews.adapters.NextNewsFoldersAdapter;
|
||||||
@ -70,8 +71,8 @@ public class NextNewsAPI extends API<NextNewsService> {
|
|||||||
return response.body();
|
return response.body();
|
||||||
}
|
}
|
||||||
|
|
||||||
public NextNewsSyncResult sync(@NonNull SyncType syncType, @Nullable NextNewsSyncData data) throws IOException {
|
public SyncResult sync(@NonNull SyncType syncType, @Nullable NextNewsSyncData data) throws IOException {
|
||||||
NextNewsSyncResult syncResult = new NextNewsSyncResult();
|
SyncResult syncResult = new SyncResult();
|
||||||
switch (syncType) {
|
switch (syncType) {
|
||||||
case INITIAL_SYNC:
|
case INITIAL_SYNC:
|
||||||
initialSync(syncResult);
|
initialSync(syncResult);
|
||||||
@ -87,7 +88,7 @@ public class NextNewsAPI extends API<NextNewsService> {
|
|||||||
return syncResult;
|
return syncResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void initialSync(NextNewsSyncResult syncResult) throws IOException {
|
private void initialSync(SyncResult syncResult) throws IOException {
|
||||||
getFeedsAndFolders(syncResult);
|
getFeedsAndFolders(syncResult);
|
||||||
|
|
||||||
Response<List<Item>> itemsResponse = api.getItems(3, false, MAX_ITEMS).execute();
|
Response<List<Item>> itemsResponse = api.getItems(3, false, MAX_ITEMS).execute();
|
||||||
@ -100,7 +101,7 @@ public class NextNewsAPI extends API<NextNewsService> {
|
|||||||
syncResult.setItems(itemList);
|
syncResult.setItems(itemList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void classicSync(NextNewsSyncResult syncResult, NextNewsSyncData data) throws IOException {
|
private void classicSync(SyncResult syncResult, NextNewsSyncData data) throws IOException {
|
||||||
putModifiedItems(data, syncResult);
|
putModifiedItems(data, syncResult);
|
||||||
getFeedsAndFolders(syncResult);
|
getFeedsAndFolders(syncResult);
|
||||||
|
|
||||||
@ -114,7 +115,7 @@ public class NextNewsAPI extends API<NextNewsService> {
|
|||||||
syncResult.setItems(itemList);
|
syncResult.setItems(itemList);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void getFeedsAndFolders(NextNewsSyncResult syncResult) throws IOException {
|
private void getFeedsAndFolders(SyncResult syncResult) throws IOException {
|
||||||
Response<List<Feed>> feedResponse = api.getFeeds().execute();
|
Response<List<Feed>> feedResponse = api.getFeeds().execute();
|
||||||
List<Feed> feedList = feedResponse.body();
|
List<Feed> feedList = feedResponse.body();
|
||||||
|
|
||||||
@ -135,7 +136,7 @@ public class NextNewsAPI extends API<NextNewsService> {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void putModifiedItems(NextNewsSyncData data, NextNewsSyncResult syncResult) throws IOException {
|
private void putModifiedItems(NextNewsSyncData data, SyncResult syncResult) throws IOException {
|
||||||
if (!data.getReadItems().isEmpty()) {
|
if (!data.getReadItems().isEmpty()) {
|
||||||
Map<String, List<String>> itemIdsMap = new HashMap<>();
|
Map<String, List<String>> itemIdsMap = new HashMap<>();
|
||||||
itemIdsMap.put("items", data.getReadItems());
|
itemIdsMap.put("items", data.getReadItems());
|
||||||
|
@ -1,54 +0,0 @@
|
|||||||
package com.readrops.readropslibrary.services.nextcloudnews;
|
|
||||||
|
|
||||||
import com.readrops.readropsdb.entities.Feed;
|
|
||||||
import com.readrops.readropsdb.entities.Folder;
|
|
||||||
import com.readrops.readropsdb.entities.Item;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public class NextNewsSyncResult {
|
|
||||||
|
|
||||||
private List<Folder> folders;
|
|
||||||
|
|
||||||
private List<Feed> feeds;
|
|
||||||
|
|
||||||
private List<Item> items;
|
|
||||||
|
|
||||||
private boolean error;
|
|
||||||
|
|
||||||
public NextNewsSyncResult() {
|
|
||||||
// empty constructor
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Folder> getFolders() {
|
|
||||||
return folders;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFolders(List<Folder> folders) {
|
|
||||||
this.folders = folders;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Feed> getFeeds() {
|
|
||||||
return feeds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFeeds(List<Feed> feeds) {
|
|
||||||
this.feeds = feeds;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Item> getItems() {
|
|
||||||
return items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setItems(List<Item> items) {
|
|
||||||
this.items = items;
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isError() {
|
|
||||||
return error;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setError(boolean error) {
|
|
||||||
this.error = error;
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
x
Reference in New Issue
Block a user