summaryrefslogtreecommitdiff
path: root/android/app/src/main/java/org/terst/doot/widget/data
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src/main/java/org/terst/doot/widget/data')
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt3
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt20
2 files changed, 22 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 ff2ff28..50cfddc 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
@@ -15,7 +15,8 @@ data class WidgetItem(
@SerialName("is_overdue") val isOverdue: Boolean = false,
@SerialName("due_date") val dueDate: String? = null,
val url: String = "",
- val completable: Boolean = false
+ val completable: Boolean = false,
+ @SerialName("recurring_event_id") val recurringEventId: String? = null
)
@Serializable
diff --git a/android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt b/android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt
index 39f2a55..b604d39 100644
--- a/android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt
+++ b/android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt
@@ -17,6 +17,9 @@ private val json = Json { ignoreUnknownKeys = true }
@Serializable
private data class WidgetAddRequest(val title: String)
+@Serializable
+private data class RecurrenceResponse(val recurrence: String)
+
class WidgetRepository(
private val client: OkHttpClient,
private val serverUrl: String,
@@ -100,4 +103,21 @@ class WidgetRepository(
check(response.isSuccessful) { "HTTP ${response.code}" }
}
}
+
+ /** GETs the formatted recurrence schedule for a recurring event. */
+ suspend fun getRecurrence(recurringEventId: String): Result<String> =
+ withContext(Dispatchers.IO) {
+ val encodedId = java.net.URLEncoder.encode(recurringEventId, "UTF-8")
+ val request = Request.Builder()
+ .url("$serverUrl/api/widget/recurrence?recurring_event_id=$encodedId")
+ .header("Authorization", "Bearer $token")
+ .build()
+ runCatching {
+ val response = client.newCall(request).execute()
+ check(response.isSuccessful) { "HTTP ${response.code}" }
+ val body = checkNotNull(response.body?.string()) { "Empty body" }
+ val parsed = json.decodeFromString<RecurrenceResponse>(body)
+ parsed.recurrence
+ }
+ }
}