feat: selected realm stored in browser's local storage

This commit is contained in:
Mikhail Shabanov committed 2021-05-19 15:04:55 +02:00
1 parent 4fb56c3b16
commit 46ed757dcb
10 files changed
+79 -5

No files matched your search

@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using WotBlitzStatisticsPro.Blazor.Model;
namespace WotBlitzStatisticsPro.Blazor.Services
{
@@ -7,5 +8,7 @@ namespace WotBlitzStatisticsPro.Blazor.Services
Task SetItemAsync<T>(string key, T item);
Task<T> GetItemAsync<T>(string key);
Task<UserSettings> ReadSettings();
}
}
@@ -9,7 +9,7 @@ using WotBlitzStatisticsPro.Blazor.Model;
namespace WotBlitzStatisticsPro.Blazor.Services
{
public class LocalStorageService: ILocalStorageService, INotificationHandler<ChangeCurrentCultureMessage>
public class LocalStorageService: ILocalStorageService, INotificationHandler<ChangeCurrentCultureMessage>, INotificationHandler<ChangeCurrentRealmTypeMessage>
{
private readonly IJSRuntime _jsRuntime;
private readonly NavigationManager _navigationManager;
@@ -36,12 +36,24 @@ namespace WotBlitzStatisticsPro.Blazor.Services
: JsonSerializer.Deserialize<T>(json);
}
public async Task<UserSettings> ReadSettings()
{
return await GetItemAsync<UserSettings>(UserSettings.UserSettingsLocalStorageKey) ?? new UserSettings();
}
public async Task Handle(ChangeCurrentCultureMessage notification, CancellationToken cancellationToken)
{
var currentSettings = await GetItemAsync<UserSettings>(UserSettings.UserSettingsLocalStorageKey) ?? new UserSettings();
var currentSettings = await ReadSettings();
currentSettings.Culture = notification.CultureName;
await SetItemAsync(UserSettings.UserSettingsLocalStorageKey, currentSettings);
_navigationManager.NavigateTo(_navigationManager.Uri, forceLoad: true);
}
public async Task Handle(ChangeCurrentRealmTypeMessage notification, CancellationToken cancellationToken)
{
var currentSettings = await ReadSettings();
currentSettings.RealmType = notification.RealmType;
await SetItemAsync(UserSettings.UserSettingsLocalStorageKey, currentSettings);
}
}
}