Improved subscription loading and null handling

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

View File

@ -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;

View File

@ -884,13 +884,21 @@ public class Program
do
{
DateTime startTime = DateTime.Now;
Dictionary<string, int> users = new();
Dictionary<string, int> activeSubs = await m_ApiHelper.GetActiveSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config);
Dictionary<string, int> users = new();
Log.Debug("Subscriptions: ");
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>?>([]);
foreach (KeyValuePair<string, int> activeSub in activeSubs)
{
await Task.WhenAll(taskActive, taskExpired);
Dictionary<string, int> subsActive = await taskActive ?? [];
Dictionary<string, int> subsExpired = await taskExpired ?? [];
Log.Debug("Subscriptions: ");
foreach (KeyValuePair<string, int> 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<string, int> expiredSubs = await m_ApiHelper.GetExpiredSubscriptions("/subscriptions/subscribes", Config.IncludeRestrictedSubscriptions, Config);
foreach (KeyValuePair<string, int> expiredSub in expiredSubs)
{
if (!users.ContainsKey(expiredSub.Key))
foreach (KeyValuePair<string, int> 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<bool, Dictionary<string, int>> hasSelectedUsersKVP;
if(Config.NonInteractiveMode && Config.NonInteractiveModePurchasedTab)
{