Fix - Couldn't detect gift card subscriptions

This commit is contained in:
Elwador 2024-06-21 17:45:32 +02:00
parent 3d74fa7667
commit 1669561203
3 changed files with 20 additions and 2 deletions

View File

@ -113,12 +113,18 @@ public class CrAuth{
if (responseSubs.IsOk){ if (responseSubs.IsOk){
var subsc = Helpers.Deserialize<Subscription>(responseSubs.ResponseContent, crunInstance.SettingsJsonSerializerSettings); var subsc = Helpers.Deserialize<Subscription>(responseSubs.ResponseContent, crunInstance.SettingsJsonSerializerSettings);
crunInstance.Profile.Subscription = subsc; crunInstance.Profile.Subscription = subsc;
if ( subsc.SubscriptionProducts is{ Count: 0 } && subsc.ThirdPartySubscriptionProducts is{ Count: > 0 }){ if ( subsc is{ SubscriptionProducts:{ Count: 0 }, ThirdPartySubscriptionProducts.Count: > 0 }){
var thirdPartySub = subsc.ThirdPartySubscriptionProducts.First(); var thirdPartySub = subsc.ThirdPartySubscriptionProducts.First();
var remaining = thirdPartySub.ExpirationDate - DateTime.UtcNow; var remaining = thirdPartySub.ExpirationDate - DateTime.UtcNow;
crunInstance.Profile.HasPremium = remaining > TimeSpan.Zero; crunInstance.Profile.HasPremium = remaining > TimeSpan.Zero;
crunInstance.Profile.Subscription.IsActive = remaining > TimeSpan.Zero; crunInstance.Profile.Subscription.IsActive = remaining > TimeSpan.Zero;
crunInstance.Profile.Subscription.NextRenewalDate = thirdPartySub.ExpirationDate; crunInstance.Profile.Subscription.NextRenewalDate = thirdPartySub.ExpirationDate;
} else if(subsc is{ SubscriptionProducts:{ Count: 0 }, NonrecurringSubscriptionProducts.Count: > 0 }){
var nonRecurringSub = subsc.NonrecurringSubscriptionProducts.First();
var remaining = nonRecurringSub.EndDate - DateTime.UtcNow;
crunInstance.Profile.HasPremium = remaining > TimeSpan.Zero;
crunInstance.Profile.Subscription.IsActive = remaining > TimeSpan.Zero;
crunInstance.Profile.Subscription.NextRenewalDate = nonRecurringSub.EndDate;
} else{ } else{
crunInstance.Profile.HasPremium = subsc.IsActive; crunInstance.Profile.HasPremium = subsc.IsActive;
} }

View File

@ -45,9 +45,19 @@ public class Subscription{
public List<ThirdPartySubscriptionProduct>? ThirdPartySubscriptionProducts{ get; set; } public List<ThirdPartySubscriptionProduct>? ThirdPartySubscriptionProducts{ get; set; }
[JsonProperty("nonrecurring_subscription_products")] [JsonProperty("nonrecurring_subscription_products")]
public List<SubscriptionProduct>? NonrecurringSubscriptionProducts{ get; set; } public List<NonRecurringSubscriptionProduct>? NonrecurringSubscriptionProducts{ get; set; }
} }
public class NonRecurringSubscriptionProduct{
[JsonProperty("start_date")]
public DateTime StartDate{ get; set; }
[JsonProperty("end_date")]
public DateTime EndDate{ get; set; }
public string? Sku{ get; set; }
public string? Tier{ get; set; }
}
public class SubscriptionProduct{ public class SubscriptionProduct{
[JsonProperty("currency_code")] [JsonProperty("currency_code")]
public string? CurrencyCode{ get; set; } public string? CurrencyCode{ get; set; }

View File

@ -61,6 +61,8 @@ public partial class AccountPageViewModel : ViewModelBase{
if (sub != null){ if (sub != null){
IsCancelled = !sub.AutoRenew; IsCancelled = !sub.AutoRenew;
} }
}else if(Crunchyroll.Instance.Profile.Subscription?.NonrecurringSubscriptionProducts.Count >= 1){
IsCancelled = true;
} }
if (Crunchyroll.Instance.Profile.Subscription?.NextRenewalDate != null){ if (Crunchyroll.Instance.Profile.Subscription?.NextRenewalDate != null){