diff --git a/uSync.AutoTemplates/AutoTemplateComposer.cs b/uSync.AutoTemplates/AutoTemplateComposer.cs index c056436ff..1b36d0521 100644 --- a/uSync.AutoTemplates/AutoTemplateComposer.cs +++ b/uSync.AutoTemplates/AutoTemplateComposer.cs @@ -1,4 +1,6 @@ -using Umbraco.Cms.Core.Composing; +using System.Linq; + +using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.DependencyInjection; namespace uSync.AutoTemplates; @@ -7,6 +9,8 @@ public class AutoTemplateComposer : IComposer { public void Compose(IUmbracoBuilder builder) { - builder.AdduSyncAutoTemplates(); + // only load when the backoffice is enabled. + if (builder.Services.Any(s => s.ServiceType == typeof(IBackOfficeEnabledMarker))) + builder.AdduSyncAutoTemplates(); } } diff --git a/uSync.BackOffice/HealthChecks/SyncFolderIntegrityChecks.cs b/uSync.BackOffice/HealthChecks/SyncFolderIntegrityChecks.cs index 926db7bdc..c440942f3 100644 --- a/uSync.BackOffice/HealthChecks/SyncFolderIntegrityChecks.cs +++ b/uSync.BackOffice/HealthChecks/SyncFolderIntegrityChecks.cs @@ -20,8 +20,11 @@ namespace uSync.BackOffice.HealthChecks; Group = "uSync")] public class SyncFolderIntegrityChecks : HealthCheck { - private readonly ISyncConfigService _configService; - private readonly ISyncFileService _fileService; + private readonly ISyncConfigService? _configService; + private readonly ISyncFileService? _fileService; + + + public SyncFolderIntegrityChecks() { } /// /// Constructor @@ -41,6 +44,18 @@ public override HealthCheckStatus ExecuteAction(HealthCheckAction action) /// public override Task> GetStatusAsync() { + if (_configService is null || _fileService is null) + { + return Task.FromResult((IEnumerable)new List + { + new HealthCheckStatus("uSync services not available") + { + Description = "The uSync services are not available, this likely means the site has no backoffice loaded.", + ResultType = StatusResultType.Info + } + }); + } + var items = new List { CheckuSyncFolder(), diff --git a/uSync.BackOffice/uSyncBackOfficeComposer.cs b/uSync.BackOffice/uSyncBackOfficeComposer.cs index f661170d3..71512ef93 100644 --- a/uSync.BackOffice/uSyncBackOfficeComposer.cs +++ b/uSync.BackOffice/uSyncBackOfficeComposer.cs @@ -1,7 +1,13 @@  +using Microsoft.Extensions.Logging; + +using System.Linq; + using Umbraco.Cms.Core.Composing; using Umbraco.Cms.Core.DependencyInjection; +using uSync.Core.Extensions; + namespace uSync.BackOffice; /// @@ -12,10 +18,12 @@ public class uSyncBackOfficeComposer : IComposer /// public void Compose(IUmbracoBuilder builder) { - // the composers add uSync, but the extension methods - // will only add the values if uSync hasn't already - // been added, so you can for example add uSync to your - // startup.cs file. and then the composers don't fire - builder.AdduSync(); + if (builder.IsUmbracoBackOfficeEnabled() is true) { + // the composers add uSync, but the extension methods + // will only add the values if uSync hasn't already + // been added, so you can for example add uSync to your + // startup.cs file. and then the composers don't fire + builder.AdduSync(); + } } } diff --git a/uSync.Backoffice.Management.Api/ApiComposer.cs b/uSync.Backoffice.Management.Api/ApiComposer.cs index ca7da952c..f5d3a6869 100644 --- a/uSync.Backoffice.Management.Api/ApiComposer.cs +++ b/uSync.Backoffice.Management.Api/ApiComposer.cs @@ -7,6 +7,7 @@ using uSync.Backoffice.Management.Api.Configuration; using uSync.Backoffice.Management.Api.Services; using uSync.BackOffice; +using uSync.Core.Extensions; namespace uSync.Backoffice.Management.Api; @@ -15,6 +16,9 @@ public class ApiComposer : IComposer { public void Compose(IUmbracoBuilder builder) { + if (builder.IsUmbracoBackOfficeEnabled() is false) + return; + builder.Services.AddSingleton(); builder.Services.ConfigureOptions(); diff --git a/uSync.Backoffice.Management.Client/uSyncManifestReader.cs b/uSync.Backoffice.Management.Client/uSyncManifestReader.cs index 2a664bb6e..b72b385c7 100644 --- a/uSync.Backoffice.Management.Client/uSyncManifestReader.cs +++ b/uSync.Backoffice.Management.Client/uSyncManifestReader.cs @@ -10,6 +10,7 @@ using uSync.BackOffice.Configuration; using uSync.BackOffice.Extensions; +using uSync.Core.Extensions; namespace uSync.Backoffice.Management.Client; @@ -18,8 +19,12 @@ public class uSyncManifestComposer : IComposer { public void Compose(IUmbracoBuilder builder) { - builder.Services.AddSingleton(); - builder.Services.AddSingleton(); + if (builder.IsUmbracoBackOfficeEnabled()) + { + // only load this when the backoffice is enabled. + builder.Services.AddSingleton(); + builder.Services.AddSingleton(); + } } } diff --git a/uSync.Core/Extensions/SyncBuilderExtensions.cs b/uSync.Core/Extensions/SyncBuilderExtensions.cs new file mode 100644 index 000000000..4ac0d055e --- /dev/null +++ b/uSync.Core/Extensions/SyncBuilderExtensions.cs @@ -0,0 +1,9 @@ +using Umbraco.Cms.Core.DependencyInjection; + +namespace uSync.Core.Extensions; + +public static class SyncBuilderExtensions +{ + public static bool IsUmbracoBackOfficeEnabled(this IUmbracoBuilder builder) + => builder.Services.Any(s => s.ServiceType == typeof(IBackOfficeEnabledMarker)); +} diff --git a/uSync.History/uSyncHistoryComposer.cs b/uSync.History/uSyncHistoryComposer.cs index eea736e47..43783ac3b 100644 --- a/uSync.History/uSyncHistoryComposer.cs +++ b/uSync.History/uSyncHistoryComposer.cs @@ -18,6 +18,7 @@ using uSync.BackOffice; using uSync.BackOffice.Extensions; +using uSync.Core.Extensions; using uSync.History.Service; namespace uSync.History @@ -26,6 +27,10 @@ public class uSyncHistoryComposer : IComposer { public void Compose(IUmbracoBuilder builder) { + // don't load if the backoffice is not loaded as part of the project. + if (builder.IsUmbracoBackOfficeEnabled() is false) + return; + builder.Services.AddSingleton(); builder.AddNotificationAsyncHandler();