part of 'data_service.dart'; extension DataServiceBadges on DataService { Future fetchBadgeAwards() async { _isBadgeAwardsLoading = true; try { final json = await api.get('/badge/awards/me'); List? 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(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(); } } }