Persist lookup data to disk and refresh on app foreground

- DataManager now persists lookup data (residence types, task categories,
  priorities, statuses, specialties, templates) to disk
- Loads cached lookups on app startup for faster launch
- iOS: Refresh lookups when app becomes active, refresh widget on background
- Android: Initialize DataManager in onCreate, already had onResume refresh
- Only send ETag if lookup data is actually in memory to avoid 304 with no data

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Trey t
2025-12-06 11:29:14 -06:00
parent a91efd5de2
commit 04c3389e4d
4 changed files with 145 additions and 12 deletions

View File

@@ -33,6 +33,8 @@ import com.example.casera.fcm.FCMManager
import com.example.casera.platform.BillingManager
import com.example.casera.network.APILayer
import com.example.casera.sharing.ContractorSharingManager
import com.example.casera.data.DataManager
import com.example.casera.data.PersistenceManager
import kotlinx.coroutines.launch
class MainActivity : ComponentActivity(), SingletonImageLoader.Factory {
@@ -55,6 +57,14 @@ class MainActivity : ComponentActivity(), SingletonImageLoader.Factory {
ThemeStorage.initialize(ThemeStorageManager.getInstance(applicationContext))
ThemeManager.initialize()
// Initialize DataManager with platform-specific managers
// This loads cached lookup data from disk for faster startup
DataManager.initialize(
tokenMgr = TokenManager.getInstance(applicationContext),
themeMgr = ThemeStorageManager.getInstance(applicationContext),
persistenceMgr = PersistenceManager.getInstance(applicationContext)
)
// Initialize BillingManager for subscription management
billingManager = BillingManager.getInstance(applicationContext)