P3 Stream L: widget refresh scheduler (WorkManager, iOS cadence)

WidgetRefreshSchedule: 30-min day / 120-min overnight (6am–11pm split).
WidgetRefreshWorker: CoroutineWorker fetches via APILayer -> repo -> widget.update.
WidgetUpdateManager: chained one-time enqueue pattern (WorkManager PeriodicWork
can't vary cadence).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Trey T
2026-04-18 12:54:35 -05:00
parent 58b9371d0d
commit dbff329384
7 changed files with 682 additions and 90 deletions

View File

@@ -69,6 +69,9 @@ kotlin {
// DataStore for widget data persistence
implementation("androidx.datastore:datastore-preferences:1.1.1")
// WorkManager for scheduled widget refresh (iOS parity — Stream L)
implementation("androidx.work:work-runtime-ktx:2.9.1")
// Encrypted SharedPreferences for secure token storage
implementation(libs.androidx.security.crypto)
@@ -126,6 +129,7 @@ kotlin {
implementation(libs.androidx.test.core)
implementation(libs.androidx.test.core.ktx)
implementation(libs.androidx.testExt.junit)
implementation("androidx.work:work-testing:2.9.1")
}
}
val androidInstrumentedTest by getting {