Browse Source

Add support for browser timezone retrieval in MauiBlazorCachedApplicationConfigurationClient

pull/22236/head
maliming 1 year ago
parent
commit
38f2eaa2eb
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 24
      framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/MauiBlazorCachedApplicationConfigurationClient.cs

24
framework/src/Volo.Abp.AspNetCore.Components.MauiBlazor/Volo/Abp/AspNetCore/Components/MauiBlazor/MauiBlazorCachedApplicationConfigurationClient.cs

@ -1,5 +1,7 @@
using System.Threading.Tasks; using System;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.JSInterop;
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies; using Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies;
using Volo.Abp.AspNetCore.Mvc.Client; using Volo.Abp.AspNetCore.Mvc.Client;
@ -21,19 +23,27 @@ namespace Volo.Abp.AspNetCore.Components.MauiBlazor
protected ICurrentTimezoneProvider CurrentTimezoneProvider { get; } protected ICurrentTimezoneProvider CurrentTimezoneProvider { get; }
protected IJSRuntime JSRuntime { get; }
protected IClock Clock { get; }
public MauiBlazorCachedApplicationConfigurationClient( public MauiBlazorCachedApplicationConfigurationClient(
AbpApplicationConfigurationClientProxy applicationConfigurationClientProxy, AbpApplicationConfigurationClientProxy applicationConfigurationClientProxy,
ApplicationConfigurationCache cache, ApplicationConfigurationCache cache,
ICurrentTenantAccessor currentTenantAccessor, ICurrentTenantAccessor currentTenantAccessor,
ICurrentTimezoneProvider currentTimezoneProvider, ICurrentTimezoneProvider currentTimezoneProvider,
AuthenticationStateProvider authenticationStateProvider, AuthenticationStateProvider authenticationStateProvider,
AbpApplicationLocalizationClientProxy applicationLocalizationClientProxy) AbpApplicationLocalizationClientProxy applicationLocalizationClientProxy,
IJSRuntime jsRuntime,
IClock clock)
{ {
ApplicationConfigurationClientProxy = applicationConfigurationClientProxy; ApplicationConfigurationClientProxy = applicationConfigurationClientProxy;
Cache = cache; Cache = cache;
CurrentTenantAccessor = currentTenantAccessor; CurrentTenantAccessor = currentTenantAccessor;
CurrentTimezoneProvider = currentTimezoneProvider; CurrentTimezoneProvider = currentTimezoneProvider;
ApplicationLocalizationClientProxy = applicationLocalizationClientProxy; ApplicationLocalizationClientProxy = applicationLocalizationClientProxy;
JSRuntime = jsRuntime;
Clock = clock;
authenticationStateProvider.AuthenticationStateChanged += async _ => { await InitializeAsync(); }; authenticationStateProvider.AuthenticationStateChanged += async _ => { await InitializeAsync(); };
} }
@ -56,13 +66,21 @@ namespace Volo.Abp.AspNetCore.Components.MauiBlazor
); );
configurationDto.Localization.Resources = localizationDto.Resources; configurationDto.Localization.Resources = localizationDto.Resources;
CurrentTimezoneProvider.TimeZone = configurationDto.Timing.TimeZone.Iana.TimeZoneName;
Cache.Set(configurationDto); Cache.Set(configurationDto);
CurrentTenantAccessor.Current = new BasicTenantInfo( CurrentTenantAccessor.Current = new BasicTenantInfo(
configurationDto.CurrentTenant.Id, configurationDto.CurrentTenant.Id,
configurationDto.CurrentTenant.Name); configurationDto.CurrentTenant.Name);
if (Clock.SupportsMultipleTimezone)
{
CurrentTimezoneProvider.TimeZone = !configurationDto.Timing.TimeZone.Iana.TimeZoneName.IsNullOrWhiteSpace()
? configurationDto.Timing.TimeZone.Iana.TimeZoneName
: await JSRuntime.InvokeAsync<string>("abp.clock.getBrowserTimeZone");
await JSRuntime.InvokeAsync<string>("abp.clock.setBrowserTimeZoneToCookie");
}
} }
public virtual Task<ApplicationConfigurationDto> GetAsync() public virtual Task<ApplicationConfigurationDto> GetAsync()

Loading…
Cancel
Save