mirror of https://github.com/readrops/Readrops.git
It's now possible to add the same nextcloud news account multiple times
This commit is contained in:
parent
14596c75fd
commit
3efb023d56
|
@ -29,8 +29,8 @@ public interface FeedDao {
|
||||||
@Query("Select case When :feedUrl In (Select url from Feed) Then 'true' else 'false' end")
|
@Query("Select case When :feedUrl In (Select url from Feed) Then 'true' else 'false' end")
|
||||||
String feedExists(String feedUrl);
|
String feedExists(String feedUrl);
|
||||||
|
|
||||||
@Query("Select case When :remoteId In (Select remoteId from Feed) Then 1 else 0 end")
|
@Query("Select case When remoteId = :remoteId And account_id = :accountId Then 1 else 0 end From Feed")
|
||||||
boolean remoteFeedExists(int remoteId);
|
boolean remoteFeedExists(int remoteId, int accountId);
|
||||||
|
|
||||||
@Query("Select count(*) from Feed")
|
@Query("Select count(*) from Feed")
|
||||||
int getFeedCount();
|
int getFeedCount();
|
||||||
|
@ -38,8 +38,8 @@ public interface FeedDao {
|
||||||
@Query("Select * from Feed Where url = :feedUrl")
|
@Query("Select * from Feed Where url = :feedUrl")
|
||||||
Feed getFeedByUrl(String feedUrl);
|
Feed getFeedByUrl(String feedUrl);
|
||||||
|
|
||||||
@Query("Select * from Feed Where remoteId = :remoteId")
|
@Query("Select * from Feed Where remoteId = :remoteId And account_id = :accountId")
|
||||||
Feed getFeedByRemoteId(int remoteId);
|
Feed getFeedByRemoteId(int remoteId, int accountId);
|
||||||
|
|
||||||
@Query("Select * from Feed Where folder_id = :folderId")
|
@Query("Select * from Feed Where folder_id = :folderId")
|
||||||
List<Feed> getFeedsByFolder(int folderId);
|
List<Feed> getFeedsByFolder(int folderId);
|
||||||
|
|
|
@ -28,9 +28,9 @@ public interface FolderDao {
|
||||||
@Delete
|
@Delete
|
||||||
void delete(Folder folder);
|
void delete(Folder folder);
|
||||||
|
|
||||||
@Query("Select id From Folder Where remoteId = :remoteId")
|
@Query("Select id From Folder Where remoteId = :remoteId And account_id = :accountId")
|
||||||
int getRemoteFolderLocalId(int remoteId);
|
int getRemoteFolderLocalId(int remoteId, int accountId);
|
||||||
|
|
||||||
@Query("Select case When :remoteId In (Select remoteId from Folder) Then 1 else 0 end")
|
@Query("Select case When remoteId = :remoteId And account_id = :accountId Then 1 else 0 end From Folder")
|
||||||
boolean remoteFolderExists(int remoteId);
|
boolean remoteFolderExists(int remoteId, int accountId);
|
||||||
}
|
}
|
||||||
|
|
|
@ -95,7 +95,7 @@ public class NextNewsRepository extends ARepository {
|
||||||
insertFeeds(syncResult.getFeeds(), account);
|
insertFeeds(syncResult.getFeeds(), account);
|
||||||
timings.addSplit("insert feeds");
|
timings.addSplit("insert feeds");
|
||||||
|
|
||||||
insertItems(syncResult.getItems(), syncType == NextNewsAPI.SyncType.INITIAL_SYNC);
|
insertItems(syncResult.getItems(), account);
|
||||||
timings.addSplit("insert items");
|
timings.addSplit("insert items");
|
||||||
timings.dumpToLog();
|
timings.dumpToLog();
|
||||||
|
|
||||||
|
@ -139,13 +139,13 @@ public class NextNewsRepository extends ARepository {
|
||||||
|
|
||||||
for (NextNewsFeed nextNewsFeed : feeds) {
|
for (NextNewsFeed nextNewsFeed : feeds) {
|
||||||
|
|
||||||
if (!database.feedDao().remoteFeedExists(nextNewsFeed.getId())) {
|
if (!database.feedDao().remoteFeedExists(nextNewsFeed.getId(), account.getId())) {
|
||||||
Feed feed = FeedMatcher.nextNewsFeedToFeed(nextNewsFeed, account);
|
Feed feed = FeedMatcher.nextNewsFeedToFeed(nextNewsFeed, account);
|
||||||
|
|
||||||
|
|
||||||
// if the Nextcloud feed has a folder, it is already inserted, so we have to get its local id
|
// if the Nextcloud feed has a folder, it is already inserted, so we have to get its local id
|
||||||
if (nextNewsFeed.getFolderId() != 0) {
|
if (nextNewsFeed.getFolderId() != 0) {
|
||||||
int folderId = database.folderDao().getRemoteFolderLocalId(nextNewsFeed.getFolderId());
|
int folderId = database.folderDao().getRemoteFolderLocalId(nextNewsFeed.getFolderId(), account.getId());
|
||||||
|
|
||||||
if (folderId != 0)
|
if (folderId != 0)
|
||||||
feed.setFolderId(folderId);
|
feed.setFolderId(folderId);
|
||||||
|
@ -175,7 +175,7 @@ public class NextNewsRepository extends ARepository {
|
||||||
|
|
||||||
for (NextNewsFolder nextNewsFolder : folders) {
|
for (NextNewsFolder nextNewsFolder : folders) {
|
||||||
|
|
||||||
if (!database.folderDao().remoteFolderExists(nextNewsFolder.getId())) {
|
if (!database.folderDao().remoteFolderExists(nextNewsFolder.getId(), account.getId())) {
|
||||||
Folder folder = new Folder(nextNewsFolder.getName());
|
Folder folder = new Folder(nextNewsFolder.getName());
|
||||||
folder.setRemoteId(nextNewsFolder.getId());
|
folder.setRemoteId(nextNewsFolder.getId());
|
||||||
folder.setAccountId(account.getId());
|
folder.setAccountId(account.getId());
|
||||||
|
@ -187,26 +187,17 @@ public class NextNewsRepository extends ARepository {
|
||||||
database.folderDao().insert(newFolders);
|
database.folderDao().insert(newFolders);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void insertItems(List<NextNewsItem> items, boolean initialSync) {
|
private void insertItems(List<NextNewsItem> items, Account account) {
|
||||||
List<Item> newItems = new ArrayList<>();
|
List<Item> newItems = new ArrayList<>();
|
||||||
|
|
||||||
for (NextNewsItem nextNewsItem : items) {
|
for (NextNewsItem nextNewsItem : items) {
|
||||||
|
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId(), account.getId());
|
||||||
|
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
||||||
|
|
||||||
if (!initialSync) {
|
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
||||||
if (database.itemDao().remoteItemExists(nextNewsItem.getId()))
|
|
||||||
continue; // skip the current item if it exists in the db
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
newItems.add(item);
|
||||||
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId());
|
|
||||||
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
|
||||||
|
|
||||||
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
|
||||||
|
|
||||||
newItems.add(item);
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Collections.sort(newItems, Item::compareTo);
|
Collections.sort(newItems, Item::compareTo);
|
||||||
|
|
Loading…
Reference in New Issue