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>2022-05-20 20:27:21 +0300
committerdesperateCoder <echotodevnull@gmail.com>2022-05-20 20:27:21 +0300
commit301eedeff6e82f79c566889a189779f2102301ed (patch)
tree2fe18451820e35e2f3a462d7a19eac80d1a75fab /app/src/main/java
parente67d80e13cb9828da8c13f9dd1d86cc3bf5da227 (diff)
#1073 hopefully no duplicate labels anymore
Diffstat (limited to 'app/src/main/java')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/CardDataProvider.java29
1 files changed, 22 insertions, 7 deletions
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 7a710733d..b7757394e 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
@@ -8,6 +8,8 @@ import java.time.Instant;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
import it.niedermann.nextcloud.deck.DeckLog;
import it.niedermann.nextcloud.deck.api.ResponseCallback;
@@ -32,6 +34,8 @@ import it.niedermann.nextcloud.deck.persistence.sync.helpers.SyncHelper;
public class CardDataProvider extends AbstractSyncDataProvider<FullCard> {
private static final String ALREADY_ARCHIVED_INDICATOR = "Operation not allowed. This card is archived.";
+ // see https://github.com/stefan-niedermann/nextcloud-deck/issues/1073
+ private static final Set<JoinCardWithLabel> LABEL_JOINS_IN_SYNC = ConcurrentHashMap.newKeySet();
protected Board board;
protected FullStack stack;
@@ -261,13 +265,24 @@ public class CardDataProvider extends AbstractSyncDataProvider<FullCard> {
// Sync next time, the card should be available on server then.
continue;
} else {
- serverAdapter.assignLabelToCard(board.getId(), stack.getId(), changedLabel.getCardId(), changedLabel.getLabelId(), new ResponseCallback<>(account) {
- @Override
- public void onResponse(Void response) {
- Label label = dataBaseAdapter.getLabelByRemoteIdDirectly(account.getId(), changedLabel.getLabelId());
- dataBaseAdapter.setStatusForJoinCardWithLabel(card.getLocalId(), label.getLocalId(), DBStatus.UP_TO_DATE.getId());
- }
- });
+ if (!LABEL_JOINS_IN_SYNC.contains(changedLabel)) {
+ // see https://github.com/stefan-niedermann/nextcloud-deck/issues/1073
+ LABEL_JOINS_IN_SYNC.add(changedLabel);
+ serverAdapter.assignLabelToCard(board.getId(), stack.getId(), changedLabel.getCardId(), changedLabel.getLabelId(), new ResponseCallback<>(account) {
+ @Override
+ public void onResponse(Void response) {
+ Label label = dataBaseAdapter.getLabelByRemoteIdDirectly(account.getId(), changedLabel.getLabelId());
+ dataBaseAdapter.setStatusForJoinCardWithLabel(card.getLocalId(), label.getLocalId(), DBStatus.UP_TO_DATE.getId());
+ LABEL_JOINS_IN_SYNC.remove(changedLabel);
+ }
+
+ @Override
+ public void onError(Throwable throwable) {
+ super.onError(throwable);
+ LABEL_JOINS_IN_SYNC.remove(changedLabel);
+ }
+ });
+ }
}
}