Yimaru-Mobile/lib/ui/views/progress/progress_viewmodel.dart
BisratHailu 7f6a5f1d34 -feat(progress): Integrat my progress section with api.
-fix(localization): Localization state issue fixed.
-fix(profile_image): Fix profile image downloading issue.
2026-06-01 01:34:15 +03:00

66 lines
1.7 KiB
Dart

import 'package:stacked/stacked.dart';
import 'package:stacked_services/stacked_services.dart';
import 'package:yimaru_app/services/learn_service.dart';
import 'package:yimaru_app/services/status_checker_service.dart';
import 'package:yimaru_app/ui/common/enmus.dart';
import '../../../app/app.locator.dart';
import '../../../models/progress_summary.dart';
class ProgressViewModel extends ReactiveViewModel {
// Dependency injection
final _learnService = locator<LearnService>();
final _navigationService = locator<NavigationService>();
final _statusCheckerService = locator<StatusCheckerService>();
@override
List<ListenableServiceMixin> get listenableServices => [_learnService];
// Total practice count
int get _totalCount => _learnService.totalCount;
int get totalCount => _totalCount;
// Completed practice count
int get _completedCount => _learnService.completedCount;
int get completedCount => _completedCount;
// Total progress
int get _totalProgress => _learnService.totalProgress;
int get totalProgress => _totalProgress;
// Courses
final List<Map<String, dynamic>> _courses = [
{
'title': 'IELTS Preparation',
},
{
'title': 'Duolingo English Test',
},
];
List<Map<String, dynamic>> get courses => _courses;
// Navigation
void pop() => _navigationService.back();
// Remote api
// Learning progress
Future<void> getProgressSummary() async => runBusyFuture(_getProgressSummary(),
busyObject: StateObjects.progressSummary);
Future<void> _getProgressSummary() async {
if (await _statusCheckerService.checkConnection()) {
await _learnService.getProgressSummary();
}
}
}