feat: localization added

This commit is contained in:
Mikhail Shabanov committed 2021-04-07 12:32:17 +02:00
1 parent 2fba32b5b4
commit c035f78340
15 files changed
+542 -19

No files matched your search

@@ -0,0 +1,11 @@
using System.Threading.Tasks;
namespace WotBlitzStatisticsPro.Blazor.Services
{
public interface ILocalStorageService
{
Task SetItemAsync<T>(string key, T item);
Task<T> GetItemAsync<T>(string key);
}
}
@@ -0,0 +1,47 @@
using System.Text.Json;
using System.Threading;
using System.Threading.Tasks;
using MediatR;
using Microsoft.AspNetCore.Components;
using Microsoft.JSInterop;
using WotBlitzStatisticsPro.Blazor.Messages;
using WotBlitzStatisticsPro.Blazor.Model;
namespace WotBlitzStatisticsPro.Blazor.Services
{
public class LocalStorageService: ILocalStorageService, INotificationHandler<ChangeCurrentCultureMessage>
{
private readonly IJSRuntime _jsRuntime;
private readonly NavigationManager _navigationManager;
public LocalStorageService(
IJSRuntime jsRuntime,
NavigationManager navigationManager)
{
_jsRuntime = jsRuntime;
_navigationManager = navigationManager;
}
public async Task SetItemAsync<T>(string key, T item)
{
await _jsRuntime.InvokeVoidAsync("localStorage.setItem",
key, JsonSerializer.Serialize(item));
}
public async Task<T> GetItemAsync<T>(string key)
{
var json = await _jsRuntime.InvokeAsync<string>("localStorage.getItem", key);
return string.IsNullOrEmpty(json)
? default
: JsonSerializer.Deserialize<T>(json);
}
public async Task Handle(ChangeCurrentCultureMessage notification, CancellationToken cancellationToken)
{
var currentSettings = await GetItemAsync<UserSettings>(UserSettings.UserSettingsLocalStorageKey) ?? new UserSettings();
currentSettings.Culture = notification.CultureName;
await SetItemAsync(UserSettings.UserSettingsLocalStorageKey, currentSettings);
_navigationManager.NavigateTo(_navigationManager.Uri, forceLoad: true);
}
}
}