Browse Source

refactor: make GetRemoteConfigurationAsync and Get methods virtual for extensibility

pull/24838/head
maliming 8 months ago
parent
commit
9133ce97e2
No known key found for this signature in database GPG Key ID: A646B9CB645ECEA4
  1. 24
      framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs

24
framework/src/Volo.Abp.AspNetCore.Mvc.Client/Volo/Abp/AspNetCore/Mvc/Client/MvcCachedApplicationConfigurationClient.cs

@ -84,7 +84,7 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
return configuration; return configuration;
} }
private async Task<ApplicationConfigurationDto> GetRemoteConfigurationAsync() protected virtual async Task<ApplicationConfigurationDto> GetRemoteConfigurationAsync()
{ {
var cultureName = CultureInfo.CurrentUICulture.Name; var cultureName = CultureInfo.CurrentUICulture.Name;
@ -103,23 +103,13 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
} }
); );
var config = await configTask; await Task.WhenAll(configTask, localizationTask);
ApplicationLocalizationDto localizationDto; var config = configTask.Result;
// In most cases, the culture matches and we can reuse the concurrent request. var localizationDto = localizationTask.Result;
// If not, we discard it and make a new request with the correct culture.
if (CultureHelper.IsCompatibleCulture(config.Localization.CurrentCulture.Name, cultureName))
{
localizationDto = await localizationTask;
}
else
{
// Observe the discarded task to prevent UnobservedTaskException.
_ = localizationTask.ContinueWith(
static t => _ = t.Exception,
TaskContinuationOptions.OnlyOnFaulted
);
if (!CultureHelper.IsCompatibleCulture(config.Localization.CurrentCulture.Name, cultureName))
{
localizationDto = await ApplicationLocalizationClientProxy.GetAsync( localizationDto = await ApplicationLocalizationClientProxy.GetAsync(
new ApplicationLocalizationRequestDto new ApplicationLocalizationRequestDto
{ {
@ -134,7 +124,7 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
return config; return config;
} }
public ApplicationConfigurationDto Get() public virtual ApplicationConfigurationDto Get()
{ {
string? cacheKey = null; string? cacheKey = null;
var httpContext = HttpContextAccessor?.HttpContext; var httpContext = HttpContextAccessor?.HttpContext;

Loading…
Cancel
Save