diff --git a/lib/modules.dart b/lib/modules.dart index 6e33f787..dde5d56e 100644 --- a/lib/modules.dart +++ b/lib/modules.dart @@ -213,7 +213,7 @@ class PurchasedItem { final String signatureAndroid; final bool autoRenewingAndroid; final bool isAcknowledgedAndroid; - final int purchaseStateAndroid; + final PurchaseState purchaseStateAndroid; final String originalJsonAndroid; // iOS only @@ -234,7 +234,8 @@ class PurchasedItem { signatureAndroid = json['signatureAndroid'] as String, isAcknowledgedAndroid = json['isAcknowledgedAndroid'] as bool, autoRenewingAndroid = json['autoRenewingAndroid'] as bool, - purchaseStateAndroid = json['purchaseStateAndroid'] as int, + purchaseStateAndroid = + _decodePurchaseStateAndroid(json['purchaseStateAndroid'] as int), originalJsonAndroid = json['originalJsonAndroid'] as String, originalTransactionDateIOS = @@ -367,3 +368,25 @@ TransactionState _decodeTransactionStateIOS(int rawValue) { return null; } } + +/// See also https://developer.android.com/reference/com/android/billingclient/api/Purchase.PurchaseState +enum PurchaseState { + pending, + + purchased, + + unspecified, +} + +PurchaseState _decodePurchaseStateAndroid(int rawValue) { + switch (rawValue) { + case 0: + return PurchaseState.unspecified; + case 1: + return PurchaseState.purchased; + case 2: + return PurchaseState.pending; + default: + return null; + } +}