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")
|
||||
String feedExists(String feedUrl);
|
||||
|
||||
@Query("Select case When :remoteId In (Select remoteId from Feed) Then 1 else 0 end")
|
||||
boolean remoteFeedExists(int remoteId);
|
||||
@Query("Select case When remoteId = :remoteId And account_id = :accountId Then 1 else 0 end From Feed")
|
||||
boolean remoteFeedExists(int remoteId, int accountId);
|
||||
|
||||
@Query("Select count(*) from Feed")
|
||||
int getFeedCount();
|
||||
@ -38,8 +38,8 @@ public interface FeedDao {
|
||||
@Query("Select * from Feed Where url = :feedUrl")
|
||||
Feed getFeedByUrl(String feedUrl);
|
||||
|
||||
@Query("Select * from Feed Where remoteId = :remoteId")
|
||||
Feed getFeedByRemoteId(int remoteId);
|
||||
@Query("Select * from Feed Where remoteId = :remoteId And account_id = :accountId")
|
||||
Feed getFeedByRemoteId(int remoteId, int accountId);
|
||||
|
||||
@Query("Select * from Feed Where folder_id = :folderId")
|
||||
List<Feed> getFeedsByFolder(int folderId);
|
||||
|
@ -28,9 +28,9 @@ public interface FolderDao {
|
||||
@Delete
|
||||
void delete(Folder folder);
|
||||
|
||||
@Query("Select id From Folder Where remoteId = :remoteId")
|
||||
int getRemoteFolderLocalId(int remoteId);
|
||||
@Query("Select id From Folder Where remoteId = :remoteId And account_id = :accountId")
|
||||
int getRemoteFolderLocalId(int remoteId, int accountId);
|
||||
|
||||
@Query("Select case When :remoteId In (Select remoteId from Folder) Then 1 else 0 end")
|
||||
boolean remoteFolderExists(int remoteId);
|
||||
@Query("Select case When remoteId = :remoteId And account_id = :accountId Then 1 else 0 end From Folder")
|
||||
boolean remoteFolderExists(int remoteId, int accountId);
|
||||
}
|
||||
|
@ -95,7 +95,7 @@ public class NextNewsRepository extends ARepository {
|
||||
insertFeeds(syncResult.getFeeds(), account);
|
||||
timings.addSplit("insert feeds");
|
||||
|
||||
insertItems(syncResult.getItems(), syncType == NextNewsAPI.SyncType.INITIAL_SYNC);
|
||||
insertItems(syncResult.getItems(), account);
|
||||
timings.addSplit("insert items");
|
||||
timings.dumpToLog();
|
||||
|
||||
@ -139,13 +139,13 @@ public class NextNewsRepository extends ARepository {
|
||||
|
||||
for (NextNewsFeed nextNewsFeed : feeds) {
|
||||
|
||||
if (!database.feedDao().remoteFeedExists(nextNewsFeed.getId())) {
|
||||
if (!database.feedDao().remoteFeedExists(nextNewsFeed.getId(), account.getId())) {
|
||||
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 (nextNewsFeed.getFolderId() != 0) {
|
||||
int folderId = database.folderDao().getRemoteFolderLocalId(nextNewsFeed.getFolderId());
|
||||
int folderId = database.folderDao().getRemoteFolderLocalId(nextNewsFeed.getFolderId(), account.getId());
|
||||
|
||||
if (folderId != 0)
|
||||
feed.setFolderId(folderId);
|
||||
@ -175,7 +175,7 @@ public class NextNewsRepository extends ARepository {
|
||||
|
||||
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.setRemoteId(nextNewsFolder.getId());
|
||||
folder.setAccountId(account.getId());
|
||||
@ -187,26 +187,17 @@ public class NextNewsRepository extends ARepository {
|
||||
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<>();
|
||||
|
||||
for (NextNewsItem nextNewsItem : items) {
|
||||
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId(), account.getId());
|
||||
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
||||
|
||||
if (!initialSync) {
|
||||
if (database.itemDao().remoteItemExists(nextNewsItem.getId()))
|
||||
continue; // skip the current item if it exists in the db
|
||||
}
|
||||
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
||||
|
||||
try {
|
||||
Feed feed = database.feedDao().getFeedByRemoteId(nextNewsItem.getFeedId());
|
||||
Item item = ItemMatcher.nextNewsItemToItem(nextNewsItem, feed);
|
||||
newItems.add(item);
|
||||
|
||||
item.setReadTime(Utils.readTimeFromString(item.getContent()));
|
||||
|
||||
newItems.add(item);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
||||
Collections.sort(newItems, Item::compareTo);
|
||||
|
Loading…
x
Reference in New Issue
Block a user