add data service and homepage data retrieval
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import 'dart:convert';
|
||||
import 'package:http/http.dart' as http;
|
||||
import 'package:mileograph_flutter/services/authservice.dart';
|
||||
|
||||
typedef TokenProvider = String? Function();
|
||||
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:mileograph_flutter/objects/objects.dart';
|
||||
import 'package:mileograph_flutter/services/apiService.dart';
|
||||
@@ -65,4 +64,9 @@ class AuthService extends ChangeNotifier {
|
||||
email: userResponse['email'],
|
||||
);
|
||||
}
|
||||
|
||||
void logout() {
|
||||
_user = null;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
51
lib/services/dataService.dart
Normal file
51
lib/services/dataService.dart
Normal file
@@ -0,0 +1,51 @@
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:mileograph_flutter/objects/objects.dart';
|
||||
import 'package:mileograph_flutter/services/apiService.dart'; // assumes you've moved HomepageStats + submodels to a separate file
|
||||
|
||||
class DataService extends ChangeNotifier {
|
||||
final ApiService api;
|
||||
|
||||
DataService({required this.api});
|
||||
|
||||
HomepageStats? _homepageStats;
|
||||
HomepageStats? get homepageStats => _homepageStats;
|
||||
|
||||
bool _isHomepageLoading = false;
|
||||
bool get isHomepageLoading => _isHomepageLoading;
|
||||
|
||||
Future<void> fetchHomepageStats() async {
|
||||
_isHomepageLoading = true;
|
||||
notifyListeners();
|
||||
|
||||
try {
|
||||
final json = await api.get('/stats/homepage');
|
||||
_homepageStats = HomepageStats.fromJson(json);
|
||||
} catch (e) {
|
||||
debugPrint('Failed to fetch homepage stats: $e');
|
||||
_homepageStats = null;
|
||||
} finally {
|
||||
_isHomepageLoading = false;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
|
||||
void clear() {
|
||||
_homepageStats = null;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
double getMileageForCurrentYear() {
|
||||
final currentYear = DateTime.now().year;
|
||||
return getMileageForYear(currentYear) ?? 0;
|
||||
}
|
||||
|
||||
double? getMileageForYear(int year) {
|
||||
return _homepageStats?.yearlyMileage
|
||||
.firstWhere(
|
||||
(entry) => entry.year == year,
|
||||
orElse: () => YearlyMileage(year: null, mileage: 0),
|
||||
)
|
||||
.mileage ??
|
||||
0;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user