import '../models/activity.dart'; class ActivityCacheService { static final ActivityCacheService _instance = ActivityCacheService._internal(); factory ActivityCacheService() { return _instance; } ActivityCacheService._internal(); // Cache : tripId -> liste d'activités final Map> _cache = {}; // Timestamps pour invalider le cache après 30 minutes final Map _cacheTimestamps = {}; static const Duration _cacheValidityDuration = Duration(minutes: 30); /// Stocker les activités Google pour un voyage void setCachedActivities(String tripId, List activities) { _cache[tripId] = activities; _cacheTimestamps[tripId] = DateTime.now(); } /// Récupérer les activités en cache si elles sont toujours valides List? getCachedActivities(String tripId) { if (!_cache.containsKey(tripId)) { return null; } final timestamp = _cacheTimestamps[tripId]; if (timestamp != null) { final age = DateTime.now().difference(timestamp); if (age > _cacheValidityDuration) { // Cache expiré, nettoyer _cache.remove(tripId); _cacheTimestamps.remove(tripId); return null; } } return _cache[tripId]; } /// Vérifier si des activités sont en cache pour ce voyage bool hasCachedActivities(String tripId) { return getCachedActivities(tripId) != null; } /// Nettoyer le cache pour un voyage spécifique void clearCache(String tripId) { _cache.remove(tripId); _cacheTimestamps.remove(tripId); } /// Nettoyer tout le cache void clearAllCache() { _cache.clear(); _cacheTimestamps.clear(); } }