Merge pull request #1952 from Hafizzle/Fiz/duedate-display-update

Adjust due date display for to-dos
This commit is contained in:
Phillip Thelen 2023-04-24 15:09:19 +02:00 committed by GitHub
commit 79c8d8603b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 1 deletions

View file

@ -8,6 +8,7 @@ import java.time.format.DateTimeFormatter
import java.time.format.DateTimeFormatterBuilder
import java.time.format.TextStyle
import java.time.temporal.TemporalAccessor
import java.util.Date
import java.util.Locale
fun String.parseToZonedDateTime(): ZonedDateTime? {
@ -23,6 +24,10 @@ fun String.parseToZonedDateTime(): ZonedDateTime? {
}
}
fun Date.toZonedDateTime(): ZonedDateTime? {
return this.toInstant().atZone(ZoneId.systemDefault())
}
/**
* Returns full display name in default Locale (Monday, Tuesday, Wednesday, etc.)
*/

View file

@ -8,6 +8,7 @@ import com.google.gson.annotations.SerializedName
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.extensions.dayOfWeekString
import com.habitrpg.android.habitica.extensions.parseToZonedDateTime
import com.habitrpg.android.habitica.extensions.toZonedDateTime
import com.habitrpg.android.habitica.models.BaseMainObject
import com.habitrpg.android.habitica.models.Tag
import com.habitrpg.common.habitica.helpers.ExceptionHandler
@ -22,6 +23,7 @@ import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey
import org.json.JSONArray
import org.json.JSONException
import java.time.LocalDate
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZonedDateTime
@ -146,6 +148,21 @@ open class Task : RealmObject, BaseMainObject, Parcelable, BaseTask {
return isActive && !completed(userID)
}
fun isDueToday(): Boolean? {
val zonedDueDate = dueDate?.toZonedDateTime()
if (zonedDueDate != null) {
val day = ZonedDateTime.now().dayOfYear
val year = ZonedDateTime.now().year
return (zonedDueDate.dayOfYear == day) && (zonedDueDate.year == year)
}
return null
}
fun isDayOrMorePastDue(): Boolean? {
val zonedDueDate = dueDate?.toZonedDateTime()
return zonedDueDate?.toLocalDate()?.isBefore(LocalDate.now())
}
val streakString: String?
get() {
return if (counterUp != null && (counterUp ?: 0) > 0 && counterDown != null && (counterDown ?: 0) > 0) {

View file

@ -1,6 +1,8 @@
package com.habitrpg.android.habitica.ui.viewHolders.tasks
import android.view.View
import androidx.core.content.ContextCompat
import com.habitrpg.android.habitica.R
import com.habitrpg.android.habitica.helpers.GroupPlanInfoProvider
import com.habitrpg.android.habitica.models.tasks.ChecklistItem
import com.habitrpg.android.habitica.models.tasks.Task
@ -34,7 +36,14 @@ class TodoViewHolder(
override fun configureSpecialTaskTextView(task: Task) {
super.configureSpecialTaskTextView(task)
if (task.dueDate != null) {
task.dueDate?.let { specialTaskTextView?.text = dateFormatter.format(it) }
if (task.isDueToday() == true) {
specialTaskTextView?.text = context.getString(R.string.today)
} else if (task.isDayOrMorePastDue() == true) {
task.dueDate?.let { specialTaskTextView?.text = dateFormatter.format(it) }
specialTaskTextView?.setTextColor(ContextCompat.getColor(context, R.color.maroon_100))
} else {
task.dueDate?.let { specialTaskTextView?.text = dateFormatter.format(it) }
}
this.specialTaskTextView?.visibility = View.VISIBLE
calendarIconView?.visibility = View.VISIBLE
} else {