mirror of
https://github.com/sudoxnym/habitica-android.git
synced 2026-04-14 19:56:32 +00:00
Merge pull request #1952 from Hafizzle/Fiz/duedate-display-update
Adjust due date display for to-dos
This commit is contained in:
commit
79c8d8603b
3 changed files with 32 additions and 1 deletions
|
|
@ -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.)
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
Loading…
Reference in a new issue