Skip to content

Commit 147bdf2

Browse files
authored
Use variant context for determining requested culture (#18176)
1 parent d4cfe4d commit 147bdf2

File tree

9 files changed

+114
-69
lines changed

9 files changed

+114
-69
lines changed

src/Umbraco.Cms.Api.Delivery/Querying/QueryOptionBase.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using Umbraco.Cms.Core.DeliveryApi;
33
using Umbraco.Cms.Core.DependencyInjection;
4+
using Umbraco.Cms.Core.Models.PublishedContent;
45
using Umbraco.Cms.Core.PublishedCache;
56
using Umbraco.Extensions;
67

@@ -10,8 +11,8 @@ public abstract class QueryOptionBase
1011
{
1112
private readonly IRequestRoutingService _requestRoutingService;
1213
private readonly IRequestPreviewService _requestPreviewService;
13-
private readonly IRequestCultureService _requestCultureService;
1414
private readonly IApiDocumentUrlService _apiDocumentUrlService;
15+
private readonly IVariationContextAccessor _variationContextAccessor;
1516

1617
[Obsolete("Please use the non-obsolete constructor. Will be removed in V17.")]
1718
public QueryOptionBase(
@@ -20,8 +21,8 @@ public QueryOptionBase(
2021
: this(
2122
requestRoutingService,
2223
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
23-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
24-
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>())
24+
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
25+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>())
2526
{
2627
}
2728

@@ -31,21 +32,22 @@ public QueryOptionBase(
3132
IRequestRoutingService requestRoutingService,
3233
IRequestPreviewService requestPreviewService,
3334
IRequestCultureService requestCultureService,
34-
IApiDocumentUrlService apiDocumentUrlService)
35-
: this(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
35+
IApiDocumentUrlService apiDocumentUrlService,
36+
IVariationContextAccessor variationContextAccessor)
37+
: this(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
3638
{
3739
}
3840

3941
public QueryOptionBase(
4042
IRequestRoutingService requestRoutingService,
4143
IRequestPreviewService requestPreviewService,
42-
IRequestCultureService requestCultureService,
43-
IApiDocumentUrlService apiDocumentUrlService)
44+
IApiDocumentUrlService apiDocumentUrlService,
45+
IVariationContextAccessor variationContextAccessor)
4446
{
4547
_requestRoutingService = requestRoutingService;
4648
_requestPreviewService = requestPreviewService;
47-
_requestCultureService = requestCultureService;
4849
_apiDocumentUrlService = apiDocumentUrlService;
50+
_variationContextAccessor = variationContextAccessor;
4951
}
5052

5153
protected Guid? GetGuidFromQuery(string queryStringValue)
@@ -64,7 +66,7 @@ public QueryOptionBase(
6466
var contentRoute = _requestRoutingService.GetContentRoute(queryStringValue);
6567
return _apiDocumentUrlService.GetDocumentKeyByRoute(
6668
contentRoute,
67-
_requestCultureService.GetRequestedCulture(),
69+
_variationContextAccessor.VariationContext?.Culture,
6870
_requestPreviewService.IsPreview());
6971
}
7072
}

src/Umbraco.Cms.Api.Delivery/Querying/Selectors/AncestorsSelector.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Umbraco.Cms.Api.Delivery.Indexing.Selectors;
33
using Umbraco.Cms.Core.DeliveryApi;
44
using Umbraco.Cms.Core.DependencyInjection;
5+
using Umbraco.Cms.Core.Models.PublishedContent;
56
using Umbraco.Cms.Core.PublishedCache;
67
using Umbraco.Cms.Core.Services.Navigation;
78

@@ -20,10 +21,9 @@ public AncestorsSelector(
2021
IRequestPreviewService requestPreviewService)
2122
: this(
2223
requestRoutingService,
23-
StaticServiceProvider.Instance.GetRequiredService<IPublishedContentCache>(),
24-
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
25-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
24+
requestPreviewService,
2625
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
26+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>(),
2727
navigationQueryService)
2828
{
2929
}
@@ -35,10 +35,9 @@ public AncestorsSelector(
3535
IDocumentNavigationQueryService navigationQueryService)
3636
: this(
3737
requestRoutingService,
38-
StaticServiceProvider.Instance.GetRequiredService<IPublishedContentCache>(),
3938
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
40-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
4139
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
40+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>(),
4241
navigationQueryService)
4342
{
4443
}
@@ -47,32 +46,31 @@ public AncestorsSelector(
4746
public AncestorsSelector(IPublishedContentCache publishedContentCache, IRequestRoutingService requestRoutingService)
4847
: this(
4948
requestRoutingService,
50-
StaticServiceProvider.Instance.GetRequiredService<IPublishedContentCache>(),
5149
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
52-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
5350
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
51+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>(),
5452
StaticServiceProvider.Instance.GetRequiredService<IDocumentNavigationQueryService>())
5553
{
5654
}
5755

5856
public AncestorsSelector(
5957
IRequestRoutingService requestRoutingService,
6058
IRequestPreviewService requestPreviewService,
61-
IRequestCultureService requestCultureService,
6259
IApiDocumentUrlService apiDocumentUrlService,
60+
IVariationContextAccessor variationContextAccessor,
6361
IDocumentNavigationQueryService navigationQueryService)
64-
: base(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
62+
: base(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
6563
=> _navigationQueryService = navigationQueryService;
6664

6765
[Obsolete("Use the constructor that takes all parameters. Scheduled for removal in V17.")]
6866
public AncestorsSelector(
6967
IRequestRoutingService requestRoutingService,
7068
IPublishedContentCache publishedContentCache,
7169
IRequestPreviewService requestPreviewService,
72-
IRequestCultureService requestCultureService,
7370
IApiDocumentUrlService apiDocumentUrlService,
71+
IVariationContextAccessor variationContextAccessor,
7472
IDocumentNavigationQueryService navigationQueryService)
75-
: this(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService, navigationQueryService)
73+
: this(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor, navigationQueryService)
7674
{
7775
}
7876

src/Umbraco.Cms.Api.Delivery/Querying/Selectors/ChildrenSelector.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Umbraco.Cms.Api.Delivery.Indexing.Selectors;
33
using Umbraco.Cms.Core.DeliveryApi;
44
using Umbraco.Cms.Core.DependencyInjection;
5+
using Umbraco.Cms.Core.Models.PublishedContent;
56
using Umbraco.Cms.Core.PublishedCache;
67
using Umbraco.Extensions;
78

@@ -16,8 +17,8 @@ public ChildrenSelector(IPublishedContentCache publishedContentCache, IRequestRo
1617
: this(
1718
requestRoutingService,
1819
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
19-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
20-
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>())
20+
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
21+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>())
2122
{
2223
}
2324

@@ -26,18 +27,18 @@ public ChildrenSelector(
2627
IPublishedContentCache publishedContentCache,
2728
IRequestRoutingService requestRoutingService,
2829
IRequestPreviewService requestPreviewService,
29-
IRequestCultureService requestCultureService,
30-
IApiDocumentUrlService apiDocumentUrlService)
31-
: this(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
30+
IApiDocumentUrlService apiDocumentUrlService,
31+
IVariationContextAccessor variationContextAccessor)
32+
: this(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
3233
{
3334
}
3435

3536
public ChildrenSelector(
3637
IRequestRoutingService requestRoutingService,
3738
IRequestPreviewService requestPreviewService,
38-
IRequestCultureService requestCultureService,
39-
IApiDocumentUrlService apiDocumentUrlService)
40-
: base(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
39+
IApiDocumentUrlService apiDocumentUrlService,
40+
IVariationContextAccessor variationContextAccessor)
41+
: base(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
4142
{
4243
}
4344

src/Umbraco.Cms.Api.Delivery/Querying/Selectors/DescendantsSelector.cs

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
using Umbraco.Cms.Api.Delivery.Indexing.Selectors;
33
using Umbraco.Cms.Core.DeliveryApi;
44
using Umbraco.Cms.Core.DependencyInjection;
5+
using Umbraco.Cms.Core.Models.PublishedContent;
56
using Umbraco.Cms.Core.PublishedCache;
67
using Umbraco.Extensions;
78

@@ -16,8 +17,8 @@ public DescendantsSelector(IPublishedContentCache publishedContentCache, IReques
1617
: this(
1718
requestRoutingService,
1819
StaticServiceProvider.Instance.GetRequiredService<IRequestPreviewService>(),
19-
StaticServiceProvider.Instance.GetRequiredService<IRequestCultureService>(),
20-
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>())
20+
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
21+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>())
2122
{
2223
}
2324

@@ -26,18 +27,18 @@ public DescendantsSelector(
2627
IPublishedContentCache publishedContentCache,
2728
IRequestRoutingService requestRoutingService,
2829
IRequestPreviewService requestPreviewService,
29-
IRequestCultureService requestCultureService,
30-
IApiDocumentUrlService apiDocumentUrlService)
31-
: this(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
30+
IApiDocumentUrlService apiDocumentUrlService,
31+
IVariationContextAccessor variationContextAccessor)
32+
: this(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
3233
{
3334
}
3435

3536
public DescendantsSelector(
3637
IRequestRoutingService requestRoutingService,
3738
IRequestPreviewService requestPreviewService,
38-
IRequestCultureService requestCultureService,
39-
IApiDocumentUrlService apiDocumentUrlService)
40-
: base(requestRoutingService, requestPreviewService, requestCultureService, apiDocumentUrlService)
39+
IApiDocumentUrlService apiDocumentUrlService,
40+
IVariationContextAccessor variationContextAccessor)
41+
: base(requestRoutingService, requestPreviewService, apiDocumentUrlService, variationContextAccessor)
4142
{
4243
}
4344

src/Umbraco.Core/DeliveryApi/ApiPublishedContentCache.cs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ namespace Umbraco.Cms.Core.DeliveryApi;
1212
public sealed class ApiPublishedContentCache : IApiPublishedContentCache
1313
{
1414
private readonly IRequestPreviewService _requestPreviewService;
15-
private readonly IRequestCultureService _requestCultureService;
1615
private readonly IApiDocumentUrlService _apiDocumentUrlService;
1716
private readonly IPublishedContentCache _publishedContentCache;
17+
private readonly IVariationContextAccessor _variationContextAccessor;
1818
private DeliveryApiSettings _deliveryApiSettings;
1919

2020
[Obsolete("Use the non-obsolete constructor. Will be removed in V17.")]
@@ -24,7 +24,12 @@ public ApiPublishedContentCache(
2424
IOptionsMonitor<DeliveryApiSettings> deliveryApiSettings,
2525
IDocumentUrlService documentUrlService,
2626
IPublishedContentCache publishedContentCache)
27-
: this(requestPreviewService, requestCultureService, deliveryApiSettings, StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(), publishedContentCache)
27+
: this(
28+
requestPreviewService,
29+
deliveryApiSettings,
30+
StaticServiceProvider.Instance.GetRequiredService<IApiDocumentUrlService>(),
31+
publishedContentCache,
32+
StaticServiceProvider.Instance.GetRequiredService<IVariationContextAccessor>())
2833
{
2934
}
3035

@@ -35,22 +40,23 @@ public ApiPublishedContentCache(
3540
IOptionsMonitor<DeliveryApiSettings> deliveryApiSettings,
3641
IDocumentUrlService documentUrlService,
3742
IApiDocumentUrlService apiDocumentUrlService,
38-
IPublishedContentCache publishedContentCache)
39-
: this(requestPreviewService, requestCultureService, deliveryApiSettings, apiDocumentUrlService, publishedContentCache)
43+
IPublishedContentCache publishedContentCache,
44+
IVariationContextAccessor variationContextAccessor)
45+
: this(requestPreviewService, deliveryApiSettings, apiDocumentUrlService, publishedContentCache, variationContextAccessor)
4046
{
4147
}
4248

4349
public ApiPublishedContentCache(
4450
IRequestPreviewService requestPreviewService,
45-
IRequestCultureService requestCultureService,
4651
IOptionsMonitor<DeliveryApiSettings> deliveryApiSettings,
4752
IApiDocumentUrlService apiDocumentUrlService,
48-
IPublishedContentCache publishedContentCache)
53+
IPublishedContentCache publishedContentCache,
54+
IVariationContextAccessor variationContextAccessor)
4955
{
5056
_requestPreviewService = requestPreviewService;
51-
_requestCultureService = requestCultureService;
5257
_apiDocumentUrlService = apiDocumentUrlService;
5358
_publishedContentCache = publishedContentCache;
59+
_variationContextAccessor = variationContextAccessor;
5460
_deliveryApiSettings = deliveryApiSettings.CurrentValue;
5561
deliveryApiSettings.OnChange(settings => _deliveryApiSettings = settings);
5662
}
@@ -61,7 +67,7 @@ public ApiPublishedContentCache(
6167

6268
Guid? documentKey = _apiDocumentUrlService.GetDocumentKeyByRoute(
6369
route,
64-
_requestCultureService.GetRequestedCulture(),
70+
_variationContextAccessor.VariationContext?.Culture,
6571
_requestPreviewService.IsPreview());
6672

6773
IPublishedContent? content = documentKey.HasValue
@@ -77,7 +83,7 @@ public ApiPublishedContentCache(
7783

7884
Guid? documentKey = _apiDocumentUrlService.GetDocumentKeyByRoute(
7985
route,
80-
_requestCultureService.GetRequestedCulture(),
86+
_variationContextAccessor.VariationContext?.Culture,
8187
_requestPreviewService.IsPreview());
8288

8389
IPublishedContent? content = documentKey.HasValue

0 commit comments

Comments
 (0)