eeb8a96f20
This commit adds a comprehensive caching system that loads all data on app launch and keeps it in memory, eliminating redundant API calls when navigating between screens. Core Implementation: - DataCache: Singleton holding all app data in StateFlow - DataPrefetchManager: Loads all data in parallel on app launch - Automatic cache updates on create/update/delete operations Features: - ✅ Instant screen loads from cached data - ✅ Reduced API calls (no redundant requests) - ✅ Better UX (no loading spinners on navigation) - ✅ Offline support (data remains available) - ✅ Consistent state across all screens Cache Contents: - Residences (all + my residences + summaries) - Tasks (all tasks + tasks by residence) - Documents (all + by residence) - Contractors (all) - Lookup data (categories, priorities, frequencies, statuses) ViewModels Updated: - ResidenceViewModel: Uses cache with forceRefresh option - TaskViewModel: Uses cache with forceRefresh option - Updates cache on successful create/update/delete iOS Integration: - Data prefetch on successful login - Cache cleared on logout - Background prefetch doesn't block authentication Usage: // Load from cache (instant) viewModel.loadResidences() // Force refresh from API viewModel.loadResidences(forceRefresh: true) Next Steps: - Update DocumentViewModel and ContractorViewModel (same pattern) - Add Android MainActivity integration - Add pull-to-refresh support See composeApp/src/commonMain/kotlin/com/example/mycrib/cache/README_CACHING.md for complete documentation and implementation guide. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>