TourIAm/TIAMSharedUI/Pages/Components/SettingsBasic.razor.cs

108 lines
3.3 KiB
C#

using AyCode.Blazor.Components;
using AyCode.Interfaces.StorageHandlers;
using DevExpress.XtraPrinting.Native;
using Microsoft.AspNetCore.Components;
using Microsoft.EntityFrameworkCore.Metadata.Conventions;
using Microsoft.Extensions.Localization;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using TIAMSharedUI.Resources;
using TIAMWebApp.Shared.Application.Interfaces;
using TIAMWebApp.Shared.Application.Models;
using TIAMWebApp.Shared.Application.Models.ClientSide;
using TIAMWebApp.Shared.Application.Utility;
namespace TIAMSharedUI.Pages.Components
{
public partial class SettingsBasic : ComponentBase
{
[Inject]
public ISecureStorageHandler? secureStorageHandler { get; set; }
[Inject]
public IStringLocalizer<MyResources>? localizer { get; set; }
[Inject]
public NavigationManager navigationManager { get; set; }
[Inject]
public LogToBrowserConsole logToBrowserConsole { get; set; }
[Inject]
public IComponentUpdateService componentUpdateService { get; set; }
public CultureInfo SelectedCulture { get; set; }
IEnumerable<CultureInfo> Data { get; set; }
[Parameter]
public EventCallback<string> LanguageChanged { get; set; }
private Task<string>? GetCurrentSettings()
{
return secureStorageHandler?.GetFromSecureStorageAsync("Locale");
}
private void SaveSettings()
{
secureStorageHandler?.SaveToSecureStorageAsync(nameof(Setting.Locale), SelectedCulture.Name);
componentUpdateService.CallRequestRefresh();
}
protected override async Task OnInitializedAsync()
{
Data = culture.ToList();
string? current = await GetCurrentSettings();
if (!string.IsNullOrEmpty(current))
{
logToBrowserConsole.LogToBC(current);
//SelectedCulture = culture.FirstOrDefault(x => x.Name == Setting.Locale);
foreach (var item in culture)
{
logToBrowserConsole.LogToBC(item.Name);
if (item.Name == current)
{
SelectedCulture = item;
break;
}
}
logToBrowserConsole.LogToBC("Selected: " + SelectedCulture.Name);
}
else
{
SelectedCulture = culture[0];
}
}
CultureInfo[] culture = new[]
{
new CultureInfo("en-US"),
new CultureInfo("hu-HU")
};
CultureInfo Culture
{
get => CultureInfo.CurrentCulture;
set
{
if (CultureInfo.CurrentCulture != value)
{
Thread.CurrentThread.CurrentCulture = value;
Thread.CurrentThread.CurrentUICulture = value;
CultureInfo.DefaultThreadCurrentCulture = value;
CultureInfo.DefaultThreadCurrentUICulture = value;
SelectedCulture = value;
SaveSettings();
}
}
}
}
}