From 14aae034af9e34436053ecf8d6fbedb2187d29c0 Mon Sep 17 00:00:00 2001 From: Mikhail Shabanov Date: Fri, 28 May 2021 15:27:36 +0200 Subject: [PATCH] chore: infrastructure code --- .../Helpers/Formatter.cs | 12 +++++++++ .../Pages/PlayerInfoLayout.razor | 8 ++++++ .../Pages/PlayerInfoLayoutBase.cs | 25 ++++++++++++++++++- WotBlitzStatisticsPro.Blazor/Program.cs | 4 +-- .../Services/GraphQlBackendMockService.cs | 5 ++++ .../Services/GraphQlBackendService.cs | 8 ++++++ .../Services/IGraphQlBackendService.cs | 4 +++ 7 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 WotBlitzStatisticsPro.Blazor/Helpers/Formatter.cs diff --git a/WotBlitzStatisticsPro.Blazor/Helpers/Formatter.cs b/WotBlitzStatisticsPro.Blazor/Helpers/Formatter.cs new file mode 100644 index 0000000..4189839 --- /dev/null +++ b/WotBlitzStatisticsPro.Blazor/Helpers/Formatter.cs @@ -0,0 +1,12 @@ +using System.Text.Json; + +namespace WotBlitzStatisticsPro.Blazor.Helpers +{ + public static class Formatter + { + public static string Json(this T data) + { + return JsonSerializer.Serialize(data, new JsonSerializerOptions { WriteIndented = true }); + } + } +} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor index d2c92af..85d0344 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayout.razor @@ -1,5 +1,13 @@ @page "/player/{AccountId:long}" +@using WotBlitzStatisticsPro.Blazor.Helpers @inherits PlayerInfoLayoutBase

PlayerInfoLayout

AccountId: @AccountId +@if (AccountInfo != null) +{ +

+ Player: + @AccountInfo.Json() +

+} \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs index 68ff54d..f14bdca 100644 --- a/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs +++ b/WotBlitzStatisticsPro.Blazor/Pages/PlayerInfoLayoutBase.cs @@ -1,11 +1,34 @@ -using Microsoft.AspNetCore.Components; +using System.Threading.Tasks; +using Microsoft.AspNetCore.Components; +using WotBlitzStatisticsPro.Blazor.GraphQl; +using WotBlitzStatisticsPro.Blazor.Services; namespace WotBlitzStatisticsPro.Blazor.Pages { public class PlayerInfoLayoutBase: ComponentBase { + [Inject] + public IGraphQlBackendService GraphQlBackendService { get; set; } + + [Inject] + public ILocalStorageService LocalStorageService { get; set; } + [Parameter] public long AccountId { get; set; } + public RealmType CurrentRealmType { get; set; } = RealmType.Eu; + + public IPlayer_AccountInfo AccountInfo { get; set; } + + protected override async Task OnInitializedAsync() + { + var settings = await LocalStorageService.ReadSettings(); + CurrentRealmType = settings.RealmType; + + AccountInfo = await GraphQlBackendService.GetPlayerInfo(AccountId, CurrentRealmType); + + await base.OnInitializedAsync(); + + } } } \ No newline at end of file diff --git a/WotBlitzStatisticsPro.Blazor/Program.cs b/WotBlitzStatisticsPro.Blazor/Program.cs index b3a0860..5d79e97 100644 --- a/WotBlitzStatisticsPro.Blazor/Program.cs +++ b/WotBlitzStatisticsPro.Blazor/Program.cs @@ -42,11 +42,11 @@ namespace WotBlitzStatisticsPro.Blazor //var useMock = Environment.GetEnvironmentVariable("USE_GRAPH_QL_MOCK"); //if (useMock != null && useMock == "true") //{ - builder.Services.AddTransient(); + //builder.Services.AddTransient(); //} //else //{ - //builder.Services.AddTransient(); + builder.Services.AddTransient(); //} var host = builder.Build(); diff --git a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendMockService.cs b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendMockService.cs index 65822bd..474f2ad 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendMockService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendMockService.cs @@ -74,6 +74,11 @@ namespace WotBlitzStatisticsPro.Blazor.Services return result; } + public Task GetPlayerInfo(long accountId, RealmType realmType) + { + throw new NotImplementedException(); + } + private string FakerLanguage(RequestLanguage language) { switch (language) diff --git a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs index caf8469..f677d8c 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/GraphQlBackendService.cs @@ -38,6 +38,14 @@ namespace WotBlitzStatisticsPro.Blazor.Services return clans.Data?.Clans; } + public async Task GetPlayerInfo(long accountId, RealmType realmType) + { + var playerInfo = await _client.Player.ExecuteAsync(accountId, realmType, GetLanguage()); + CheckErrors(playerInfo.Errors); + + return playerInfo.Data?.AccountInfo; + } + private RequestLanguage GetLanguage() { var culture = CultureInfo.CurrentCulture; diff --git a/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs b/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs index 01b8513..4f555fb 100644 --- a/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs +++ b/WotBlitzStatisticsPro.Blazor/Services/IGraphQlBackendService.cs @@ -13,5 +13,9 @@ namespace WotBlitzStatisticsPro.Blazor.Services Task?> FindClans( string clanNameOrTag, RealmType realmType); + + Task GetPlayerInfo( + long accountId, + RealmType realmType); } } \ No newline at end of file