restorePastPurchases method

Future<bool> restorePastPurchases(
  1. BuildContext context,
  2. ListenerManager listenerManager
)

Implementation

Future<bool> restorePastPurchases(
  BuildContext context,
  ListenerManager listenerManager,
) async {
  try {
    final iap = FlutterInappPurchase.instance;

    // 🔄 Trigger platform restore flow (iOS-compliant)
    await iap.restorePurchases();

    // 🧾 Get all available (non-consumable + subscription) purchases
    final purchases = await iap.getAvailablePurchases();

    log('Available purchases -------------> ${purchases.length}');

    for (final purchase in purchases) {
      // ✅ Notify listeners for each valid purchase
      listenerManager.notifyProStatusChangedListeners(purchase);

      // ✅ Add purchase item to your PurchaseHandler
      PurchaseHandler.instance.addPurchasedProduct(
        purchase.productId,
        purchase,
      );
    }

    return true;
  } catch (e) {
    if (kDebugMode) {
      print("Failed to restore past purchases: $e");
    }
    return false;
  }
}