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
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:
@@ -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 [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user