subscriptionStatus property

SubscriptionStatus get subscriptionStatus

Gets the subscription status.

final status = receipt.subscriptionStatus;
if (status == SubscriptionStatus.expiringSoon) {
  showRenewalPrompt();
}

Implementation

SubscriptionStatus get subscriptionStatus {
  if (!isSubscription) return SubscriptionStatus.none;
  if (expiresAt == null) return SubscriptionStatus.active;

  final now = DateTime.now();
  if (now.isAfter(expiresAt!)) {
    // Check for grace period (3 days after expiry)
    final gracePeriodEnd = expiresAt!.add(const Duration(days: 3));
    if (now.isBefore(gracePeriodEnd)) {
      return SubscriptionStatus.gracePeriod;
    }
    return SubscriptionStatus.expired;
  }

  // Check if expiring soon (within 3 days)
  final soonThreshold = expiresAt!.subtract(const Duration(days: 3));
  if (now.isAfter(soonThreshold)) {
    return SubscriptionStatus.expiringSoon;
  }

  return SubscriptionStatus.active;
}