Files
wehub-resource-sync bb087aad19
CI / format (push) Failing after 2s
CI / packaging (push) Failing after 0s
CI / test (push) Failing after 3s
chore: import upstream snapshot with attribution
2026-07-13 11:58:56 +08:00

39 lines
1.1 KiB
Dart

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 = <String, Map<String, double>>{}; // session id -> (file id -> 0..1)
void setProgress({required String sessionId, required String fileId, required double progress}) {
Map<String, double>? 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<String, Map<String, double>> getData() {
return _progressMap;
}
}