diff options
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.kt | 3 | ||||
| -rw-r--r-- | android/app/src/main/java/org/terst/doot/widget/data/WidgetRepository.kt | 20 |
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 + } + } } |
