diff --git a/app/src/main/java/com/readrops/app/repositories/FreshRSSRepository.java b/app/src/main/java/com/readrops/app/repositories/FreshRSSRepository.java index acfcbeef..de3f13ef 100644 --- a/app/src/main/java/com/readrops/app/repositories/FreshRSSRepository.java +++ b/app/src/main/java/com/readrops/app/repositories/FreshRSSRepository.java @@ -20,6 +20,8 @@ import com.readrops.readropslibrary.services.freshrss.FreshRSSAPI; import com.readrops.readropslibrary.services.freshrss.FreshRSSCredentials; import com.readrops.readropslibrary.services.freshrss.FreshRSSSyncData; +import org.joda.time.DateTime; + import java.util.ArrayList; import java.util.Collections; import java.util.List; @@ -90,6 +92,7 @@ public class FreshRSSRepository extends ARepository { } else syncType = SyncType.INITIAL_SYNC; + long newLastModified = DateTime.now().getMillis() / 1000L; TimingLogger logger = new TimingLogger(TAG, "FreshRSS sync timer"); return Single.create(emitter -> { @@ -109,10 +112,11 @@ public class FreshRSSRepository extends ARepository { insertItems(syncResult.getItems(), syncType == SyncType.INITIAL_SYNC); logger.addSplit("items insertion"); - //account.setLastModified(syncResult.getLastUpdated()); - //database.accountDao().updateLastModified(account.getId(), syncResult.getLastUpdated()); + account.setLastModified(newLastModified); + database.accountDao().updateLastModified(account.getId(), newLastModified); - //database.itemDao().resetReadChanges(account.getId()); + database.itemDao().resetReadChanges(); + logger.addSplit("reset read changes"); logger.dumpToLog(); return Observable.empty(); diff --git a/readropslibrary/src/main/java/com/readrops/readropslibrary/services/freshrss/FreshRSSAPI.java b/readropslibrary/src/main/java/com/readrops/readropslibrary/services/freshrss/FreshRSSAPI.java index 07e61f0b..e97e6cc1 100644 --- a/readropslibrary/src/main/java/com/readrops/readropslibrary/services/freshrss/FreshRSSAPI.java +++ b/readropslibrary/src/main/java/com/readrops/readropslibrary/services/freshrss/FreshRSSAPI.java @@ -97,26 +97,27 @@ public class FreshRSSAPI extends API { public Single sync(@NonNull SyncType syncType, @NonNull FreshRSSSyncData syncData, @NonNull String writeToken) { FreshRSSSyncResult syncResult = new FreshRSSSyncResult(); - return getFolders() - .flatMap(freshRSSFolders -> { - syncResult.setFolders(freshRSSFolders); + return setItemsReadState(syncData, writeToken) + .andThen(getFolders() + .flatMap(freshRSSFolders -> { + syncResult.setFolders(freshRSSFolders); - return getFeeds(); - }) - .flatMap(freshRSSFeeds -> { - syncResult.setFeeds(freshRSSFeeds); + return getFeeds(); + }) + .flatMap(freshRSSFeeds -> { + syncResult.setFeeds(freshRSSFeeds); - if (syncType == SyncType.INITIAL_SYNC) { - return getItems(GOOGLE_READ, MAX_ITEMS, null); - } else { - return getItems(GOOGLE_READ, MAX_ITEMS, syncData.getLastModified()); - } - }) - .flatMap(freshRSSItems -> { - syncResult.setItems(freshRSSItems); + if (syncType == SyncType.INITIAL_SYNC) { + return getItems(GOOGLE_READ, MAX_ITEMS, null); + } else { + return getItems(GOOGLE_READ, MAX_ITEMS, syncData.getLastModified()); + } + }) + .flatMap(freshRSSItems -> { + syncResult.setItems(freshRSSItems); - return Single.just(syncResult); - }); + return Single.just(syncResult); + })); } /**