mirror of
https://github.com/R0m1k3/xtremobile.git
synced 2026-10-24 07:38:16 +02:00
perf(critical): Implement P0 optimization fixes - TiviMate parity
CRITICAL FIXES: - P0-1: Fix EPG N+1 query storm with batch loading * Implement XtreamServiceMobile with getBatchEPG() method * Batch load EPG data instead of per-channel requests * Reduce 50-200 concurrent requests to 1 request per category * Add EPG cache with 1-hour TTL to prevent redundant calls - P0-2: Remove destructive cache clearing on startup * Implement TTL-based cache invalidation * Preserve cache between app launches (6h channels, 1h EPG, 30m search) * Add HiveService.invalidateExpiredCache() method * Expected: -80% startup time on cold launches - P0-3: Preserve tab state with IndexedStack * Replace switch statement with IndexedStack * Keep all tabs alive in widget tree * Preserve scroll position, search state, filters across tab switches * Expected: instant tab switching (<100ms) HIGH PRIORITY FIXES: - P1-1: Debounce search input (500ms) * Prevent per-keystroke full rebuilds * Add search debounce timer - P1-3: Fix double FocusNode disposal crash * Remove duplicate focus node disposal in native_player_screen.dart * Prevents StateError on player exit Expected impact: -75-80% perceived latency, instant tab switching, no OOM on startup. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
1 parent
70c2241527
commit
93b8e5b337
8 files changed
+791
-41
No files matched your search
+10
-6
@@ -26,15 +26,19 @@ void main() async {
|
||||
await HiveService.init();
|
||||
StartupProfiler.mark('hive_init');
|
||||
|
||||
// CLEAR CACHE ON STARTUP (Requested by User)
|
||||
// [P0-2 FIX] Implement TTL-based cache instead of destructive clearing
|
||||
// Cache is now persistent with TTL:
|
||||
// - Channel/category lists: 6 hours
|
||||
// - EPG data: 1 hour
|
||||
// - Search results: 30 minutes
|
||||
// Manual cache refresh is available in settings if needed
|
||||
try {
|
||||
// Clear API/EPG Cache (using default box name 'dio_cache')
|
||||
await Hive.deleteBoxFromDisk('dio_cache');
|
||||
debugPrint('XtremFlow: API Cache cleared');
|
||||
await HiveService.invalidateExpiredCache();
|
||||
debugPrint('XtremFlow: Expired cache entries invalidated (TTL-based)');
|
||||
} catch (e) {
|
||||
debugPrint('XtremFlow: Failed to clear cache: $e');
|
||||
debugPrint('XtremFlow: Cache maintenance skipped: $e');
|
||||
}
|
||||
StartupProfiler.mark('cache_clear');
|
||||
StartupProfiler.mark('cache_check');
|
||||
|
||||
await StartupProfiler.reportAll();
|
||||
|
||||
|
||||
Reference in new issue
Block a user