[in_app_purchase]IAP/platform interface add cancel status (#4093)
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
index cd4b86d..e01f527 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 1.3.0
+
+* Added new `PurchaseStatus` named `canceled` to distinguish between an error and user cancellation.
+
## 1.2.0
* Added `toString()` to `IAPError`
@@ -12,4 +16,4 @@
## 1.0.0
-* Initial open-source release.
\ No newline at end of file
+* Initial open-source release.
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/lib/src/types/purchase_status.dart b/packages/in_app_purchase/in_app_purchase_platform_interface/lib/src/types/purchase_status.dart
index 7869506..ed54e97 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/lib/src/types/purchase_status.dart
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/lib/src/types/purchase_status.dart
@@ -26,4 +26,9 @@
/// the purchase by calling the `completePurchase` method. More information on
/// verifying purchases can be found [here](https://pub.dev/packages/in_app_purchase#restoring-previous-purchases).
restored,
+
+ /// The purchase has been canceled.
+ ///
+ /// Update your UI to indicate the purchase is canceled.
+ canceled,
}
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
index 64574e0..fc306ac 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/pubspec.yaml
@@ -4,7 +4,7 @@
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
# NOTE: We strongly prefer non-breaking changes, even at the expense of a
# less-clean API. See https://flutter.dev/go/platform-interface-breaking-changes
-version: 1.2.0
+version: 1.3.0
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase_platform_interface/test/src/types/product_details_test.dart b/packages/in_app_purchase/in_app_purchase_platform_interface/test/src/types/product_details_test.dart
index ce49d99..737f0d0 100644
--- a/packages/in_app_purchase/in_app_purchase_platform_interface/test/src/types/product_details_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_platform_interface/test/src/types/product_details_test.dart
@@ -4,6 +4,7 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:in_app_purchase_platform_interface/in_app_purchase_platform_interface.dart';
+import 'package:in_app_purchase_platform_interface/src/types/purchase_status.dart';
void main() {
group('Constructor Tests', () {
@@ -27,4 +28,22 @@
expect(productDetails.currencySymbol, r'$');
});
});
+
+ group('PurchaseStatus Tests', () {
+ test('PurchaseStatus should contain 5 options', () {
+ const List<PurchaseStatus> values = PurchaseStatus.values;
+
+ expect(values.length, 5);
+ });
+
+ test('PurchaseStatus enum should have items in correct index', () {
+ const List<PurchaseStatus> values = PurchaseStatus.values;
+
+ expect(values[0], PurchaseStatus.pending);
+ expect(values[1], PurchaseStatus.purchased);
+ expect(values[2], PurchaseStatus.error);
+ expect(values[3], PurchaseStatus.restored);
+ expect(values[4], PurchaseStatus.canceled);
+ });
+ });
}