diff options
2 files changed, 15 insertions, 8 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AbstractSyncDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AbstractSyncDataProvider.java index 4c538c56e..dc2e4392a 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AbstractSyncDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/AbstractSyncDataProvider.java @@ -108,7 +108,7 @@ public abstract class AbstractSyncDataProvider<T extends IRemoteEntity> { public abstract void deleteOnServer(ServerAdapter serverAdapter, long accountId, ResponseCallback<Void> callback, T entity, DataBaseAdapter dataBaseAdapter); public void childDone(AbstractSyncDataProvider<?> child, ResponseCallback<Boolean> responseCallback, boolean syncChangedSomething) { - children.remove(child); + removeChild(child); if (!stillGoingDeeper && children.isEmpty()) { if (parent != null) { parent.childDone(this, responseCallback, syncChangedSomething); @@ -118,6 +118,10 @@ public abstract class AbstractSyncDataProvider<T extends IRemoteEntity> { } } + protected boolean removeChild(AbstractSyncDataProvider<?> child) { + return children.remove(child); + } + public void doneGoingDeeper(ResponseCallback<Boolean> responseCallback, boolean syncChangedSomething) { stillGoingDeeper = false; childDone(this, responseCallback, syncChangedSomething); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java index 63627ddb4..679321cb8 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/BoardDataProvider.java @@ -30,6 +30,7 @@ import it.niedermann.nextcloud.deck.persistence.sync.helpers.util.AsyncUtil; public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> { private int progressTotal = 0; + private int progressDone = 0; private MutableLiveData<Pair<Integer, Integer>> progress = null; public BoardDataProvider() { @@ -66,17 +67,19 @@ public class BoardDataProvider extends AbstractSyncDataProvider<FullBoard> { private void updateProgress() { if (progress != null) { - DeckLog.log("New progress post", progressTotal - children.size(), progressTotal); - progress.postValue(Pair.create(progressTotal - children.size(), progressTotal)); - } else { - DeckLog.log("progress is null"); + DeckLog.log("New progress post", progressDone, progressTotal); + progress.postValue(Pair.create(progressDone, progressTotal)); } } @Override - public void childDone(AbstractSyncDataProvider<?> child, ResponseCallback<Boolean> responseCallback, boolean syncChangedSomething) { - super.childDone(child, responseCallback, syncChangedSomething); - updateProgress(); + protected boolean removeChild(AbstractSyncDataProvider<?> child) { + boolean isRemoved = super.removeChild(child); + if (isRemoved) { + progressDone ++; + updateProgress(); + } + return isRemoved; } @Override |