diff options
author | desperateCoder <echotodevnull@gmail.com> | 2021-02-14 15:51:37 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2021-02-14 15:51:37 +0300 |
commit | 9891fc39ffff0ab67d63c38037435e2746c05558 (patch) | |
tree | f4d95e33d9ee763a1dc935b6dd3cac362110336d | |
parent | b72131984a60982e3b59d8deb773b6dffe8e4ce9 (diff) |
fixes #882 no more archived cards for upcoming card widget
3 files changed, 18 insertions, 4 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java index 32ca0f175..e76f97075 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java @@ -1333,11 +1333,19 @@ public class DataBaseAdapter { cardsResult.remove(fullCard); } } - // https://github.com/stefan-niedermann/nextcloud-deck/issues/800 all cards within non-shared boards need to be included List<Long> accountIds = null; if (filterWidget.getAccounts() != null && !filterWidget.getAccounts().isEmpty()) { - accountIds = filterWidget.getAccounts().stream().map(a -> a.getAccountId()).collect(Collectors.toList()); + accountIds = filterWidget.getAccounts().stream().map(FilterWidgetAccount::getAccountId).collect(Collectors.toList()); + } + // https://github.com/stefan-niedermann/nextcloud-deck/issues/822 exclude archived cards and boards + List<Long> archivedStacks = db.getStackDao().getLocalStackIdsInArchivedBoardsByAccountIdsDirectly(accountIds); + for (Long archivedStack : archivedStacks) { + List<FullCard> archivedCards = cardsResult.stream() + .filter(c -> c.getCard().isArchived() || archivedStack.equals(c.getCard().getStackId())) + .collect(Collectors.toList()); + cardsResult.removeAll(archivedCards); } + // https://github.com/stefan-niedermann/nextcloud-deck/issues/800 all cards within non-shared boards need to be included cardsResult.addAll(db.getCardDao().getFullCardsForNonSharedBoardsWithDueDateForUpcomingCardsWidgetDirectly(accountIds)); } } diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CardDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CardDao.java index e5ebb0af9..51fbc0d89 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CardDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CardDao.java @@ -88,10 +88,13 @@ public interface CardDao extends GenericDao<Card> { @Transaction @Query("SELECT * FROM card c WHERE " + - "exists(select 1 from Stack s join Board b on s.boardId = b.localId where s.localId = c.stackId and not exists(select 1 from AccessControl ac where ac.boardId = b.localId and status <> 3)) " + + "exists(select 1 from Stack s join Board b on s.boardId = b.localId where s.localId = c.stackId " + + "and b.archived = 0 " + + "and not exists(select 1 from AccessControl ac where ac.boardId = b.localId and status <> 3)) " + "and dueDate is not null " + "and (coalesce(:accountIds, null) is null or accountId in (:accountIds)) " + - "and status <> 3") + "and status <> 3 " + + "and archived = 0") List<FullCard> getFullCardsForNonSharedBoardsWithDueDateForUpcomingCardsWidgetDirectly(List<Long> accountIds); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/StackDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/StackDao.java index 286a87402..1d2649488 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/StackDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/StackDao.java @@ -64,4 +64,7 @@ public interface StackDao extends GenericDao<Stack> { @Query("SELECT exists(select 1 from Stack s join Board b on s.boardId = b.localId where s.localId = :localStackId and exists(select 1 from AccessControl ac where ac.boardId = b.localId and status <> 3))") boolean isStackOnSharedBoardDirectly(Long localStackId); + + @Query("SELECT s.localId FROM stack s join Board b on s.boardId = b.localId where b.archived <> 0 and b.accountId in (:accountIds)") + List<Long> getLocalStackIdsInArchivedBoardsByAccountIdsDirectly(List<Long> accountIds); }
\ No newline at end of file |