Add accepted leg edit notification and class leaderboard
All checks were successful
Release / meta (push) Successful in 12s
Release / linux-build (push) Successful in 1m0s
Release / web-build (push) Successful in 2m6s
Release / android-build (push) Successful in 6m8s
Release / release-master (push) Successful in 16s
Release / release-dev (push) Successful in 19s

This commit is contained in:
2026-01-05 01:09:43 +00:00
parent 42ac7a97e1
commit 8ab3f53c0d
11 changed files with 1114 additions and 132 deletions

View File

@@ -179,4 +179,39 @@ extension DataServiceTraction on DataService {
}
return null;
}
Future<List<LeaderboardEntry>> fetchClassLeaderboard(
String locoClass, {
bool friends = false,
}) async {
try {
final path = Uri.encodeComponent(locoClass);
final suffix = friends ? '/friends' : '';
final json = await api.get('/stats/class/$path/leaderboard$suffix');
List<dynamic>? list;
if (json is List) {
list = json;
} else if (json is Map) {
for (final key in ['leaderboard', 'data', 'items', 'results']) {
final value = json[key];
if (value is List) {
list = value;
break;
}
}
}
return list
?.whereType<Map>()
.map((e) => LeaderboardEntry.fromJson(
e.map((k, v) => MapEntry(k.toString(), v)),
))
.toList() ??
const [];
} catch (e) {
debugPrint(
'Failed to fetch class leaderboard for $locoClass (friends=$friends): $e',
);
return const [];
}
}
}