Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordesperateCoder <echotodevnull@gmail.com>2020-05-25 22:38:18 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-05-25 22:38:18 +0300
commitae537258366c91c183e3329673ed7ae797d877ee (patch)
tree06454d34f733803ef2ac0bed7893828593ca259d /app/src/main/java/it/niedermann/nextcloud/deck/persistence
parent13ab14c2d2f7f8ef1b04f3cf94664db1829d6b56 (diff)
#495 archive all cards of a stack
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/persistence')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java61
1 files changed, 57 insertions, 4 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
index 265015d57..37ffd9742 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
@@ -765,13 +765,66 @@ public class SyncManager {
}
public WrappedLiveData<FullCard> archiveCard(FullCard card) {
- card.getCard().setArchived(true);
- return updateCard(card);
+ WrappedLiveData<FullCard> liveData = new WrappedLiveData<>();
+ doAsync(() -> {
+ Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
+ FullStack stack = dataBaseAdapter.getFullStackByLocalIdDirectly(card.getCard().getStackId());
+ Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getStack().getBoardId());
+ card.getCard().setArchived(true);
+ updateCardForArchive(account, stack, board, card, getCallbackToLiveDataConverter(account, liveData));
+ });
+ return liveData;
+ }
+
+ private void updateCardForArchive(Account account, FullStack stack, Board board, FullCard card, IResponseCallback<FullCard> callback) {
+ new DataPropagationHelper(serverAdapter, dataBaseAdapter).updateEntity(new CardDataProvider(null, board, stack), card, callback);
}
public WrappedLiveData<FullCard> dearchiveCard(FullCard card) {
- card.getCard().setArchived(false);
- return updateCard(card);
+ WrappedLiveData<FullCard> liveData = new WrappedLiveData<>();
+ doAsync(() -> {
+ Account account = dataBaseAdapter.getAccountByIdDirectly(card.getAccountId());
+ FullStack stack = dataBaseAdapter.getFullStackByLocalIdDirectly(card.getCard().getStackId());
+ Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getStack().getBoardId());
+ card.getCard().setArchived(false);
+ updateCardForArchive(account, stack, board, card, getCallbackToLiveDataConverter(account, liveData));
+ });
+ return liveData;
+ }
+ public WrappedLiveData<Void> archiveCardsInStack(long accountId, long stackLocalId) {
+ WrappedLiveData<Void> liveData = new WrappedLiveData<>();
+ doAsync(() -> {
+ Account account = dataBaseAdapter.getAccountByIdDirectly(accountId);
+ FullStack stack = dataBaseAdapter.getFullStackByLocalIdDirectly(stackLocalId);
+ Board board = dataBaseAdapter.getBoardByLocalIdDirectly(stack.getStack().getBoardId());
+ List<FullCard> cards = dataBaseAdapter.getFullCardsForStackDirectly(accountId, stackLocalId);
+ if (cards.size() > 0) {
+ CountDownLatch latch = new CountDownLatch(cards.size());
+ for (FullCard card : cards) {
+ updateCardForArchive(account, stack, board, card, new IResponseCallback<FullCard>(account) {
+ @Override
+ public void onResponse(FullCard response) {
+ latch.countDown();
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ latch.countDown();
+ liveData.postError(throwable);
+ }
+ });
+ }
+ try {
+ latch.await();
+ liveData.postValue(null);
+ } catch (InterruptedException e) {
+ liveData.postError(e);
+ }
+ } else {
+ liveData.postValue(null);
+ }
+ });
+ return liveData;
}
public void archiveBoard(Board board) {