Files
mileograph_flutter/lib/services/data_service/data_service_badges.dart
Pete Gregory 4bd6f0bbed
All checks were successful
Release / meta (push) Successful in 7s
Release / linux-build (push) Successful in 6m49s
Release / android-build (push) Successful in 15m55s
Release / release-master (push) Successful in 24s
Release / release-dev (push) Successful in 26s
add support for badges and notifications, adjust nav pages
2025-12-26 18:36:37 +00:00

43 lines
1.1 KiB
Dart

part of 'data_service.dart';
extension DataServiceBadges on DataService {
Future<void> fetchBadgeAwards() async {
_isBadgeAwardsLoading = true;
try {
final json = await api.get('/badge/awards/me');
List<dynamic>? list;
if (json is List) {
list = json;
} else if (json is Map) {
for (final key in ['awards', 'badge_awards', 'data']) {
final value = json[key];
if (value is List) {
list = value;
break;
}
}
}
final parsed = list
?.whereType<Map<String, dynamic>>()
.map(BadgeAward.fromJson)
.toList();
if (parsed != null) {
parsed.sort((a, b) {
final aTs = a.awardedAt?.millisecondsSinceEpoch ?? 0;
final bTs = b.awardedAt?.millisecondsSinceEpoch ?? 0;
return bTs.compareTo(aTs);
});
_badgeAwards = parsed;
} else {
_badgeAwards = [];
}
} catch (e) {
debugPrint('Failed to fetch badge awards: $e');
_badgeAwards = [];
} finally {
_isBadgeAwardsLoading = false;
_notifyAsync();
}
}
}