checkActiveSubscription method

Future<Map<String, dynamic>> checkActiveSubscription()

Implementation

Future<Map<String, dynamic>> checkActiveSubscription() async {
  try {
    final transactions = await SKPaymentQueueWrapper().transactions();

    for (final txn in transactions) {
      final productId = txn.payment.productIdentifier;
      final purchaseDateMs =
          int.tryParse(txn.transactionTimeStamp.toString()) ?? 0;

      // Assume fixed duration per product (like Android logic)

      var duration = calculatePlanDuration(productId: productId);

      final expiryDate =
      DateTime.fromMillisecondsSinceEpoch(purchaseDateMs).add(duration ?? Duration.zero);
      final isExpired = DateTime.now().isAfter(expiryDate);

      if (!isExpired) {
        return {
          "isSubscribed": true,
          "productId": productId,
          "expiryDate": expiryDate,
        };
      }
    }
    return {"isSubscribed": false};
  } catch (e) {
    AppLogs.showErrorLogs("iOS subscription check failed: $e");
    return {"isSubscribed": false};
  }
}