From 3cc3c49b0f840fe83a08327b80b95f389fefcfd7 Mon Sep 17 00:00:00 2001 From: Casper Sparre Date: Sat, 8 Mar 2025 15:14:27 +0100 Subject: [PATCH] Improved subscription loading and null handling --- OF DL/Helpers/APIHelper.cs | 11 +++++++---- OF DL/Program.cs | 33 +++++++++++++++++++++------------ 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/OF DL/Helpers/APIHelper.cs b/OF DL/Helpers/APIHelper.cs index ea73ba8..3df39b2 100644 --- a/OF DL/Helpers/APIHelper.cs +++ b/OF DL/Helpers/APIHelper.cs @@ -334,11 +334,14 @@ public class APIHelper : IAPIHelper foreach (Subscriptions.List subscription in subscriptions.list) { - if ((!(subscription.isRestricted ?? false) || ((subscription.isRestricted ?? false) && includeRestricted)) - && !users.ContainsKey(subscription.username)) - { + if (users.ContainsKey(subscription.username)) + continue; + + bool isRestricted = subscription.isRestricted ?? false; + bool isRestrictedButAllowed = isRestricted && includeRestricted; + + if (!isRestricted || isRestrictedButAllowed) users.Add(subscription.username, subscription.id); - } } return users; diff --git a/OF DL/Program.cs b/OF DL/Program.cs index c96fc11..e7e0a3a 100644 --- a/OF DL/Program.cs +++ b/OF DL/Program.cs @@ -884,13 +884,21 @@ public class Program do { DateTime startTime = DateTime.Now; - Dictionary users = new(); - Dictionary activeSubs = await m_ApiHelper.GetActiveSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config); + Dictionary users = new(); - Log.Debug("Subscriptions: "); + Task?> taskActive = m_ApiHelper.GetActiveSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config); + Task?> taskExpired = Config!.IncludeExpiredSubscriptions + ? m_ApiHelper.GetExpiredSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config) + : Task.FromResult?>([]); - foreach (KeyValuePair activeSub in activeSubs) - { + await Task.WhenAll(taskActive, taskExpired); + + Dictionary subsActive = await taskActive ?? []; + Dictionary subsExpired = await taskExpired ?? []; + + Log.Debug("Subscriptions: "); + foreach (KeyValuePair activeSub in subsActive) + { if (!users.ContainsKey(activeSub.Key)) { users.Add(activeSub.Key, activeSub.Value); @@ -900,11 +908,9 @@ public class Program if (Config!.IncludeExpiredSubscriptions) { Log.Debug("Inactive Subscriptions: "); - - Dictionary expiredSubs = await m_ApiHelper.GetExpiredSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config); - foreach (KeyValuePair expiredSub in expiredSubs) - { - if (!users.ContainsKey(expiredSub.Key)) + foreach (KeyValuePair expiredSub in subsExpired) + { + if (!users.ContainsKey(expiredSub.Key)) { users.Add(expiredSub.Key, expiredSub.Value); Log.Debug($"Name: {expiredSub.Key} ID: {expiredSub.Value}"); @@ -927,9 +933,12 @@ public class Program var ignoredUsernames = await m_ApiHelper.GetListUsers($"/lists/{ignoredUsersListId}/users", Config) ?? []; users = users.Where(x => !ignoredUsernames.Contains(x.Key)).ToDictionary(x => x.Key, x => x.Value); } - } + } - await dBHelper.CreateUsersDB(users); + if (users.Count <= 0) + throw new InvalidOperationException("No users found!"); + + await dBHelper.CreateUsersDB(users); KeyValuePair> hasSelectedUsersKVP; if(Config.NonInteractiveMode && Config.NonInteractiveModePurchasedTab) {