Skip to content

Commit 2a5a081

Browse files
authored
Change result of purchase methods to PurchaseResult (#1408)
This changes the result type of the purchase methods. Instead of returning just a `CustomerInfo`, now we will return a `PurchaseResult`, which includes a `CustomerInfo` and a `StoreTransaction`
1 parent 0ffe557 commit 2a5a081

File tree

10 files changed

+191
-121
lines changed

10 files changed

+191
-121
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
import 'package:purchases_flutter/object_wrappers.dart';
2+
3+
// ignore_for_file: unused_element
4+
// ignore_for_file: unused_local_variable
5+
// ignore_for_file: deprecated_member_use
6+
class _PurchaseResultApiTest {
7+
void _checkFromJsonFactory(Map<String, dynamic> json) {
8+
PurchaseResult transaction = PurchaseResult.fromJson(json);
9+
}
10+
11+
void _checkConstructor(
12+
CustomerInfo customerInfo,
13+
StoreTransaction storeTransaction) {
14+
PurchaseResult purchaseResult =
15+
PurchaseResult(customerInfo, storeTransaction);
16+
}
17+
18+
void _checkProperties(PurchaseResult purchaseResult) {
19+
CustomerInfo customerInfo = purchaseResult.customerInfo;
20+
StoreTransaction storeTransaction = purchaseResult.storeTransaction;
21+
}
22+
}

api_tester/lib/api_tests/purchases_flutter_api_test.dart

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -93,67 +93,67 @@ class _PurchasesFlutterApiTest {
9393
GoogleProductChangeInfo? googleProductChangeInfo;
9494
PurchaseType purchaseType = PurchaseType.subs;
9595
ProductCategory productType = ProductCategory.subscription;
96-
CustomerInfo customerInfo = await Purchases.purchaseProduct(
96+
PurchaseResult purchaseResult = await Purchases.purchaseProduct(
9797
productIdentifier,
9898
type: purchaseType,
9999
upgradeInfo: upgradeInfo);
100-
customerInfo = await Purchases.purchaseProduct(productIdentifier,
100+
purchaseResult = await Purchases.purchaseProduct(productIdentifier,
101101
upgradeInfo: upgradeInfo);
102-
customerInfo = await Purchases.purchaseProduct(productIdentifier);
102+
purchaseResult = await Purchases.purchaseProduct(productIdentifier);
103103
}
104104

105105
void _checkPurchaseStoreProduct(StoreProduct storeProduct) async {
106106
GoogleProductChangeInfo? googleProductChangeInfo;
107-
CustomerInfo customerInfo = await Purchases.purchaseStoreProduct(
107+
PurchaseResult purchaseResult = await Purchases.purchaseStoreProduct(
108108
storeProduct,
109109
googleProductChangeInfo: googleProductChangeInfo,
110110
googleIsPersonalizedPrice: true);
111-
customerInfo = await Purchases.purchaseStoreProduct(storeProduct,
111+
purchaseResult = await Purchases.purchaseStoreProduct(storeProduct,
112112
googleIsPersonalizedPrice: true);
113-
customerInfo = await Purchases.purchaseStoreProduct(storeProduct,
113+
purchaseResult = await Purchases.purchaseStoreProduct(storeProduct,
114114
googleProductChangeInfo: googleProductChangeInfo);
115-
customerInfo = await Purchases.purchaseStoreProduct(storeProduct);
115+
purchaseResult = await Purchases.purchaseStoreProduct(storeProduct);
116116
}
117117

118118
void _checkPurchasePackage(Package package) async {
119119
UpgradeInfo? upgradeInfo;
120120
GoogleProductChangeInfo? googleProductChangeInfo;
121-
CustomerInfo customerInfo =
121+
PurchaseResult purchaseResult =
122122
await Purchases.purchasePackage(package, upgradeInfo: upgradeInfo);
123-
customerInfo = await Purchases.purchasePackage(package,
123+
purchaseResult = await Purchases.purchasePackage(package,
124124
googleProductChangeInfo: googleProductChangeInfo,
125125
googleIsPersonalizedPrice: true);
126-
customerInfo = await Purchases.purchasePackage(package,
126+
purchaseResult = await Purchases.purchasePackage(package,
127127
upgradeInfo: upgradeInfo, googleIsPersonalizedPrice: true);
128-
customerInfo = await Purchases.purchasePackage(package,
128+
purchaseResult = await Purchases.purchasePackage(package,
129129
googleIsPersonalizedPrice: true);
130130
}
131131

132132
void _checkPurchaseSubscriptionOption(SubscriptionOption subscriptionOption,
133133
GoogleProductChangeInfo? googleProductChangeInfo) async {
134-
CustomerInfo customerInfo = await Purchases.purchaseSubscriptionOption(
134+
PurchaseResult purchaseResult = await Purchases.purchaseSubscriptionOption(
135135
subscriptionOption,
136136
googleProductChangeInfo: googleProductChangeInfo);
137-
customerInfo = await Purchases.purchaseSubscriptionOption(
137+
purchaseResult = await Purchases.purchaseSubscriptionOption(
138138
subscriptionOption,
139139
googleProductChangeInfo: googleProductChangeInfo,
140140
googleIsPersonalizedPrice: true);
141-
customerInfo = await Purchases.purchaseSubscriptionOption(
141+
purchaseResult = await Purchases.purchaseSubscriptionOption(
142142
subscriptionOption,
143143
googleIsPersonalizedPrice: true);
144-
customerInfo =
144+
purchaseResult =
145145
await Purchases.purchaseSubscriptionOption(subscriptionOption);
146146
}
147147

148148
void _checkPurchaseDiscountedProduct(
149149
StoreProduct product, PromotionalOffer offer) async {
150-
CustomerInfo customerInfo =
150+
PurchaseResult purchaseResult =
151151
await Purchases.purchaseDiscountedProduct(product, offer);
152152
}
153153

154154
void _checkPurchaseDiscountedPackage(
155155
Package package, PromotionalOffer offer) async {
156-
CustomerInfo customerInfo =
156+
PurchaseResult purchaseResult =
157157
await Purchases.purchaseDiscountedPackage(package, offer);
158158
}
159159

@@ -568,15 +568,15 @@ class _PurchasesFlutterApiTest {
568568
}
569569
}
570570

571-
Future<CustomerInfo> _checkFetchAndPurchaseWinBackOffersForProduct(
571+
Future<PurchaseResult> _checkFetchAndPurchaseWinBackOffersForProduct(
572572
StoreProduct product) async {
573573
List<WinBackOffer>? offers =
574574
await Purchases.getEligibleWinBackOffersForProduct(product);
575575

576576
return await Purchases.purchaseProductWithWinBackOffer(product, offers[0]);
577577
}
578578

579-
Future<CustomerInfo> _checkFetchAndPurchaseWinBackOffersForPackage(
579+
Future<PurchaseResult> _checkFetchAndPurchaseWinBackOffersForPackage(
580580
Package package) async {
581581
List<WinBackOffer>? offers =
582582
await Purchases.getEligibleWinBackOffersForPackage(package);

api_tester/lib/api_tests_import.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import 'package:api_tester/api_tests/models/price_wrapper_api_test.dart';
1717
import 'package:api_tester/api_tests/models/pricing_phase_wrapper_api_test.dart';
1818
import 'package:api_tester/api_tests/models/promotional_offer_api_test.dart';
1919
import 'package:api_tester/api_tests/models/purchase_configuration_api_test.dart';
20+
import 'package:api_tester/api_tests/models/purchase_result_api_test.dart';
2021
import 'package:api_tester/api_tests/models/purchases_error_api_test.dart';
2122
import 'package:api_tester/api_tests/models/store_api_test.dart';
2223
import 'package:api_tester/api_tests/models/store_product_discount_api_test.dart';

lib/models/purchase_result.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import 'package:equatable/equatable.dart';
2+
3+
import 'customer_info_wrapper.dart';
4+
import 'store_transaction.dart';
5+
6+
/// Represents the successful result of a purchase operation.
7+
class PurchaseResult extends Equatable {
8+
/// The updated [CustomerInfo] after the purchase has been synced with
9+
/// RevenueCat's servers.
10+
final CustomerInfo customerInfo;
11+
/// The [StoreTransaction] for this purchase.
12+
final StoreTransaction storeTransaction;
13+
14+
const PurchaseResult(
15+
this.customerInfo,
16+
this.storeTransaction,
17+
);
18+
19+
factory PurchaseResult.fromJson(Map<String, dynamic> json) => PurchaseResult(
20+
CustomerInfo.fromJson(Map<String, dynamic>.from(json['customerInfo'])),
21+
StoreTransaction.fromJson(Map<String, dynamic>.from(json['transaction'])),
22+
);
23+
24+
@override
25+
List<Object> get props => [
26+
customerInfo,
27+
storeTransaction,
28+
];
29+
}

lib/object_wrappers.dart

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ export 'models/price_wrapper.dart';
1717
export 'models/pricing_phase_wrapper.dart';
1818
export 'models/product_category.dart';
1919
export 'models/promotional_offer.dart';
20+
export 'models/purchase_result.dart';
2021
export 'models/purchases_completed_by.dart';
2122
export 'models/purchases_configuration.dart';
2223
export 'models/purchases_error.dart';

0 commit comments

Comments
 (0)