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")) {