diff options
author | desperateCoder <echotodevnull@gmail.com> | 2021-01-31 15:44:59 +0300 |
---|---|---|
committer | Niedermann IT-Dienstleistungen <stefan-niedermann@users.noreply.github.com> | 2021-01-31 16:19:16 +0300 |
commit | b758780368949c96bd46fbefd6f670fa9be07ed9 (patch) | |
tree | dfb4827d194d47ad6237a24de88055a89dd61d11 | |
parent | a01cfebe2fcd4985b1bf97376f5f739f8b1eb34d (diff) |
#800 add cards of non-shared boards to result list
2 files changed, 19 insertions, 0 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 5aa996603..82a9e5caa 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 @@ -1294,6 +1294,7 @@ public class DataBaseAdapter { } } + handleWidgetTypeExtras(filterWidget, cardsResult); filterRelationsForCard(cardsResult); @@ -1318,6 +1319,17 @@ public class DataBaseAdapter { return result; } + private void handleWidgetTypeExtras(FilterWidget filterWidget, List<FullCard> cardsResult) { + if (filterWidget.getWidgetType() == EWidgetType.UPCOMING_WIDGET) { + // 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()); + } + cardsResult.addAll(db.getCardDao().getFullCardsForNonSharedBoardsDirectly(accountIds)); + } + } + public List<FilterWidget> getFilterWidgetsByType(EWidgetType type) { List<Integer> ids = db.getFilterWidgetDao().getFilterWidgetIdsByType(type.getId()); List<FilterWidget> widgets = new ArrayList<>(ids.size()); 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 82bdf1b8d..7af025c3d 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 @@ -85,4 +85,11 @@ public interface CardDao extends GenericDao<Card> { @Query("SELECT c.stackId FROM card c WHERE localId = :localCardId") Long getLocalStackIdByLocalCardId(Long localCardId); + + @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 ((:accountIds) is null or accountId in (:accountIds)) " + + "and (status<>1 or id is null or lastModified <> lastModifiedLocal)") + List<FullCard> getFullCardsForNonSharedBoardsDirectly(List<Long> accountIds); }
\ No newline at end of file |