From 95ff0696b77432e1a53266c38a869670c80681a3 Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Fri, 27 Dec 2019 14:37:11 +0100 Subject: [PATCH] #60 implemented Method to reorder stacks: SyncManager::reorderStacks --- .../deck/persistence/sync/SyncManager.java | 23 +++++++++++++++++-- 1 file changed, 21 insertions(+), 2 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 86c305429..68f595103 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 @@ -426,15 +426,34 @@ public LiveData updateStack(FullStack stack) { doAsync(() -> { Account account = dataBaseAdapter.getAccountByIdDirectly(stack.getAccountId()); FullBoard board = dataBaseAdapter.getFullBoardByLocalIdDirectly(stack.getAccountId(), stack.getStack().getBoardId()); + updateStack(account, board, stack, liveData); + }); + return liveData; + + } + private void updateStack(Account account, FullBoard board, FullStack stack, MutableLiveData liveData) { + doAsync(() -> { new DataPropagationHelper(serverAdapter, dataBaseAdapter).updateEntity(new StackDataProvider(null, board), stack, new IResponseCallback(account) { @Override public void onResponse(FullStack response) { - liveData.postValue(response); + if (liveData != null) { + liveData.postValue(response); + } } }); }); - return liveData; + } + public void reorderStacks(Board board, List stacksInNewOrder) { + doAsync(() -> { + Account account = dataBaseAdapter.getAccountByIdDirectly(board.getAccountId()); + FullBoard fullBoard = dataBaseAdapter.getFullBoardByLocalIdDirectly(board.getAccountId(), board.getLocalId()); + for (int i = 0; i < stacksInNewOrder.size(); i++) { + FullStack s = dataBaseAdapter.getFullStackByLocalIdDirectly(stacksInNewOrder.get(i).getLocalId()); + s.getStack().setOrder(i); + updateStack(account, fullBoard, s, null); + } + }); } public LiveData getCardByLocalId(long accountId, long cardLocalId) {