UNPKG

react-native-iap

Version:

React Native In-App Purchases module for iOS and Android using Nitro

64 lines (61 loc) 2.45 kB
"use strict"; import { getAvailablePurchases } from "../index.js"; /** * Get active subscriptions * @param subscriptionIds - Optional array of subscription IDs to filter by * @returns Promise<ActiveSubscription[]> - Array of active subscriptions */ export const getActiveSubscriptions = async subscriptionIds => { try { // Get available purchases and filter for subscriptions const purchases = await getAvailablePurchases(); // Filter for subscriptions and map to ActiveSubscription format const subscriptions = purchases.filter(purchase => { // Filter by subscription IDs if provided if (subscriptionIds && subscriptionIds.length > 0) { return subscriptionIds.includes(purchase.productId); } return true; }).map(purchase => { const iosPurchase = purchase; const androidPurchase = purchase; return { productId: purchase.productId, isActive: true, // If it's in availablePurchases, it's active // Backend validation fields transactionId: purchase.id, purchaseToken: purchase.purchaseToken, transactionDate: purchase.transactionDate, // Platform-specific fields expirationDateIOS: iosPurchase.expirationDateIOS ?? null, autoRenewingAndroid: androidPurchase.autoRenewingAndroid ?? androidPurchase.isAutoRenewing, // deprecated - use isAutoRenewing instead environmentIOS: iosPurchase.environmentIOS, // Convenience fields willExpireSoon: false, // Would need to calculate based on expiration date daysUntilExpirationIOS: iosPurchase.expirationDateIOS != null ? Math.ceil((iosPurchase.expirationDateIOS - Date.now()) / (1000 * 60 * 60 * 24)) : undefined }; }); return subscriptions; } catch (error) { console.error('Failed to get active subscriptions:', error); throw error; } }; /** * Check if there are any active subscriptions * @param subscriptionIds - Optional array of subscription IDs to check * @returns Promise<boolean> - True if there are active subscriptions */ export const hasActiveSubscriptions = async subscriptionIds => { try { const activeSubscriptions = await getActiveSubscriptions(subscriptionIds); return activeSubscriptions.length > 0; } catch (error) { console.error('Failed to check active subscriptions:', error); return false; } }; //# sourceMappingURL=subscription.js.map