diff --git a/OF DL/Helpers/APIHelper.cs b/OF DL/Helpers/APIHelper.cs index c9adf32..f70532c 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 7ffe1fe..9fd209c 100644 --- a/OF DL/Program.cs +++ b/OF DL/Program.cs @@ -845,13 +845,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); @@ -861,11 +869,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}"); @@ -888,9 +894,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) {