From 24394d4d9446eea21709cdbe79ed7cfff635240a Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Fri, 10 Sep 2021 19:32:03 +0200 Subject: #1100 fix order of comments at upload --- .../sync/adapters/db/dao/CommentDao.java | 5 ++-- .../providers/DeckCommentsDataProvider.java | 29 +++++++++++++++++++++- 2 files changed, 31 insertions(+), 3 deletions(-) (limited to 'app/src/main') diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CommentDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CommentDao.java index 31b195c3f..463cf4617 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CommentDao.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/CommentDao.java @@ -19,7 +19,8 @@ public interface CommentDao extends GenericDao { @Query("SELECT * FROM DeckComment where accountId = :accountId and localId = :id") DeckComment getCommentByLocalIdDirectly(long accountId, Long id); - @Query("SELECT * FROM DeckComment WHERE accountId = :accountId and objectId = :localCardId and (status<>1 or id is null or lastModified <> lastModifiedLocal)") + @Query("SELECT * FROM DeckComment WHERE accountId = :accountId and objectId = :localCardId " + + "and (status<>1 or id is null or lastModified <> lastModifiedLocal) order by localId asc") List getLocallyChangedCommentsByLocalCardIdDirectly(long accountId, long localCardId); @Query("SELECT * FROM DeckComment WHERE accountId = :accountId and (status<>1 or id is null or lastModified <> lastModifiedLocal)") @@ -35,7 +36,7 @@ public interface CommentDao extends GenericDao { LiveData> getCommentByLocalCardId(Long localCardId); @Transaction - @Query("SELECT * FROM DeckComment where objectId = :localCardId order by creationDateTime desc") + @Query("SELECT * FROM DeckComment where objectId = :localCardId order by creationDateTime desc, localId desc") LiveData> getFullCommentByLocalCardId(Long localCardId); @Query("SELECT id FROM DeckComment where localId = :localId") diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/DeckCommentsDataProvider.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/DeckCommentsDataProvider.java index 9d7ee4c70..97eca7e67 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/DeckCommentsDataProvider.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/helpers/providers/DeckCommentsDataProvider.java @@ -1,12 +1,16 @@ package it.niedermann.nextcloud.deck.persistence.sync.helpers.providers; +import android.annotation.SuppressLint; + import java.time.Instant; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; +import java.util.concurrent.CountDownLatch; import it.niedermann.nextcloud.deck.DeckLog; +import it.niedermann.nextcloud.deck.api.IResponseCallback; import it.niedermann.nextcloud.deck.api.ResponseCallback; import it.niedermann.nextcloud.deck.model.Card; import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment; @@ -114,7 +118,30 @@ public class DeckCommentsDataProvider extends AbstractSyncDataProvider(responder.getAccount()) { + @Override + public void onResponse(OcsComment response) { + latch.countDown(); + responder.onResponse(response); + DeckLog.info("CREATED entity: "+entity.getComments().get(0).getMessage() + " with id " +entity.getComments().get(0).getLocalId()); + } + + @SuppressLint("MissingSuperCall") + @Override + public void onError(Throwable throwable) { + latch.countDown(); + responder.onError(throwable); + } + }); + + try { + latch.await(); + DeckLog.info("released latch for entity: "+entity.getComments().get(0).getMessage() + " with id " +entity.getComments().get(0).getLocalId()); + } catch (InterruptedException e) { + e.printStackTrace(); + } } @Override -- cgit v1.2.3