summaryrefslogtreecommitdiff
path: root/android/app
diff options
context:
space:
mode:
Diffstat (limited to 'android/app')
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt1
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/ui/DootWidget.kt1
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/ui/TaskDetailActivity.kt16
3 files changed, 17 insertions, 1 deletions
diff --git a/android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt b/android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt
index d16fbfd..ff2ff28 100644
--- a/android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt
+++ b/android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt
@@ -13,6 +13,7 @@ data class WidgetItem(
val end: String? = null, // ISO-8601 or null
@SerialName("is_all_day") val isAllDay: Boolean = false,
@SerialName("is_overdue") val isOverdue: Boolean = false,
+ @SerialName("due_date") val dueDate: String? = null,
val url: String = "",
val completable: Boolean = false
)
diff --git a/android/app/src/main/java/org/terst/doot/widget/ui/DootWidget.kt b/android/app/src/main/java/org/terst/doot/widget/ui/DootWidget.kt
index dabf61f..a0adf85 100644
--- a/android/app/src/main/java/org/terst/doot/widget/ui/DootWidget.kt
+++ b/android/app/src/main/java/org/terst/doot/widget/ui/DootWidget.kt
@@ -294,6 +294,7 @@ fun TaskRow(task: WidgetItem) {
putExtra(TaskDetailActivity.EXTRA_SOURCE, task.source)
putExtra(TaskDetailActivity.EXTRA_TITLE, task.title)
putExtra(TaskDetailActivity.EXTRA_COMPLETABLE, task.completable)
+ putExtra(TaskDetailActivity.EXTRA_DUE_DATE, task.dueDate)
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
}
// Split into two sibling clickable regions to avoid the Glance/RemoteViews limitation
diff --git a/android/app/src/main/java/org/terst/doot/widget/ui/TaskDetailActivity.kt b/android/app/src/main/java/org/terst/doot/widget/ui/TaskDetailActivity.kt
index 0dac1cc..648ad10 100644
--- a/android/app/src/main/java/org/terst/doot/widget/ui/TaskDetailActivity.kt
+++ b/android/app/src/main/java/org/terst/doot/widget/ui/TaskDetailActivity.kt
@@ -22,6 +22,8 @@ import org.terst.doot.widget.data.Keys
import org.terst.doot.widget.data.WidgetRepository
import org.terst.doot.widget.data.dataStore
import org.terst.doot.widget.work.CompleteWorker
+import java.time.LocalDate
+import java.time.format.DateTimeFormatter
import java.util.Calendar
import java.util.TimeZone
@@ -34,6 +36,7 @@ class TaskDetailActivity : ComponentActivity() {
val source = intent.getStringExtra(EXTRA_SOURCE) ?: return finish()
val title = intent.getStringExtra(EXTRA_TITLE) ?: ""
val completable = intent.getBooleanExtra(EXTRA_COMPLETABLE, false)
+ val dueDate = intent.getStringExtra(EXTRA_DUE_DATE)
setContent {
MaterialTheme(colorScheme = darkColorScheme()) {
@@ -41,6 +44,7 @@ class TaskDetailActivity : ComponentActivity() {
title = title,
source = source,
completable = completable,
+ dueDate = dueDate,
onComplete = {
CompleteWorker.enqueue(this, id, source)
finish()
@@ -69,6 +73,7 @@ class TaskDetailActivity : ComponentActivity() {
const val EXTRA_SOURCE = "task_source"
const val EXTRA_TITLE = "task_title"
const val EXTRA_COMPLETABLE = "task_completable"
+ const val EXTRA_DUE_DATE = "task_due_date"
}
}
@@ -78,6 +83,7 @@ fun TaskDetailSheet(
title: String,
source: String,
completable: Boolean,
+ dueDate: String?,
onComplete: () -> Unit,
onReschedule: (String) -> Unit,
onDismiss: () -> Unit
@@ -167,10 +173,18 @@ fun TaskDetailSheet(
colors = ButtonDefaults.outlinedButtonColors(contentColor = Color.White),
border = androidx.compose.foundation.BorderStroke(1.dp, Color.White.copy(alpha = 0.3f))
) {
- Text("Reschedule", fontSize = 15.sp)
+ Text(formatDueDateLabel(dueDate), fontSize = 15.sp)
}
}
Spacer(Modifier.height(20.dp))
}
}
}
+
+private fun formatDueDateLabel(dueDate: String?): String {
+ if (dueDate == null) return "No due date · tap to schedule"
+ return runCatching {
+ val date = LocalDate.parse(dueDate.substring(0, 10))
+ "Due " + date.format(DateTimeFormatter.ofPattern("MMM d"))
+ }.getOrDefault("No due date · tap to schedule")
+}