@using TaikoWebUI.Services @using SharedProject.Models.Responses @using SharedProject.Models @using SharedProject.Models.Requests @inject IGameDataService GameDataService @inject HttpClient Client @page "/PlayResults/{baid:int}"

PlayResults for baid : @Baid

@if (response is null) { No data } else { @* Notice here we have to use cell template for custom conversion *@ @* Field is retrieved using reflection, so it is a string with name equals field name*@ @GameDataService.GetMusicNameBySongId(context.Item.SongId) @GameDataService.GetMusicArtistBySongId(context.Item.SongId) } @code { [Parameter] public int Baid { get; set; } private SongBestResponse? response; protected override async Task OnInitializedAsync() { await base.OnInitializedAsync(); response = await Client.GetFromJsonAsync($"api/PlayData/{Baid}"); } private async Task OnFavoriteToggled(SongBestData data) { var request = new SetFavoriteRequest { Baid = (uint)Baid, IsFavorite = !data.IsFavorite, SongId = data.SongId }; var result = await Client.PostAsJsonAsync("api/FavoriteSongs", request); if (result.IsSuccessStatusCode) { data.IsFavorite = !data.IsFavorite; } } }