diff --git a/DysonNetwork.Sphere/Activity/ActivityService.cs b/DysonNetwork.Sphere/Activity/ActivityService.cs index 5959ca3..d387ccf 100644 --- a/DysonNetwork.Sphere/Activity/ActivityService.cs +++ b/DysonNetwork.Sphere/Activity/ActivityService.cs @@ -54,23 +54,14 @@ public class ActivityService(AppDatabase db, PublisherService pub, RelationshipS var userPublishers = await pub.GetUserPublishers(currentUser.Id); // Get publishers based on filter - List? filteredPublishers = null; - switch (filter) + var filteredPublishers = filter switch { - case "subscriptions": - filteredPublishers = await pub.GetSubscribedPublishers(currentUser.Id); - break; - case "friends": - { - filteredPublishers = (await pub.GetUserPublishersBatch(userFriends)) - .SelectMany(x => x.Value) - .DistinctBy(x => x.Id) - .ToList(); - break; - } - default: - break; - } + "subscriptions" => await pub.GetSubscribedPublishers(currentUser.Id), + "friends" => (await pub.GetUserPublishersBatch(userFriends)).SelectMany(x => x.Value) + .DistinctBy(x => x.Id) + .ToList(), + _ => null + }; var filteredPublishersId = filteredPublishers?.Select(e => e.Id).ToList(); diff --git a/DysonNetwork.Sphere/Publisher/PublisherService.cs b/DysonNetwork.Sphere/Publisher/PublisherService.cs index c9e9182..867680c 100644 --- a/DysonNetwork.Sphere/Publisher/PublisherService.cs +++ b/DysonNetwork.Sphere/Publisher/PublisherService.cs @@ -9,7 +9,6 @@ namespace DysonNetwork.Sphere.Publisher; public class PublisherService(AppDatabase db, FileReferenceService fileRefService, ICacheService cache) { private const string UserPublishersCacheKey = "accounts:{0}:publishers"; - private const string UserPublishersBatchCacheKey = "accounts:batch:{0}:publishers"; public async Task> GetUserPublishers(Guid userId) { @@ -89,7 +88,7 @@ public class PublisherService(AppDatabase db, FileReferenceService fileRefServic - private const string SubscribedPublishersCacheKey = "accounts:{0}:subscribed-publishers"; + public const string SubscribedPublishersCacheKey = "accounts:{0}:subscribed-publishers"; public async Task> GetSubscribedPublishers(Guid userId) { @@ -103,6 +102,7 @@ public class PublisherService(AppDatabase db, FileReferenceService fileRefServic // If not in cache, fetch from a database var publishersId = await db.PublisherSubscriptions .Where(p => p.AccountId == userId) + .Where(p => p.Status == SubscriptionStatus.Active) .Select(p => p.PublisherId) .ToListAsync(); publishers = await db.Publishers diff --git a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs index 7b6867d..7c9f135 100644 --- a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs +++ b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionService.cs @@ -1,5 +1,6 @@ using DysonNetwork.Sphere.Account; using DysonNetwork.Sphere.Post; +using DysonNetwork.Sphere.Storage; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Localization; @@ -9,7 +10,9 @@ public class PublisherSubscriptionService( AppDatabase db, NotificationService nty, PostService ps, - IStringLocalizer localizer) + IStringLocalizer localizer, + ICacheService cache +) { /// /// Checks if a subscription exists between the account and publisher @@ -158,6 +161,8 @@ public class PublisherSubscriptionService( db.PublisherSubscriptions.Add(subscription); await db.SaveChangesAsync(); + + await cache.RemoveAsync(string.Format(PublisherService.SubscribedPublishersCacheKey, accountId)); return subscription; } @@ -176,6 +181,9 @@ public class PublisherSubscriptionService( subscription.Status = SubscriptionStatus.Cancelled; await db.SaveChangesAsync(); + + await cache.RemoveAsync(string.Format(PublisherService.SubscribedPublishersCacheKey, accountId)); + return true; } } \ No newline at end of file