import 'package:refena_flutter/refena_flutter.dart'; /// A provider holding the progress of the send process. /// It is implemented as [ChangeNotifier] for performance reasons. final progressProvider = ChangeNotifierProvider((ref) => ProgressNotifier()); class ProgressNotifier extends ChangeNotifier { final _progressMap = >{}; // session id -> (file id -> 0..1) void setProgress({required String sessionId, required String fileId, required double progress}) { Map? progressMap = _progressMap[sessionId]; if (progressMap == null) { progressMap = {}; _progressMap[sessionId] = progressMap; } progressMap[fileId] = progress; notifyListeners(); } double getProgress({required String sessionId, required String fileId}) { return _progressMap[sessionId]?[fileId] ?? 0.0; } void removeSession(String sessionId) { _progressMap.remove(sessionId); notifyListeners(); } void removeAllSessions() { _progressMap.clear(); notifyListeners(); } /// Only for debug purposes Map> getData() { return _progressMap; } }