Improved subscription loading and null handling

This commit is contained in:
Casper Sparre 2025-03-08 15:14:27 +01:00
parent c65b0e0001
commit f2dfcd45b0
2 changed files with 28 additions and 16 deletions

View File

@ -334,12 +334,15 @@ public class APIHelper : IAPIHelper
foreach (Subscriptions.List subscription in subscriptions.list) foreach (Subscriptions.List subscription in subscriptions.list)
{ {
if ((!(subscription.isRestricted ?? false) || ((subscription.isRestricted ?? false) && includeRestricted)) if (users.ContainsKey(subscription.username))
&& !users.ContainsKey(subscription.username)) continue;
{
bool isRestricted = subscription.isRestricted ?? false;
bool isRestrictedButAllowed = isRestricted && includeRestricted;
if (!isRestricted || isRestrictedButAllowed)
users.Add(subscription.username, subscription.id); users.Add(subscription.username, subscription.id);
} }
}
return users; return users;
} }

View File

@ -846,11 +846,19 @@ public class Program
{ {
DateTime startTime = DateTime.Now; DateTime startTime = DateTime.Now;
Dictionary<string, int> users = new(); Dictionary<string, int> users = new();
Dictionary<string, int> activeSubs = await m_ApiHelper.GetActiveSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config);
Task<Dictionary<string, int>?> taskActive = m_ApiHelper.GetActiveSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config);
Task<Dictionary<string, int>?> taskExpired = Config!.IncludeExpiredSubscriptions
? m_ApiHelper.GetExpiredSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config)
: Task.FromResult<Dictionary<string, int>?>([]);
await Task.WhenAll(taskActive, taskExpired);
Dictionary<string, int> subsActive = await taskActive ?? [];
Dictionary<string, int> subsExpired = await taskExpired ?? [];
Log.Debug("Subscriptions: "); Log.Debug("Subscriptions: ");
foreach (KeyValuePair<string, int> activeSub in subsActive)
foreach (KeyValuePair<string, int> activeSub in activeSubs)
{ {
if (!users.ContainsKey(activeSub.Key)) if (!users.ContainsKey(activeSub.Key))
{ {
@ -861,9 +869,7 @@ public class Program
if (Config!.IncludeExpiredSubscriptions) if (Config!.IncludeExpiredSubscriptions)
{ {
Log.Debug("Inactive Subscriptions: "); Log.Debug("Inactive Subscriptions: ");
foreach (KeyValuePair<string, int> expiredSub in subsExpired)
Dictionary<string, int> expiredSubs = await m_ApiHelper.GetExpiredSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config);
foreach (KeyValuePair<string, int> expiredSub in expiredSubs)
{ {
if (!users.ContainsKey(expiredSub.Key)) if (!users.ContainsKey(expiredSub.Key))
{ {
@ -890,6 +896,9 @@ public class Program
} }
} }
if (users.Count <= 0)
throw new InvalidOperationException("No users found!");
await dBHelper.CreateUsersDB(users); await dBHelper.CreateUsersDB(users);
KeyValuePair<bool, Dictionary<string, int>> hasSelectedUsersKVP; KeyValuePair<bool, Dictionary<string, int>> hasSelectedUsersKVP;
if(Config.NonInteractiveMode && Config.NonInteractiveModePurchasedTab) if(Config.NonInteractiveMode && Config.NonInteractiveModePurchasedTab)