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>2020-06-28 01:37:55 +0300
committerdesperateCoder <echotodevnull@gmail.com>2020-06-28 01:37:55 +0300
commitf2b02909373b67a4a4dbb78b8d4a1f5e56e2125e (patch)
treeb9b4fa7965adadf04ba56c1323d3b2d95245cb68 /app/src/main/java/it
parentd6397c2449c15194eb0e9d645c44267f4b372502 (diff)
#455 minor fixes, #453 WIP
Diffstat (limited to 'app/src/main/java/it')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java43
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java5
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java3
3 files changed, 47 insertions, 4 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
index fc12e0c37..b797536dd 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/SyncManager.java
@@ -51,6 +51,7 @@ import it.niedermann.nextcloud.deck.model.ocs.user.OcsUser;
import it.niedermann.nextcloud.deck.model.ocs.user.OcsUserList;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.ServerAdapter;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.DataBaseAdapter;
+import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.LiveDataHelper;
import it.niedermann.nextcloud.deck.persistence.sync.adapters.db.util.WrappedLiveData;
import it.niedermann.nextcloud.deck.persistence.sync.helpers.DataPropagationHelper;
import it.niedermann.nextcloud.deck.persistence.sync.helpers.SyncHelper;
@@ -472,8 +473,9 @@ public class SyncManager {
* Does <strong>not</strong> clone any {@link Card} or {@link AccessControl} from the origin {@link Board}.
*/
@AnyThread
- public LiveData<FullBoard> cloneBoard(long originAccountId, long originBoardLocalId, long targetAccountId, String targetBoardTitle, String targetBoardColor) {
- MediatorLiveData<FullBoard> liveData = new MediatorLiveData<>();
+ public WrappedLiveData<FullBoard> cloneBoard(long originAccountId, long originBoardLocalId, long targetAccountId, String targetBoardTitle, String targetBoardColor) {
+ WrappedLiveData<FullBoard> liveData = new WrappedLiveData<>();
+
doAsync(() -> {
Account originAccount = dataBaseAdapter.getAccountByIdDirectly(originAccountId);
User newOwner = dataBaseAdapter.getUserByUidDirectly(originAccountId, originAccount.getUserName());
@@ -482,6 +484,7 @@ public class SyncManager {
originalBoard.getBoard().setTitle(targetBoardTitle);
originalBoard.getBoard().setColor(targetBoardColor);
originalBoard.getBoard().setOwnerId(newOwner.getId());
+ originalBoard.setStatusEnum(DBStatus.LOCAL_EDITED);
originalBoard.setOwner(newOwner);
originalBoard.setId(null);
originalBoard.setLocalId(null);
@@ -491,6 +494,7 @@ public class SyncManager {
for (Stack stack : originalBoard.getStacks()) {
stack.setLocalId(null);
stack.setId(null);
+ stack.setStatusEnum(DBStatus.LOCAL_EDITED);
stack.setAccountId(targetAccountId);
stack.setBoardId(newBoardId);
dataBaseAdapter.createStack(targetAccountId, stack);
@@ -499,6 +503,7 @@ public class SyncManager {
label.setLocalId(null);
label.setId(null);
label.setAccountId(targetAccountId);
+ label.setStatusEnum(DBStatus.LOCAL_EDITED);
label.setBoardId(newBoardId);
dataBaseAdapter.createLabel(targetAccountId, label);
}
@@ -513,7 +518,7 @@ public class SyncManager {
@Override
public void onError(Throwable throwable) {
super.onError(throwable);
- liveData.postValue(null);
+ liveData.postError(throwable);
}
}).doSyncFor(new BoardDataProvider());
@@ -1080,7 +1085,37 @@ public class SyncManager {
@SuppressWarnings("JavadocReference")
@AnyThread
public WrappedLiveData<Void> moveCard(long originAccountId, long originCardLocalId, long targetAccountId, long targetBoardLocalId, long targetStackLocalId) {
- throw new UnsupportedOperationException("Not yet implemented");
+ return LiveDataHelper.wrapInLiveData(() -> {
+ FullCard originalCard = dataBaseAdapter.getFullCardByLocalIdDirectly(originAccountId, originCardLocalId);
+ int newIndex = dataBaseAdapter.getHighestCardOrderInStack(targetStackLocalId) + 1;
+ Board originalBoard = dataBaseAdapter.getBoardByLocalCardIdDirectly(originCardLocalId);
+ if (targetBoardLocalId == originalBoard.getLocalId()) {
+ reorder(originAccountId, originalCard, targetStackLocalId, newIndex);
+ return null;
+ }
+ Card originalInnerCard = originalCard.getCard();
+ deleteCard(originalInnerCard);
+ // clone card itself
+ originalInnerCard.setAccountId(targetAccountId);
+ originalInnerCard.setId(null);
+ originalInnerCard.setLocalId(null);
+ originalInnerCard.setStatusEnum(DBStatus.LOCAL_EDITED);
+ originalInnerCard.setStackId(targetStackLocalId);
+ originalInnerCard.setOrder(newIndex);
+ long newCardId = dataBaseAdapter.createCard(targetAccountId, originalInnerCard);
+ originalInnerCard.setLocalId(newCardId);
+
+ FullBoard targetBoard = dataBaseAdapter.getFullBoardByLocalCardIdDirectly(newCardId);
+
+ // TODO: clone labels, assign them
+
+ //TODO: Clone assigned users
+
+
+
+
+ return null;
+ });
}
@AnyThread
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
index 582029612..962699565 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/DataBaseAdapter.java
@@ -698,6 +698,11 @@ public class DataBaseAdapter {
return db.getBoardDao().getBoardByLocalCardIdDirectly(localCardId);
}
+ @WorkerThread
+ public FullBoard getFullBoardByLocalCardIdDirectly(long localCardId) {
+ return db.getBoardDao().getFullBoardByLocalCardIdDirectly(localCardId);
+ }
+
public JoinCardWithLabel getJoinCardWithLabel(Long localLabelId, Long localCardId) {
return db.getJoinCardWithLabelDao().getJoin(localLabelId, localCardId);
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java
index 0f4117481..bd189e846 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/persistence/sync/adapters/db/dao/BoardDao.java
@@ -52,6 +52,9 @@ public interface BoardDao extends GenericDao<Board> {
@Query("SELECT b.* FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON c.localId = :localCardId")
Board getBoardByLocalCardIdDirectly(long localCardId);
+ @Query("SELECT b.* FROM board b JOIN stack s ON s.boardId = b.localId JOIN card c ON c.localId = :localCardId")
+ FullBoard getFullBoardByLocalCardIdDirectly(long localCardId);
+
@Transaction
@Query("SELECT * FROM board WHERE accountId = :accountId")
List<FullBoard> getAllFullBoards(long accountId);