From 060c0c2d8d40d6e511bc0680fce3a110c5e5b13c Mon Sep 17 00:00:00 2001 From: enisn Date: Mon, 8 Mar 2021 09:53:05 +0300 Subject: [PATCH] CmsKit - Remove IEqulityComparer from BlogFeature --- .../Volo/CmsKit/Blogs/BlogFeature.cs | 13 +------------ .../CmsKit/Blogs/BlogFeatureEqualityComparer.cs | 17 +++++++++++++++++ .../Volo/CmsKit/Blogs/BlogFeatureManager.cs | 5 +++-- 3 files changed, 21 insertions(+), 14 deletions(-) create mode 100644 modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeature.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeature.cs index ff73a798cb..e1bb05fa3f 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeature.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeature.cs @@ -5,7 +5,7 @@ using Volo.Abp.Domain.Entities.Auditing; namespace Volo.CmsKit.Blogs { - public class BlogFeature : FullAuditedAggregateRoot, IEquatable + public class BlogFeature : FullAuditedAggregateRoot { public Guid BlogId { get; protected set; } @@ -19,16 +19,5 @@ namespace Volo.CmsKit.Blogs FeatureName = Check.NotNullOrWhiteSpace(featureName, nameof(featureName)); IsEnabled = isEnabled; } - - /* - TODO: Overriding Equals is not a good practice for entities (see https://github.com/abpframework/abp/issues/1728) - Also, the implementation is not a true equal implementation. It just special comparison for a specific case - (used in BlogFeatureManager.GetListAsync). Remove Equals and just do the logic in-place, or create a static - method like BlogFeature.IsSameBlogFeature(BlogFeature other). - */ - public bool Equals(BlogFeature other) - { - return BlogId == other?.BlogId && FeatureName == other?.FeatureName; - } } } diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs new file mode 100644 index 0000000000..7037148bc9 --- /dev/null +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureEqualityComparer.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; + +namespace Volo.CmsKit.Blogs +{ + public class BlogFeatureEqualityComparer : IEqualityComparer + { + public bool Equals(BlogFeature x, BlogFeature y) + { + return x?.BlogId == y?.BlogId && x?.FeatureName == y?.FeatureName; + } + + public int GetHashCode(BlogFeature obj) + { + return obj.GetHashCode(); + } + } +} diff --git a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs index f9f4efd37a..e92e795864 100644 --- a/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs +++ b/modules/cms-kit/src/Volo.CmsKit.Domain/Volo/CmsKit/Blogs/BlogFeatureManager.cs @@ -1,5 +1,6 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading.Tasks; using Volo.Abp.Domain.Services; @@ -30,9 +31,9 @@ namespace Volo.CmsKit.Blogs */ var defaultFeatures = await DefaultBlogFeatureProvider.GetDefaultFeaturesAsync(blogId); - defaultFeatures.ForEach(x => blogFeatures.AddIfNotContains(x)); + defaultFeatures.ForEach(x => blogFeatures.Add(x)); - return blogFeatures; + return blogFeatures.Distinct(new BlogFeatureEqualityComparer()).ToList(); } public async Task SetAsync(Guid blogId, string featureName, bool isEnabled)