2024-10-23 04:16:07 +00:00
|
|
|
// lib/features/home/providers/completed_topics_provider.dart
|
|
|
|
|
|
|
|
|
|
import 'package:english_learning/core/services/repositories/completed_topics_repository.dart';
|
|
|
|
|
import 'package:english_learning/features/home/models/completed_topics_model.dart';
|
|
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
|
|
|
|
|
|
|
class CompletedTopicsProvider with ChangeNotifier {
|
|
|
|
|
final CompletedTopicsRepository _repository;
|
|
|
|
|
List<CompletedTopic> _completedTopics = [];
|
|
|
|
|
bool _isLoading = false;
|
|
|
|
|
String? _error;
|
|
|
|
|
|
|
|
|
|
CompletedTopicsProvider(this._repository);
|
|
|
|
|
|
|
|
|
|
List<CompletedTopic> get completedTopics => _completedTopics;
|
|
|
|
|
bool get isLoading => _isLoading;
|
|
|
|
|
String? get error => _error;
|
|
|
|
|
|
2024-11-13 02:03:40 +00:00
|
|
|
void resetData() {
|
|
|
|
|
_completedTopics = [];
|
|
|
|
|
_isLoading = false;
|
|
|
|
|
_error = null;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
|
2024-10-23 04:16:07 +00:00
|
|
|
Future<void> fetchCompletedTopics(String token) async {
|
2024-11-13 02:03:40 +00:00
|
|
|
resetData();
|
2024-10-23 04:16:07 +00:00
|
|
|
_isLoading = true;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
|
|
|
|
|
try {
|
2024-11-13 02:03:40 +00:00
|
|
|
final result = await _repository.getCompletedTopics(token);
|
|
|
|
|
_completedTopics = result;
|
|
|
|
|
_error = null;
|
2024-10-23 04:16:07 +00:00
|
|
|
} catch (e) {
|
2024-11-13 02:03:40 +00:00
|
|
|
// Tangani error
|
|
|
|
|
_completedTopics = [];
|
2024-10-23 04:16:07 +00:00
|
|
|
_error = e.toString();
|
|
|
|
|
} finally {
|
2024-11-13 02:03:40 +00:00
|
|
|
// Selalu set loading ke false
|
2024-10-23 04:16:07 +00:00
|
|
|
_isLoading = false;
|
|
|
|
|
notifyListeners();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|