diff options
author | desperateCoder <echotodevnull@gmail.com> | 2021-09-10 20:32:03 +0300 |
---|---|---|
committer | desperateCoder <echotodevnull@gmail.com> | 2021-09-10 20:32:03 +0300 |
commit | 24394d4d9446eea21709cdbe79ed7cfff635240a (patch) | |
tree | 7f423fb7f4cefb2dd3b7a996fc0a724a4013fe74 /app/src/main | |
parent | 2c4578fd3a5a136886089815662616d12e396590 (diff) |
#1100 fix order of comments at upload
Diffstat (limited to 'app/src/main')
2 files changed, 31 insertions, 3 deletions
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<DeckComment> { @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<DeckComment> 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<DeckComment> { LiveData<List<DeckComment>> 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<List<FullDeckComment>> 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<OcsCommen if (comment.getParentId() != null) { comment.setParentId(dataBaseAdapter.getRemoteCommentIdForLocalIdDirectly(comment.getParentId())); } - serverAdapter.createCommentForCard(comment, responder); + DeckLog.info("creating entity: "+entity.getComments().get(0).getMessage() + " with id " +entity.getComments().get(0).getLocalId()); + CountDownLatch latch = new CountDownLatch(1); + serverAdapter.createCommentForCard(comment, new ResponseCallback<>(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 |