Files
Umbraco-CMS/src/Umbraco.Core/PublishedCache/UmbracoContextPublishedSnapshotAccessor.cs
2022-02-09 13:24:35 +01:00

47 lines
1.7 KiB
C#

using System;
using Umbraco.Cms.Core.Web;
namespace Umbraco.Cms.Core.PublishedCache
{
// TODO: This is a mess. This is a circular reference:
// IPublishedSnapshotAccessor -> PublishedSnapshotService -> UmbracoContext -> PublishedSnapshotService -> IPublishedSnapshotAccessor
// Injecting IPublishedSnapshotAccessor into PublishedSnapshotService seems pretty strange
// The underlying reason for this mess is because IPublishedContent is both a service and a model.
// Until that is fixed, IPublishedContent will need to have a IPublishedSnapshotAccessor
public class UmbracoContextPublishedSnapshotAccessor : IPublishedSnapshotAccessor
{
private readonly IUmbracoContextAccessor _umbracoContextAccessor;
public UmbracoContextPublishedSnapshotAccessor(IUmbracoContextAccessor umbracoContextAccessor)
{
_umbracoContextAccessor = umbracoContextAccessor;
}
public IPublishedSnapshot? PublishedSnapshot
{
get
{
if (!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
return null;
}
return umbracoContext?.PublishedSnapshot;
}
set => throw new NotSupportedException(); // not ok to set
}
public bool TryGetPublishedSnapshot(out IPublishedSnapshot? publishedSnapshot)
{
if (!_umbracoContextAccessor.TryGetUmbracoContext(out var umbracoContext))
{
publishedSnapshot = null;
return false;
}
publishedSnapshot = umbracoContext?.PublishedSnapshot;
return publishedSnapshot is not null;
}
}
}