From 6af31b5204dc41feb8a6dabea039e0bf68190136 Mon Sep 17 00:00:00 2001 From: Peter Stone Date: Mon, 29 Jun 2026 02:01:00 +0000 Subject: feat: add WidgetItem data class and DataStore keys --- .../java/org/terst/doot/widget/data/DataStore.kt | 18 +++++++++++++++++ .../java/org/terst/doot/widget/data/WidgetItem.kt | 23 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) create mode 100644 android/app/src/main/java/org/terst/doot/widget/data/DataStore.kt create mode 100644 android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt (limited to 'android/app/src') diff --git a/android/app/src/main/java/org/terst/doot/widget/data/DataStore.kt b/android/app/src/main/java/org/terst/doot/widget/data/DataStore.kt new file mode 100644 index 0000000..164e3a2 --- /dev/null +++ b/android/app/src/main/java/org/terst/doot/widget/data/DataStore.kt @@ -0,0 +1,18 @@ +package org.terst.doot.widget.data + +import android.content.Context +import androidx.datastore.core.DataStore +import androidx.datastore.preferences.core.Preferences +import androidx.datastore.preferences.core.longPreferencesKey +import androidx.datastore.preferences.core.stringPreferencesKey +import androidx.datastore.preferences.preferencesDataStore + +val Context.dataStore: DataStore by preferencesDataStore(name = "doot_widget") + +object Keys { + val SERVER_URL = stringPreferencesKey("server_url") + val TOKEN = stringPreferencesKey("token") + val ITEMS_JSON = stringPreferencesKey("items_json") + val NOW = stringPreferencesKey("now") + val LAST_UPDATED = longPreferencesKey("last_updated") +} 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 new file mode 100644 index 0000000..40fc190 --- /dev/null +++ b/android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt @@ -0,0 +1,23 @@ +package org.terst.doot.widget.data + +import kotlinx.serialization.SerialName +import kotlinx.serialization.Serializable + +@Serializable +data class WidgetItem( + val id: String, + val title: String, + val source: String, // "todoist" | "trello" | "calendar" | "plantoeat" | "gtasks" + val type: String, // "task" | "event" + val start: String? = null, // ISO-8601 or null (floating task) + val end: String? = null, // ISO-8601 or null + @SerialName("is_all_day") val isAllDay: Boolean = false, + val url: String = "", + val completable: Boolean = false +) + +@Serializable +data class WidgetResponse( + val now: String, + val items: List +) -- cgit v1.2.3