Skip to content

Commit e8efb59

Browse files
author
Andrii Bondarchuk
committed
Display achievement level in uncompleted achievements output
Added AchievementLevel to MappedUncompletedAchievementsModel, populated from user profile in ZwiftGameInfoService. The achievement level (XP) is now shown at the top of the HTTP trigger response for improved user feedback.
1 parent 9a58c11 commit e8efb59

File tree

2 files changed

+6
-0
lines changed

2 files changed

+6
-0
lines changed

src/FitSyncHub.Functions/Functions/ZwiftUncompletedAchievementsHttpTriggerFunction.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public async Task<IActionResult> Run(
2626
var achievementsState = await _zwiftGameInfoService.GetAchievementsState(cancellationToken);
2727
var sb = new StringBuilder();
2828

29+
sb.AppendLine($"Achievements level (xp): {achievementsState.AchievementLevel}");
30+
sb.AppendLine();
31+
2932
if (achievementsState.GeneralAchievements.Count != 0)
3033
{
3134
sb.AppendLine("General achievements:");

src/FitSyncHub.Zwift/Services/ZwiftGameInfoService.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@ public async Task<Dictionary<ZwiftRouteModel, List<ZwiftEventResponse>>> GetUnco
8484
public async Task<MappedUncompletedAchievementsModel> GetAchievementsState(
8585
CancellationToken cancellationToken)
8686
{
87+
var profileMe = await _zwiftHttpClient.GetProfileMe(cancellationToken);
8788
var gameInfo = await _zwiftHttpClient.GetGameInfo(cancellationToken);
8889
var isRouteAchievementsLookup = gameInfo.Achievements
8990
.ToLookup(x => x.ImageUrl.EndsWith("RouteComplete.png"));
@@ -98,6 +99,7 @@ public async Task<MappedUncompletedAchievementsModel> GetAchievementsState(
9899

99100
return new MappedUncompletedAchievementsModel
100101
{
102+
AchievementLevel = profileMe.AchievementLevel / 100,
101103
CyclingRouteAchievementsToRouteMapping = GetRouteAchievementsToRouteMappingForSport(ZwiftGameInfoSport.Cycling),
102104
RunningRouteAchievementsToRouteMapping = GetRouteAchievementsToRouteMappingForSport(ZwiftGameInfoSport.Running),
103105
GeneralAchievements = [.. generalAchievements.Select(ConvertToZwiftGameInfoAchievementState)]
@@ -166,4 +168,5 @@ public sealed record MappedUncompletedAchievementsModel
166168
public required Dictionary<ZwiftGameInfoAchievementState, ZwiftRouteModel> CyclingRouteAchievementsToRouteMapping { get; init; }
167169
public required Dictionary<ZwiftGameInfoAchievementState, ZwiftRouteModel> RunningRouteAchievementsToRouteMapping { get; init; }
168170
public required List<ZwiftGameInfoAchievementState> GeneralAchievements { get; init; }
171+
public required uint AchievementLevel { get; init; }
169172
}

0 commit comments

Comments
 (0)