From a96e669f4898af92b7029ef0b92ae156fac736dd Mon Sep 17 00:00:00 2001 From: Hafiz Date: Tue, 13 Sep 2022 05:31:01 -0400 Subject: [PATCH] Handle task showing reminder notification for completed task Handle if task was completed before reminder, and show upcoming reminders if task still marked as complete. --- .../java/com/habitrpg/android/habitica/models/tasks/Task.kt | 5 +++++ .../com/habitrpg/android/habitica/receivers/TaskReceiver.kt | 2 +- .../com/habitrpg/android/habitica/utils/TaskSerializer.kt | 1 + 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt index aeee02cb1..0c4de801f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/models/tasks/Task.kt @@ -90,6 +90,11 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask { override var isDue: Boolean? = null var nextDue: RealmList? = null + var updatedAt: Date? = null + val isUpdatedToday: Boolean + get() = ZonedDateTime.ofInstant(updatedAt?.toInstant(), ZoneId.systemDefault()).toLocalDate() + .equals(ZonedDateTime.now().withZoneSameLocal(ZoneId.systemDefault()).toLocalDate()) + // Needed for offline creating/updating var isSaving: Boolean = false diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt index 4edb78de8..470bb7ed4 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/receivers/TaskReceiver.kt @@ -46,7 +46,7 @@ class TaskReceiver : BroadcastReceiver() { .firstElement() .subscribe( Consumer { - if (!it.isValid || it.completed) { + if (it.isUpdatedToday && it.completed) { return@Consumer } diff --git a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt index 3effe6188..ce666273f 100644 --- a/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt +++ b/Habitica/src/main/java/com/habitrpg/android/habitica/utils/TaskSerializer.kt @@ -85,6 +85,7 @@ class TaskSerializer : JsonSerializer, JsonDeserializer { } catch (ignored: java.lang.UnsupportedOperationException) {} task.dateCreated = context.deserialize(obj.get("createdAt"), Date::class.java) task.dueDate = context.deserialize(obj.get("date"), Date::class.java) + task.updatedAt = context.deserialize(obj.get("updatedAt"), Date::class.java) task.startDate = context.deserialize(obj.get("startDate"), Date::class.java) task.isDue = obj.get("isDue")?.asBoolean if (obj.has("nextDue")) {