From 2d62de809df626ae5601a70016681d8a7c4358df Mon Sep 17 00:00:00 2001 From: desperateCoder Date: Fri, 22 Dec 2023 13:24:23 +0100 Subject: #1556 mark card as done: first impl --- .../nextcloud/deck/database/DeckDatabase.java | 4 +++- .../deck/database/migration/Migration_32_33.java | 20 ++++++++++++++++++++ .../it/niedermann/nextcloud/deck/model/Card.java | 13 +++++++++++++ .../nextcloud/deck/model/propagation/CardUpdate.java | 1 + .../deck/remote/api/JsonToEntityParser.java | 1 + 5 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/it/niedermann/nextcloud/deck/database/migration/Migration_32_33.java diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/DeckDatabase.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/DeckDatabase.java index b71abece1..a41379e8d 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/database/DeckDatabase.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/DeckDatabase.java @@ -65,6 +65,7 @@ import it.niedermann.nextcloud.deck.database.migration.Migration_28_29; import it.niedermann.nextcloud.deck.database.migration.Migration_29_30; import it.niedermann.nextcloud.deck.database.migration.Migration_30_31; import it.niedermann.nextcloud.deck.database.migration.Migration_31_32; +import it.niedermann.nextcloud.deck.database.migration.Migration_32_33; import it.niedermann.nextcloud.deck.database.migration.Migration_8_9; import it.niedermann.nextcloud.deck.database.migration.Migration_9_10; import it.niedermann.nextcloud.deck.model.AccessControl; @@ -135,7 +136,7 @@ import it.niedermann.nextcloud.deck.remote.api.LastSyncUtil; FilterWidgetSort.class, }, exportSchema = false, - version = 32 + version = 33 ) @TypeConverters({DateTypeConverter.class, EnumConverter.class}) public abstract class DeckDatabase extends RoomDatabase { @@ -188,6 +189,7 @@ public abstract class DeckDatabase extends RoomDatabase { .addMigrations(new Migration_29_30(context)) .addMigrations(new Migration_30_31()) .addMigrations(new Migration_31_32(context)) + .addMigrations(new Migration_32_33()) .fallbackToDestructiveMigration() .addCallback(ON_CREATE_CALLBACK) .build(); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/database/migration/Migration_32_33.java b/app/src/main/java/it/niedermann/nextcloud/deck/database/migration/Migration_32_33.java new file mode 100644 index 000000000..7de80cf20 --- /dev/null +++ b/app/src/main/java/it/niedermann/nextcloud/deck/database/migration/Migration_32_33.java @@ -0,0 +1,20 @@ +package it.niedermann.nextcloud.deck.database.migration; + +import androidx.annotation.NonNull; +import androidx.room.migration.Migration; +import androidx.sqlite.db.SupportSQLiteDatabase; + +/** + * Adds support for marking a card as done: https://github.com/stefan-niedermann/nextcloud-deck/issues/1556 + */ +public class Migration_32_33 extends Migration { + + public Migration_32_33() { + super(32, 33); + } + + @Override + public void migrate(@NonNull SupportSQLiteDatabase database) { + database.execSQL("ALTER TABLE `Card` add column done INTEGER"); + } +} diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/Card.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/Card.java index a5650f124..98a533c95 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/model/Card.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/Card.java @@ -57,6 +57,7 @@ public class Card extends AbstractRemoteEntity { private String type; private Instant createdAt; private Instant deletedAt; + private Instant done; private int attachmentCount; private Long userId; @@ -252,6 +253,14 @@ public class Card extends AbstractRemoteEntity { return this.order; } + public Instant getDone() { + return done; + } + + public void setDone(Instant done) { + this.done = done; + } + @Override public boolean equals(Object o) { if (this == o) return true; @@ -274,6 +283,8 @@ public class Card extends AbstractRemoteEntity { return false; if (deletedAt != null ? !deletedAt.equals(card.deletedAt) : card.deletedAt != null) return false; + if (done != null ? !done.equals(card.done) : card.done != null) + return false; if (userId != null ? !userId.equals(card.userId) : card.userId != null) return false; return dueDate != null ? dueDate.equals(card.dueDate) : card.dueDate == null; } @@ -286,6 +297,7 @@ public class Card extends AbstractRemoteEntity { result = 31 * result + (type != null ? type.hashCode() : 0); result = 31 * result + (createdAt != null ? createdAt.hashCode() : 0); result = 31 * result + (deletedAt != null ? deletedAt.hashCode() : 0); + result = 31 * result + (done != null ? done.hashCode() : 0); result = 31 * result + attachmentCount; result = 31 * result + (userId != null ? userId.hashCode() : 0); result = 31 * result + order; @@ -306,6 +318,7 @@ public class Card extends AbstractRemoteEntity { ", type='" + type + '\'' + ", createdAt=" + createdAt + ", deletedAt=" + deletedAt + + ", done=" + done + ", attachmentCount=" + attachmentCount + ", userId=" + userId + ", order=" + order + diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/model/propagation/CardUpdate.java b/app/src/main/java/it/niedermann/nextcloud/deck/model/propagation/CardUpdate.java index b13b84e36..389e26489 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/model/propagation/CardUpdate.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/model/propagation/CardUpdate.java @@ -27,6 +27,7 @@ public class CardUpdate extends Card { setAccountId(card.getAccountId()); setId(card.getId()); setLocalId(card.getLocalId()); + setDone(card.getCard().getDone()); } public User getOwner() { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/JsonToEntityParser.java b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/JsonToEntityParser.java index 04a0b706e..5c2a83dff 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/JsonToEntityParser.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/remote/api/JsonToEntityParser.java @@ -408,6 +408,7 @@ public class JsonToEntityParser { card.setLastModified(getTimestampFromLong(e.get("lastModified"))); card.setCreatedAt(getTimestampFromLong(e.get("createdAt"))); card.setDeletedAt(getTimestampFromLong(e.get("deletedAt"))); + card.setDone(getTimestampFromString(e.get("done"))); if (e.has("labels") && !e.get("labels").isJsonNull()) { JsonArray labelsJson = e.getAsJsonArray("labels"); List