diff --git a/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs b/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs deleted file mode 100644 index f353281ddd..0000000000 --- a/src/Umbraco.Core/Configuration/Models/PackageManifestSettings.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace Umbraco.Cms.Core.Configuration.Models; - -/// -/// Typed configuration options for package manifest settings. -/// -[UmbracoOptions(Constants.Configuration.ConfigPackageManifests)] -public class PackageManifestSettings -{ - public TimeSpan CacheTimeout { get; set; } = TimeSpan.FromMinutes(10); -} diff --git a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs index f11aa5d982..6832bbe789 100644 --- a/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs +++ b/src/Umbraco.Core/DependencyInjection/UmbracoBuilder.Configuration.cs @@ -85,7 +85,6 @@ public static partial class UmbracoBuilderExtensions .AddUmbracoOptions() .AddUmbracoOptions() .AddUmbracoOptions() - .AddUmbracoOptions() .AddUmbracoOptions(); // Configure connection string and ensure it's updated when the configuration changes diff --git a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs index e161a7171a..fbf00b7fa3 100644 --- a/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs +++ b/src/Umbraco.Infrastructure/Manifest/PackageManifestService.cs @@ -10,16 +10,18 @@ internal sealed class PackageManifestService : IPackageManifestService { private readonly IEnumerable _packageManifestReaders; private readonly IAppPolicyCache _cache; - private readonly PackageManifestSettings _packageManifestSettings; + private RuntimeSettings _runtimeSettings; + public PackageManifestService( IEnumerable packageManifestReaders, AppCaches appCaches, - IOptions packageManifestSettings) + IOptionsMonitor runtimeSettingsOptionsMonitor) { _packageManifestReaders = packageManifestReaders; - _packageManifestSettings = packageManifestSettings.Value; _cache = appCaches.RuntimeCache; + _runtimeSettings = runtimeSettingsOptionsMonitor.CurrentValue; + runtimeSettingsOptionsMonitor.OnChange(runtimeSettings => _runtimeSettings = runtimeSettings); } public async Task> GetAllPackageManifestsAsync() @@ -34,7 +36,9 @@ internal sealed class PackageManifestService : IPackageManifestService return tasks.SelectMany(x => x.Result); }, - _packageManifestSettings.CacheTimeout) + _runtimeSettings.Mode == RuntimeMode.Production + ? TimeSpan.FromDays(30) + : TimeSpan.FromSeconds(10)) ?? Array.Empty(); public async Task> GetPublicPackageManifestsAsync() diff --git a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs index 2c30dc6214..9bba7839e8 100644 --- a/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs +++ b/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Manifest/PackageManifestServiceTests.cs @@ -1,10 +1,10 @@ -using Microsoft.Extensions.Options; -using Moq; +using Moq; using NUnit.Framework; using Umbraco.Cms.Core.Cache; using Umbraco.Cms.Core.Configuration.Models; using Umbraco.Cms.Core.Manifest; using Umbraco.Cms.Infrastructure.Manifest; +using Umbraco.Cms.Tests.Common; namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Manifest; @@ -32,7 +32,10 @@ public class PackageManifestServiceTests NoAppCache.Instance, new IsolatedCaches(type => NoAppCache.Instance)); - _service = new PackageManifestService(new[] { _readerMock.Object }, appCaches, new OptionsWrapper(new PackageManifestSettings())); + _service = new PackageManifestService( + new[] { _readerMock.Object }, + appCaches, + new TestOptionsMonitor(new RuntimeSettings { Mode = RuntimeMode.Production })); } [Test]