mirror of
https://github.com/DrMboga/WotBlitzStatisticsBlazor.git
synced 2026-10-23 19:30:06 +02:00
feat: localization added
This commit is contained in:
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user