From 721eee27c7d2a4d437f12972e5c8a11e90931a95 Mon Sep 17 00:00:00 2001 From: Bjarke Berg Date: Wed, 11 Dec 2024 15:50:00 +0100 Subject: [PATCH] Handle empty string in published status service --- .../PublishStatus/PublishStatusService.cs | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Services/PublishStatus/PublishStatusService.cs b/src/Umbraco.Core/Services/PublishStatus/PublishStatusService.cs index 17694873c5..872b954ce0 100644 --- a/src/Umbraco.Core/Services/PublishStatus/PublishStatusService.cs +++ b/src/Umbraco.Core/Services/PublishStatus/PublishStatusService.cs @@ -1,5 +1,7 @@ using System.Collections.Concurrent; +using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Umbraco.Cms.Core.DependencyInjection; using Umbraco.Cms.Core.Persistence.Repositories; using Umbraco.Cms.Core.Scoping; @@ -10,15 +12,31 @@ public class PublishStatusService : IPublishStatusManagementService, IPublishSta private readonly ILogger _logger; private readonly IPublishStatusRepository _publishStatusRepository; private readonly ICoreScopeProvider _coreScopeProvider; + private readonly ILanguageService _languageService; private readonly IDictionary> _publishedCultures = new Dictionary>(); + + private string? DefaultCulture { get; set; } + + [Obsolete("Use non-obsolete constructor. This will be removed in Umbraco 17.")] public PublishStatusService( ILogger logger, IPublishStatusRepository publishStatusRepository, ICoreScopeProvider coreScopeProvider) + : this(logger, publishStatusRepository, coreScopeProvider, StaticServiceProvider.Instance.GetRequiredService()) + { + + } + + public PublishStatusService( + ILogger logger, + IPublishStatusRepository publishStatusRepository, + ICoreScopeProvider coreScopeProvider, + ILanguageService languageService) { _logger = logger; _publishStatusRepository = publishStatusRepository; _coreScopeProvider = coreScopeProvider; + _languageService = languageService; } public async Task InitializeAsync(CancellationToken cancellationToken) @@ -39,11 +57,16 @@ public class PublishStatusService : IPublishStatusManagementService, IPublishSta } } - + DefaultCulture = await _languageService.GetDefaultIsoCodeAsync(); } public bool IsDocumentPublished(Guid documentKey, string culture) { + if (string.IsNullOrEmpty(culture) && DefaultCulture is not null) + { + culture = DefaultCulture; + } + if (_publishedCultures.TryGetValue(documentKey, out ISet? publishedCultures)) { return publishedCultures.Contains(culture, StringComparer.InvariantCultureIgnoreCase);