LANCommander/LANCommander.UI/Components/LocalTime/LocalTimeInitializer.razor

32 lines
1 KiB
Text
Raw Normal View History

2026-01-03 15:51:47 -06:00
@using LANCommander.UI.Extensions
2025-03-17 02:02:17 -05:00
@using LANCommander.UI.Providers
@using Microsoft.JSInterop
@inject TimeProvider TimeProvider
@inject ScriptProvider ScriptProvider
2025-03-17 02:02:17 -05:00
@inject IJSRuntime JS
2025-09-06 13:09:47 -05:00
@namespace LANCommander.UI.Components
2025-03-17 02:02:17 -05:00
@code {
2026-01-03 15:51:47 -06:00
IJSObjectReference? _timeProvider;
2025-03-17 02:02:17 -05:00
protected override async Task OnAfterRenderAsync(bool firstRender)
{
if (firstRender && TimeProvider is LocalTimeProvider localTimeProvider && !localTimeProvider.IsLocalTimeZoneSet)
2025-03-17 02:02:17 -05:00
{
try
{
_timeProvider ??= await ScriptProvider.ImportModuleAsync("TimeProvider");
2026-01-03 15:51:47 -06:00
var timeZone = await _timeProvider.InvokeAsync<string>("GetLocalTimeZone");
2025-03-17 02:02:17 -05:00
localTimeProvider.SetLocalTimeZone(timeZone);
}
catch
2025-03-17 02:02:17 -05:00
{
var timeZone = await JS.InvokeAsync<string>("eval", "Intl.DateTimeFormat().resolvedOptions().timeZone");
localTimeProvider.SetLocalTimeZone(timeZone);
2025-03-17 02:02:17 -05:00
}
}
}
}