Added ApplicationConfigurationRequestOptions.

pull/13845/head
Halil İbrahim Kalkan 3 years ago
parent 01824061d3
commit 411ce81560

@ -15,8 +15,11 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ClientProxies;
[ExposeServices(typeof(IAbpApplicationConfigurationAppService), typeof(AbpApplicationConfigurationClientProxy))]
public partial class AbpApplicationConfigurationClientProxy : ClientProxyBase<IAbpApplicationConfigurationAppService>, IAbpApplicationConfigurationAppService
{
public virtual async Task<ApplicationConfigurationDto> GetAsync()
public virtual async Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options)
{
return await RequestAsync<ApplicationConfigurationDto>(nameof(GetAsync));
return await RequestAsync<ApplicationConfigurationDto>(nameof(GetAsync), new ClientProxyRequestTypeValue
{
{ typeof(ApplicationConfigurationRequestOptions), options }
});
}
}

@ -104,14 +104,36 @@
}
],
"actions": {
"GetAsync": {
"uniqueName": "GetAsync",
"GetAsyncByOptions": {
"uniqueName": "GetAsyncByOptions",
"name": "GetAsync",
"httpMethod": "GET",
"url": "api/abp/application-configuration",
"supportedVersions": [],
"parametersOnMethod": [],
"parameters": [],
"parametersOnMethod": [
{
"name": "options",
"typeAsString": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions, Volo.Abp.AspNetCore.Mvc.Contracts",
"type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions",
"typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationRequestOptions",
"isOptional": false,
"defaultValue": null
}
],
"parameters": [
{
"nameOnMethod": "options",
"name": "IncludeLocalizationResources",
"jsonName": null,
"type": "System.Boolean",
"typeSimple": "boolean",
"isOptional": false,
"defaultValue": null,
"constraintTypes": null,
"bindingSourceId": "ModelBinding",
"descriptorName": "options"
}
],
"returnValue": {
"type": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto",
"typeSimple": "Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations.ApplicationConfigurationDto"

@ -48,7 +48,11 @@ public class MvcCachedApplicationConfigurationClient : ICachedApplicationConfigu
configuration = await Cache.GetOrAddAsync(
cacheKey,
async () => await ApplicationConfigurationAppService.GetAsync(),
async () => await ApplicationConfigurationAppService.GetAsync(
new ApplicationConfigurationRequestOptions
{
IncludeLocalizationResources = false
}),
() => new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromSeconds(300) //TODO: Should be configurable.

@ -0,0 +1,6 @@
namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public class ApplicationConfigurationRequestOptions
{
public bool IncludeLocalizationResources { get; set; } = true;
}

@ -5,5 +5,5 @@ namespace Volo.Abp.AspNetCore.Mvc.ApplicationConfigurations;
public interface IAbpApplicationConfigurationAppService : IApplicationService
{
Task<ApplicationConfigurationDto> GetAsync();
Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options);
}

@ -43,7 +43,6 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
private readonly ITimezoneProvider _timezoneProvider;
private readonly AbpClockOptions _abpClockOptions;
private readonly ICachedObjectExtensionsDtoService _cachedObjectExtensionsDtoService;
private readonly AbpExternalLocalizationOptions _externalLocalizationOptions;
private readonly AbpApplicationConfigurationOptions _options;
public AbpApplicationConfigurationAppService(
@ -63,8 +62,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
ITimezoneProvider timezoneProvider,
IOptions<AbpClockOptions> abpClockOptions,
ICachedObjectExtensionsDtoService cachedObjectExtensionsDtoService,
IOptions<AbpApplicationConfigurationOptions> options,
IOptions<AbpExternalLocalizationOptions> distributedLocalizationOptions)
IOptions<AbpApplicationConfigurationOptions> options)
{
_serviceProvider = serviceProvider;
_abpAuthorizationPolicyProvider = abpAuthorizationPolicyProvider;
@ -80,13 +78,12 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
_timezoneProvider = timezoneProvider;
_abpClockOptions = abpClockOptions.Value;
_cachedObjectExtensionsDtoService = cachedObjectExtensionsDtoService;
_externalLocalizationOptions = distributedLocalizationOptions.Value;
_options = options.Value;
_localizationOptions = localizationOptions.Value;
_multiTenancyOptions = multiTenancyOptions.Value;
}
public virtual async Task<ApplicationConfigurationDto> GetAsync()
public virtual async Task<ApplicationConfigurationDto> GetAsync(ApplicationConfigurationRequestOptions options)
{
//TODO: Optimize & cache..?
@ -97,7 +94,7 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
Auth = await GetAuthConfigAsync(),
Features = await GetFeaturesConfigAsync(),
GlobalFeatures = await GetGlobalFeaturesConfigAsync(),
Localization = await GetLocalizationConfigAsync(),
Localization = await GetLocalizationConfigAsync(options),
CurrentUser = GetCurrentUser(),
Setting = await GetSettingConfigAsync(),
MultiTenancy = GetMultiTenancy(),
@ -209,36 +206,42 @@ public class AbpApplicationConfigurationAppService : ApplicationService, IAbpApp
return authConfig;
}
protected virtual async Task<ApplicationLocalizationConfigurationDto> GetLocalizationConfigAsync()
protected virtual async Task<ApplicationLocalizationConfigurationDto> GetLocalizationConfigAsync(
ApplicationConfigurationRequestOptions options)
{
var localizationConfig = new ApplicationLocalizationConfigurationDto();
localizationConfig.Languages.AddRange(await _languageProvider.GetLanguagesAsync());
var externalResourceNames = await LazyServiceProvider
.LazyGetRequiredService<IExternalLocalizationStore>()
.GetResourceNamesAsync();
var resourceNames = _localizationOptions
.Resources
.Values
.Select(x => x.ResourceName)
.Union(externalResourceNames);
foreach (var resourceName in resourceNames)
if (options.IncludeLocalizationResources)
{
var dictionary = new Dictionary<string, string>();
var localizer = await StringLocalizerFactory.CreateByResourceNameOrNullAsync(resourceName);
if (localizer != null)
var resourceNames = _localizationOptions
.Resources
.Values
.Select(x => x.ResourceName)
.Union(
await LazyServiceProvider
.LazyGetRequiredService<IExternalLocalizationStore>()
.GetResourceNamesAsync()
);
foreach (var resourceName in resourceNames)
{
foreach (var localizedString in await localizer.GetAllStringsAsync())
var dictionary = new Dictionary<string, string>();
var localizer = await StringLocalizerFactory
.CreateByResourceNameOrNullAsync(resourceName);
if (localizer != null)
{
dictionary[localizedString.Name] = localizedString.Value;
foreach (var localizedString in await localizer.GetAllStringsAsync())
{
dictionary[localizedString.Name] = localizedString.Value;
}
}
}
localizationConfig.Values[resourceName] = dictionary;
localizationConfig.Values[resourceName] = dictionary;
}
}
localizationConfig.CurrentCulture = GetCurrentCultureInfo();

@ -21,9 +21,10 @@ public class AbpApplicationConfigurationController : AbpControllerBase, IAbpAppl
}
[HttpGet]
public virtual async Task<ApplicationConfigurationDto> GetAsync()
public virtual async Task<ApplicationConfigurationDto> GetAsync(
ApplicationConfigurationRequestOptions options)
{
_antiForgeryManager.SetCookie();
return await _applicationConfigurationAppService.GetAsync();
return await _applicationConfigurationAppService.GetAsync(options);
}
}

@ -41,7 +41,11 @@ public class AbpApplicationConfigurationScriptController : AbpController
[Produces(MimeTypes.Application.Javascript, MimeTypes.Text.Plain)]
public async Task<ActionResult> Get()
{
var script = CreateAbpExtendScript(await _configurationAppService.GetAsync());
var script = CreateAbpExtendScript(await _configurationAppService.GetAsync(
new ApplicationConfigurationRequestOptions {
IncludeLocalizationResources = false
}
));
_antiForgeryManager.SetCookie();

@ -118,7 +118,10 @@ public class AbpDictionaryBasedStringLocalizer : IAbpStringLocalizer
return value;
}
protected virtual LocalizedString GetLocalizedStringOrNull(string name, string cultureName, bool tryDefaults = true)
protected virtual LocalizedString GetLocalizedStringOrNull(
string name,
string cultureName,
bool tryDefaults = true)
{
//Try to get from original dictionary (with country code)
var strOriginal = Resource.Contributors.GetOrNull(cultureName, name);

@ -12,7 +12,7 @@ public class ApplicationConfigurationBuilder_Tests : AspNetCoreMvcTestBase
{
var applicationConfigurationBuilder = GetRequiredService<IAbpApplicationConfigurationAppService>();
var config = await applicationConfigurationBuilder.GetAsync();
var config = await applicationConfigurationBuilder.GetAsync(new ApplicationConfigurationRequestOptions());
config.Auth.ShouldNotBeNull();
config.Localization.ShouldNotBeNull();

Loading…
Cancel
Save