From 2534f99cdba1fe7a34c675783652a97b89ee271f Mon Sep 17 00:00:00 2001 From: Elitsa Marinovska Date: Wed, 14 Apr 2021 16:55:37 +0200 Subject: [PATCH] Adding new RecycleBin event handlers --- .../Implement/DocumentRepository.cs | 2 +- .../Repositories/Implement/MediaRepository.cs | 2 +- .../Cache/DistributedCacheBinder_Handlers.cs | 19 +++++++++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs index e196a8a13c..a97569d571 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/DocumentRepository.cs @@ -918,7 +918,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var cacheKey = CacheKeys.ContentRecycleBinCacheKey; // always cache either true or false - return cache.GetCacheItem(cacheKey, () => CountChildren(Constants.System.RecycleBinContent) > 0); + return cache.GetCacheItem(cacheKey, () => CountChildren(RecycleBinId) > 0); } #endregion diff --git a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs index c9001eed31..ac180d54ef 100644 --- a/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs +++ b/src/Umbraco.Core/Persistence/Repositories/Implement/MediaRepository.cs @@ -377,7 +377,7 @@ namespace Umbraco.Core.Persistence.Repositories.Implement var cacheKey = CacheKeys.MediaRecycleBinCacheKey; // always cache either true or false - return cache.GetCacheItem(cacheKey, () => CountChildren(Constants.System.RecycleBinMedia) > 0); + return cache.GetCacheItem(cacheKey, () => CountChildren(RecycleBinId) > 0); } #endregion diff --git a/src/Umbraco.Web/Cache/DistributedCacheBinder_Handlers.cs b/src/Umbraco.Web/Cache/DistributedCacheBinder_Handlers.cs index 3b2cf3e23d..c3cd53168e 100644 --- a/src/Umbraco.Web/Cache/DistributedCacheBinder_Handlers.cs +++ b/src/Umbraco.Web/Cache/DistributedCacheBinder_Handlers.cs @@ -1,6 +1,7 @@ using System; using System.Collections.Generic; using System.Linq; +using Umbraco.Core; using Umbraco.Core.Events; using Umbraco.Core.Logging; using Umbraco.Core.Models; @@ -121,6 +122,8 @@ namespace Umbraco.Web.Cache // bind to media events - handles all media changes Bind(() => MediaService.TreeChanged += MediaService_TreeChanged, () => MediaService.TreeChanged -= MediaService_TreeChanged); + Bind(() => MediaService.EmptiedRecycleBin += MediaService_EmptiedRecycleBin, + () => MediaService.EmptiedRecycleBin -= MediaService_EmptiedRecycleBin); // bind to content events Bind(() => ContentService.Saved += ContentService_Saved, // needed for permissions @@ -129,6 +132,8 @@ namespace Umbraco.Web.Cache () => ContentService.Copied -= ContentService_Copied); Bind(() => ContentService.TreeChanged += ContentService_TreeChanged,// handles all content changes () => ContentService.TreeChanged -= ContentService_TreeChanged); + Bind(() => ContentService.EmptiedRecycleBin += ContentService_EmptiedRecycleBin, + () => ContentService.EmptiedRecycleBin -= ContentService_EmptiedRecycleBin); // TreeChanged should also deal with this //Bind(() => ContentService.SavedBlueprint += ContentService_SavedBlueprint, @@ -200,7 +205,12 @@ namespace Umbraco.Web.Cache private void ContentService_Deleted(IContentService sender, DeleteEventArgs e) { } private void ContentService_Moved(IContentService sender, MoveEventArgs e) { } private void ContentService_Trashed(IContentService sender, MoveEventArgs e) { } - private void ContentService_EmptiedRecycleBin(IContentService sender, RecycleBinEventArgs e) { } + + private void ContentService_EmptiedRecycleBin(IContentService sender, RecycleBinEventArgs e) + { + var payloads = new[] { new ContentCacheRefresher.JsonPayload(Constants.System.RecycleBinContent, null, TreeChangeTypes.RefreshNode) }; + _distributedCache.RefreshByPayload(ContentCacheRefresher.UniqueId, payloads); + } private void ContentService_Published(IContentService sender, PublishEventArgs e) { } private void ContentService_Unpublished(IContentService sender, PublishEventArgs e) { } @@ -413,7 +423,12 @@ namespace Umbraco.Web.Cache private void MediaService_Deleted(IMediaService sender, DeleteEventArgs e) { } private void MediaService_Moved(IMediaService sender, MoveEventArgs e) { } private void MediaService_Trashed(IMediaService sender, MoveEventArgs e) { } - private void MediaService_EmptiedRecycleBin(IMediaService sender, RecycleBinEventArgs e) { } + + private void MediaService_EmptiedRecycleBin(IMediaService sender, RecycleBinEventArgs e) + { + var payloads = new[] { new MediaCacheRefresher.JsonPayload(Constants.System.RecycleBinMedia, null, TreeChangeTypes.RefreshNode) }; + _distributedCache.RefreshByPayload(MediaCacheRefresher.UniqueId, payloads); + } #endregion