From 2175c8e4a7e8131220797ad5d76f0618b5d857bf Mon Sep 17 00:00:00 2001 From: Mole Date: Tue, 29 Sep 2020 15:25:27 +0200 Subject: [PATCH] Register PreviewHub in composer It actually updates now \o/ --- .../SignalR/IPreviewHub.cs | 5 +++-- .../SignalR/PreviewHubComponent.cs | 4 ++-- .../SignalR/PreviewHubComposer.cs | 17 +++++++++++++++++ .../src/preview/preview.controller.js | 5 +++-- 4 files changed, 25 insertions(+), 6 deletions(-) create mode 100644 src/Umbraco.Web.BackOffice/SignalR/PreviewHubComposer.cs diff --git a/src/Umbraco.Web.BackOffice/SignalR/IPreviewHub.cs b/src/Umbraco.Web.BackOffice/SignalR/IPreviewHub.cs index 32ddb262d0..96a28e5c0d 100644 --- a/src/Umbraco.Web.BackOffice/SignalR/IPreviewHub.cs +++ b/src/Umbraco.Web.BackOffice/SignalR/IPreviewHub.cs @@ -1,4 +1,5 @@ -using Microsoft.AspNetCore.SignalR; +using System.Threading.Tasks; +using Microsoft.AspNetCore.SignalR; namespace Umbraco.Web.BackOffice.SignalR { @@ -7,7 +8,7 @@ namespace Umbraco.Web.BackOffice.SignalR // define methods implemented by client // ReSharper disable InconsistentNaming - void refreshed(int id); + Task refreshed(int id); // ReSharper restore InconsistentNaming } diff --git a/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComponent.cs b/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComponent.cs index 2805ea7e98..d1f00e9911 100644 --- a/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComponent.cs +++ b/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComponent.cs @@ -33,7 +33,7 @@ namespace Umbraco.Web.BackOffice.SignalR ContentCacheRefresher.CacheUpdated -= HandleCacheUpdated; } - private void HandleCacheUpdated(ContentCacheRefresher sender, CacheRefresherEventArgs args) + private async void HandleCacheUpdated(ContentCacheRefresher sender, CacheRefresherEventArgs args) { if (args.MessageType != MessageType.RefreshByPayload) return; var payloads = (ContentCacheRefresher.JsonPayload[])args.MessageObject; @@ -41,7 +41,7 @@ namespace Umbraco.Web.BackOffice.SignalR foreach (var payload in payloads) { var id = payload.Id; // keep it simple for now, ignore ChangeTypes - hubContextInstance.Clients.All.refreshed(id); + await hubContextInstance.Clients.All.refreshed(id); } } } diff --git a/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComposer.cs b/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComposer.cs new file mode 100644 index 0000000000..4a6e3d30d4 --- /dev/null +++ b/src/Umbraco.Web.BackOffice/SignalR/PreviewHubComposer.cs @@ -0,0 +1,17 @@ +using Umbraco.Core; +using Umbraco.Core.Composing; +using Umbraco.Web.BackOffice.SignalR; + +namespace Umbraco.Web.SignalR +{ + [RuntimeLevel(MinLevel = RuntimeLevel.Run)] + public class PreviewHubComposer : ComponentComposer, ICoreComposer + { + public override void Compose(Composition composition) + { + base.Compose(composition); + + // composition.RegisterUnique(_ => GlobalHost.ConnectionManager.GetHubContext()); + } + } +} diff --git a/src/Umbraco.Web.UI.Client/src/preview/preview.controller.js b/src/Umbraco.Web.UI.Client/src/preview/preview.controller.js index e7439648fe..83176281b0 100644 --- a/src/Umbraco.Web.UI.Client/src/preview/preview.controller.js +++ b/src/Umbraco.Web.UI.Client/src/preview/preview.controller.js @@ -5,7 +5,7 @@ var app = angular.module("umbraco.preview", ['umbraco.resources', 'umbraco.services']) - .controller("previewController", function ($scope, $window, $location) { + .controller("previewController", function ($scope, $window, $location, umbRequestHelper) { $scope.currentCulture = { iso: '', title: '...', icon: 'icon-loading' } var cultures = []; @@ -46,7 +46,8 @@ var app = angular.module("umbraco.preview", ['umbraco.resources', 'umbraco.servi function configureSignalR(iframe) { // signalr hub var previewHub = new signalR.HubConnectionBuilder() - .withUrl("/umbraco/previewHub") + .withUrl("/umbraco/PreviewHub") + .withAutomaticReconnect() .build(); // visibility tracking