News Dashboard: Adding functionality to overwrite the cache duration (#21064)
* Adding functionality to overwrite the cacheduration for NewsDashboard * Making the extension its own class, as to avoid having to inherit the entire service. * Changing options to duration and adding interface
This commit is contained in:
@@ -8,8 +8,10 @@ internal static class NewsDashboardBuilderExtensions
|
||||
{
|
||||
internal static IUmbracoBuilder AddNewsDashboard(this IUmbracoBuilder builder)
|
||||
{
|
||||
builder.Services.AddSingleton<INewsCacheDurationProvider, NewsCacheDurationProvider>();
|
||||
builder.Services.AddSingleton<INewsDashboardService, NewsDashboardService>();
|
||||
|
||||
return builder;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
namespace Umbraco.Cms.Api.Management.Services.NewsDashboard;
|
||||
|
||||
/// <summary>
|
||||
/// Cache duration provider for the news dashboard service.
|
||||
/// </summary>
|
||||
public interface INewsCacheDurationProvider
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets the cache duration for news dashboard items.
|
||||
/// </summary>
|
||||
TimeSpan CacheDuration { get; }
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
namespace Umbraco.Cms.Api.Management.Services.NewsDashboard;
|
||||
|
||||
public class NewsCacheDurationProvider : INewsCacheDurationProvider
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public TimeSpan CacheDuration => TimeSpan.FromMinutes(30);
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
using System.Diagnostics.CodeAnalysis;
|
||||
using System.Text.Json;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Logging;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Umbraco.Cms.Api.Management.ViewModels.NewsDashboard;
|
||||
using Umbraco.Cms.Core.Cache;
|
||||
using Umbraco.Cms.Core.Configuration;
|
||||
using Umbraco.Cms.Core.Configuration.Models;
|
||||
using Umbraco.Cms.Core.DependencyInjection;
|
||||
using Umbraco.Cms.Core.Security;
|
||||
using Umbraco.Cms.Core.Telemetry;
|
||||
using Umbraco.Extensions;
|
||||
@@ -21,6 +23,7 @@ public class NewsDashboardService : INewsDashboardService
|
||||
private readonly ILogger<NewsDashboardService> _logger;
|
||||
private readonly IBackOfficeSecurityAccessor _backOfficeSecurityAccessor;
|
||||
private readonly GlobalSettings _globalSettings;
|
||||
private readonly INewsCacheDurationProvider _newsCacheDurationProvider;
|
||||
|
||||
private static readonly HttpClient _httpClient = new();
|
||||
|
||||
@@ -33,7 +36,8 @@ public class NewsDashboardService : INewsDashboardService
|
||||
ISiteIdentifierService siteIdentifierService,
|
||||
ILogger<NewsDashboardService> logger,
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IOptions<GlobalSettings> globalSettings)
|
||||
IOptions<GlobalSettings> globalSettings,
|
||||
INewsCacheDurationProvider newsCacheDurationProvider)
|
||||
{
|
||||
_appCaches = appCaches;
|
||||
_umbracoVersion = umbracoVersion;
|
||||
@@ -41,6 +45,26 @@ public class NewsDashboardService : INewsDashboardService
|
||||
_logger = logger;
|
||||
_backOfficeSecurityAccessor = backOfficeSecurityAccessor;
|
||||
_globalSettings = globalSettings.Value;
|
||||
_newsCacheDurationProvider = newsCacheDurationProvider;
|
||||
}
|
||||
|
||||
[Obsolete("Please use the constructor taking all parameters. Scheduled for removal in Umbraco 19")]
|
||||
public NewsDashboardService(
|
||||
AppCaches appCaches,
|
||||
IUmbracoVersion umbracoVersion,
|
||||
ISiteIdentifierService siteIdentifierService,
|
||||
ILogger<NewsDashboardService> logger,
|
||||
IBackOfficeSecurityAccessor backOfficeSecurityAccessor,
|
||||
IOptions<GlobalSettings> globalSettings)
|
||||
: this(
|
||||
appCaches,
|
||||
umbracoVersion,
|
||||
siteIdentifierService,
|
||||
logger,
|
||||
backOfficeSecurityAccessor,
|
||||
globalSettings,
|
||||
StaticServiceProvider.Instance.GetRequiredService<INewsCacheDurationProvider>())
|
||||
{
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
@@ -69,7 +93,7 @@ public class NewsDashboardService : INewsDashboardService
|
||||
|
||||
if (TryMapModel(json, out NewsDashboardResponseModel? model))
|
||||
{
|
||||
_appCaches.RuntimeCache.InsertCacheItem(CacheKey, () => model, new TimeSpan(0, 30, 0));
|
||||
_appCaches.RuntimeCache.InsertCacheItem(CacheKey, () => model, _newsCacheDurationProvider.CacheDuration);
|
||||
content = model;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user