From 009d8e76e82a5490b826861795f79823ba908ac9 Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Wed, 25 Dec 2019 14:49:02 +0100 Subject: should fix #239 --- .../sync/helpers/providers/CardDataProvider.java | 37 ++++++++++++++-------- 1 file changed, 23 insertions(+), 14 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/CardDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/CardDataProvider.java index a1adbe389..e9f876451 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/CardDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/CardDataProvider.java @@ -192,21 +192,30 @@ public class CardDataProvider extends AbstractSyncDataProvider { JoinCardWithLabel deletedLabel = dataBaseAdapter.getRemoteIdsForJoin(deletedLabelLocal.getCardId(), deletedLabelLocal.getLabelId()); if (deletedLabel.getStatusEnum() == DBStatus.LOCAL_DELETED){ - serverAdapter.unassignLabelFromCard(board.getId(), stack.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId(), new IResponseCallback(account) { - @Override - public void onResponse(Void response) { - dataBaseAdapter.deleteJoinedLabelForCardPhysicallyByRemoteIDs(account.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId()); - } - }); + if (deletedLabel.getLabelId() == null || deletedLabel.getCardId() == null) { + dataBaseAdapter.deleteJoinedLabelForCardPhysicallyByRemoteIDs(account.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId()); + } else { + serverAdapter.unassignLabelFromCard(board.getId(), stack.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId(), new IResponseCallback(account) { + @Override + public void onResponse(Void response) { + dataBaseAdapter.deleteJoinedLabelForCardPhysicallyByRemoteIDs(account.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId()); + } + }); + } } else if (deletedLabel.getStatusEnum() == DBStatus.LOCAL_EDITED){ - //FIXME: card not created on server by sync yet, or maybe is, but the remote ID isn't available yet. what to do? - serverAdapter.assignLabelToCard(board.getId(), stack.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId(), new IResponseCallback(account) { - @Override - public void onResponse(Void response) { - Label label = dataBaseAdapter.getLabelByRemoteIdDirectly(account.getId(), deletedLabel.getLabelId()); - dataBaseAdapter.setStatusForJoinCardWithLabel(card.getLocalId(), label.getLocalId(), DBStatus.UP_TO_DATE.getId()); - } - }); + if (deletedLabel.getLabelId() == null || deletedLabel.getCardId() == null) { + // Sync next time, the card should be available on server then. + continue; + } else { + serverAdapter.assignLabelToCard(board.getId(), stack.getId(), deletedLabel.getCardId(), deletedLabel.getLabelId(), new IResponseCallback(account) { + @Override + public void onResponse(Void response) { + Label label = dataBaseAdapter.getLabelByRemoteIdDirectly(account.getId(), deletedLabel.getLabelId()); + dataBaseAdapter.setStatusForJoinCardWithLabel(card.getLocalId(), label.getLocalId(), DBStatus.UP_TO_DATE.getId()); + } + }); + } + } } List deletedUsers = dataBaseAdapter.getAllDeletedUserJoinsWithRemoteIDs(); -- cgit v1.2.3