Files
TravelMate/lib/services/activity_cache_service.dart
2025-11-13 09:27:37 +01:00

63 lines
1.7 KiB
Dart

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<String, List<Activity>> _cache = {};
// Timestamps pour invalider le cache après 30 minutes
final Map<String, DateTime> _cacheTimestamps = {};
static const Duration _cacheValidityDuration = Duration(minutes: 30);
/// Stocker les activités Google pour un voyage
void setCachedActivities(String tripId, List<Activity> activities) {
_cache[tripId] = activities;
_cacheTimestamps[tripId] = DateTime.now();
}
/// Récupérer les activités en cache si elles sont toujours valides
List<Activity>? 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();
}
}