Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions packages/in_app_purchase/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
## 0.1.8

* Update in_app_purchase to 3.3.0
* Updates minimum supported SDK version to Flutter 3.38/Dart 3.10.0.

## 0.1.7

* Add an `implements` entry to the pubspec to improve discoverability on pub.dev.
Expand Down
4 changes: 2 additions & 2 deletions packages/in_app_purchase/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@ This package is not an _endorsed_ implementation of `in_app_purchase`. Therefore

```yaml
dependencies:
in_app_purchase: ^3.2.3
in_app_purchase_tizen: ^0.1.7
in_app_purchase: ^3.3.0
in_app_purchase_tizen: ^0.1.8
```

Then you can import `in_app_purchase` and `in_app_purchase_tizen` in your Dart code:
Expand Down
9 changes: 5 additions & 4 deletions packages/in_app_purchase/example/lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,8 @@ class _MyAppState extends State<_MyApp> {

// The `identifiers` argument is not used on Tizen.
// Use `InAppPurchaseTizenPlatformAddition.setRequestParameters` instead.
final ProductDetailsResponse productDetailResponse =
await _inAppPurchase.queryProductDetails(<String>{});
final ProductDetailsResponse productDetailResponse = await _inAppPurchase
.queryProductDetails(<String>{});
if (productDetailResponse.error != null) {
setState(() {
_queryProductError = productDetailResponse.error!.message;
Expand Down Expand Up @@ -173,8 +173,9 @@ class _MyAppState extends State<_MyApp> {
final Widget storeHeader = ListTile(
leading: Icon(
_isAvailable ? Icons.check : Icons.block,
color:
_isAvailable ? Colors.green : ThemeData.light().colorScheme.error,
color: _isAvailable
? Colors.green
: ThemeData.light().colorScheme.error,
),
title: Text(
'The store is ${_isAvailable ? 'available' : 'unavailable'}.',
Expand Down
6 changes: 3 additions & 3 deletions packages/in_app_purchase/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ description: Demonstrates how to use the in_app_purchase_tizen plugin.
publish_to: "none"

environment:
sdk: ^3.5.0
flutter: ">=3.24.0"
sdk: ^3.10.0
flutter: ">=3.38.0"

dependencies:
flutter:
sdk: flutter
in_app_purchase: ^3.2.3
in_app_purchase: ^3.3.0
in_app_purchase_tizen:
path: ../

Expand Down
28 changes: 14 additions & 14 deletions packages/in_app_purchase/lib/src/billing_manager.dart
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import 'messages.g.dart';
class BillingManager {
/// Creates a billing manager.
BillingManager({@visibleForTesting InAppPurchaseApi? hostApi})
: _hostApi = hostApi ?? InAppPurchaseApi();
: _hostApi = hostApi ?? InAppPurchaseApi();

late RequestParameters _requestParameters;

Expand Down Expand Up @@ -391,19 +391,19 @@ class SamsungCheckoutPurchaseDetails extends PurchaseDetails {
) {
final SamsungCheckoutPurchaseDetails purchaseDetails =
SamsungCheckoutPurchaseDetails(
purchaseID: invoiceDetails.invoiceId,
productID: invoiceDetails.itemId,
verificationData: PurchaseVerificationData(
localVerificationData: invoiceDetails.invoiceId,
serverVerificationData: invoiceDetails.invoiceId,
source: kIAPSource,
),
transactionDate: invoiceDetails.orderTime,
status: const PurchaseStateConverter().toPurchaseStatus(
invoiceDetails.cancelStatus,
),
invoiceDetails: invoiceDetails,
);
purchaseID: invoiceDetails.invoiceId,
productID: invoiceDetails.itemId,
verificationData: PurchaseVerificationData(
localVerificationData: invoiceDetails.invoiceId,
serverVerificationData: invoiceDetails.invoiceId,
source: kIAPSource,
),
transactionDate: invoiceDetails.orderTime,
status: const PurchaseStateConverter().toPurchaseStatus(
invoiceDetails.cancelStatus,
),
invoiceDetails: invoiceDetails,
);

if (purchaseDetails.status == PurchaseStatus.error) {
purchaseDetails.error = IAPError(
Expand Down
125 changes: 66 additions & 59 deletions packages/in_app_purchase/lib/src/in_app_purchase_tizen_platform.dart
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ class InAppPurchaseTizenPlatform extends InAppPurchasePlatform {
}

static final StreamController<List<PurchaseDetails>>
_purchaseUpdatedController =
_purchaseUpdatedController =
StreamController<List<PurchaseDetails>>.broadcast();

@override
Expand All @@ -59,12 +59,12 @@ class InAppPurchaseTizenPlatform extends InAppPurchasePlatform {

/// Converts integer to [ItemType].
static ItemType _intToEnum(int number) => switch (number) {
1 => ItemType.consumable,
2 => ItemType.nonComsumabel,
3 => ItemType.limitedPeriod,
4 => ItemType.subscription,
_ => ItemType.none,
};
1 => ItemType.consumable,
2 => ItemType.nonComsumabel,
3 => ItemType.limitedPeriod,
4 => ItemType.subscription,
_ => ItemType.none,
};

/// Converts Map<Object?, Object?>? to the list of [ItemDetails].
List<ItemDetails> _getItemDetails(ProductsListApiResult response) {
Expand Down Expand Up @@ -130,17 +130,17 @@ class InAppPurchaseTizenPlatform extends InAppPurchasePlatform {

final ProductDetailsResponse productDetailsResponse =
ProductDetailsResponse(
productDetails: productDetailsList,
notFoundIDs: invalidMessage,
error: exception == null
? null
: IAPError(
source: kIAPSource,
code: exception.code,
message: exception.message ?? '',
details: exception.details,
),
);
productDetails: productDetailsList,
notFoundIDs: invalidMessage,
error: exception == null
? null
: IAPError(
source: kIAPSource,
code: exception.code,
message: exception.message ?? '',
details: exception.details,
),
);
return productDetailsResponse;
}

Expand Down Expand Up @@ -195,20 +195,22 @@ class InAppPurchaseTizenPlatform extends InAppPurchasePlatform {
billingManager.requestPurchases(),
]);

final List<PurchaseDetails> pastPurchases =
responses.expand((GetUserPurchaseListAPIResult response) {
if (response.cpStatus == '100000') {
return _getInvoiceDetails(response);
} else {
return <InvoiceDetails>[];
}
}).map((InvoiceDetails purchaseWrapper) {
final SamsungCheckoutPurchaseDetails purchaseDetails =
SamsungCheckoutPurchaseDetails.fromPurchase(purchaseWrapper);

purchaseDetails.status = PurchaseStatus.restored;
return purchaseDetails;
}).toList();
final List<PurchaseDetails> pastPurchases = responses
.expand((GetUserPurchaseListAPIResult response) {
if (response.cpStatus == '100000') {
return _getInvoiceDetails(response);
} else {
return <InvoiceDetails>[];
}
})
.map((InvoiceDetails purchaseWrapper) {
final SamsungCheckoutPurchaseDetails purchaseDetails =
SamsungCheckoutPurchaseDetails.fromPurchase(purchaseWrapper);

purchaseDetails.status = PurchaseStatus.restored;
return purchaseDetails;
})
.toList();
_purchaseUpdatedController.add(pastPurchases);
}

Expand All @@ -229,33 +231,38 @@ class InAppPurchaseTizenPlatform extends InAppPurchasePlatform {
billingManager
.requestPurchases()
.then((GetUserPurchaseListAPIResult responses) {
for (int i = 0; i < responses.invoiceDetails.length; i++) {
if (_getInvoiceDetails(responses)[i].invoiceId == invoiceId) {
final List<PurchaseDetails> purchases = <PurchaseDetails>[];
purchases.add(
PurchaseDetails(
purchaseID: _getInvoiceDetails(responses)[i].invoiceId,
productID: _getInvoiceDetails(responses)[i].itemId,
verificationData: PurchaseVerificationData(
localVerificationData:
_getInvoiceDetails(responses)[i].invoiceId,
serverVerificationData:
_getInvoiceDetails(responses)[i].invoiceId,
source: kIAPSource,
),
transactionDate: _getInvoiceDetails(responses)[i].orderTime,
status: const PurchaseStateConverter().toPurchaseStatus(
_getInvoiceDetails(responses)[i].cancelStatus,
),
),
);

_purchaseUpdatedController.add(purchases);
}
}
}).catchError((Object error) {
_purchaseUpdatedController.addError(error);
}),
for (int i = 0; i < responses.invoiceDetails.length; i++) {
if (_getInvoiceDetails(responses)[i].invoiceId == invoiceId) {
final List<PurchaseDetails> purchases = <PurchaseDetails>[];
purchases.add(
PurchaseDetails(
purchaseID: _getInvoiceDetails(responses)[i].invoiceId,
productID: _getInvoiceDetails(responses)[i].itemId,
verificationData: PurchaseVerificationData(
localVerificationData: _getInvoiceDetails(
responses,
)[i].invoiceId,
serverVerificationData: _getInvoiceDetails(
responses,
)[i].invoiceId,
source: kIAPSource,
),
transactionDate: _getInvoiceDetails(
responses,
)[i].orderTime,
status: const PurchaseStateConverter().toPurchaseStatus(
_getInvoiceDetails(responses)[i].cancelStatus,
),
),
);

_purchaseUpdatedController.add(purchases);
}
}
})
.catchError((Object error) {
_purchaseUpdatedController.addError(error);
}),
);

return true;
Expand Down
Loading
Loading