summaryrefslogtreecommitdiff
path: root/android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'android/app/src/main/java')
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/data/DataStore.kt18
-rw-r--r--android/app/src/main/java/org/terst/doot/widget/data/WidgetItem.kt23
2 files changed, 41 insertions, 0 deletions
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<Preferences> 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<WidgetItem>
+)