You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
28 lines
1.1 KiB
28 lines
1.1 KiB
using Lion.AbpPro.LanguageManagement.Languages;
|
|
|
|
namespace Lion.AbpPro.LanguageManagement;
|
|
|
|
[Dependency(ReplaceServices = true)]
|
|
public class DatabaseLanguageProvider : ILanguageProvider, ITransientDependency
|
|
{
|
|
private readonly ILanguageManager _languageManager;
|
|
private readonly IDistributedCache<LanguageListCacheItem> _distributedCache;
|
|
private readonly IObjectMapper _objectMapper;
|
|
|
|
public DatabaseLanguageProvider(ILanguageManager languageManager, IDistributedCache<LanguageListCacheItem> distributedCache, IObjectMapper objectMapper)
|
|
{
|
|
_languageManager = languageManager;
|
|
_distributedCache = distributedCache;
|
|
_objectMapper = objectMapper;
|
|
}
|
|
|
|
public virtual async Task<IReadOnlyList<LanguageInfo>> GetLanguagesAsync()
|
|
{
|
|
var result = await _distributedCache.GetOrAddAsync(LanguageListCacheItem.CalculateCacheKey(), async () =>
|
|
{
|
|
var languages = await _languageManager.ListAsync(true);
|
|
return new LanguageListCacheItem(_objectMapper.Map<List<Language>, List<LanguageInfo>>(languages));
|
|
});
|
|
return result.Languages;
|
|
}
|
|
}
|