From 0e4dc48702e88a9ad9563a0e2d8c95368dfc484d Mon Sep 17 00:00:00 2001 From: Catalin Stanciu Date: Mon, 22 Jul 2019 12:47:16 +0200 Subject: [PATCH 1/4] Add currencyCode to priceLocale --- .../in_app_purchase/ios/Classes/FIAObjectTranslator.m | 2 ++ .../src/store_kit_wrappers/sk_product_wrapper.dart | 11 ++++++++--- .../src/store_kit_wrappers/sk_product_wrapper.g.dart | 9 +++++++-- 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/packages/in_app_purchase/ios/Classes/FIAObjectTranslator.m b/packages/in_app_purchase/ios/Classes/FIAObjectTranslator.m index b64df0538aa6..f1e5c538cb0e 100644 --- a/packages/in_app_purchase/ios/Classes/FIAObjectTranslator.m +++ b/packages/in_app_purchase/ios/Classes/FIAObjectTranslator.m @@ -109,6 +109,8 @@ + (NSDictionary *)getMapFromNSLocale:(NSLocale *)locale { NSMutableDictionary *map = [[NSMutableDictionary alloc] init]; [map setObject:[locale objectForKey:NSLocaleCurrencySymbol] ?: [NSNull null] forKey:@"currencySymbol"]; + [map setObject:[locale objectForKey:NSLocaleCurrencyCode] ?: [NSNull null] + forKey:@"currencyCode"]; return map; } diff --git a/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.dart b/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.dart index 0f6e42a49167..8f4c815a8f50 100644 --- a/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.dart +++ b/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.dart @@ -304,7 +304,8 @@ class SKProductWrapper { // https://github.com/flutter/flutter/issues/26610 @JsonSerializable() class SKPriceLocaleWrapper { - SKPriceLocaleWrapper({@required this.currencySymbol}); + SKPriceLocaleWrapper( + {@required this.currencySymbol, @required this.currencyCode}); /// Constructing an instance from a map from the Objective-C layer. /// @@ -318,6 +319,9 @@ class SKPriceLocaleWrapper { ///The currency symbol for the locale, e.g. $ for US locale. final String currencySymbol; + ///The currency code for the locale, e.g. USD for US locale. + final String currencyCode; + @override bool operator ==(Object other) { if (identical(other, this)) { @@ -327,9 +331,10 @@ class SKPriceLocaleWrapper { return false; } final SKPriceLocaleWrapper typedOther = other; - return typedOther.currencySymbol == currencySymbol; + return typedOther.currencySymbol == currencySymbol && + typedOther.currencyCode == currencyCode; } @override - int get hashCode => this.currencySymbol.hashCode; + int get hashCode => hashValues(this.currencySymbol, this.currencyCode); } diff --git a/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart b/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart index 10a421878f55..70d947a77a64 100644 --- a/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart +++ b/packages/in_app_purchase/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart @@ -132,9 +132,14 @@ Map _$SKProductWrapperToJson(SKProductWrapper instance) => }; SKPriceLocaleWrapper _$SKPriceLocaleWrapperFromJson(Map json) { - return SKPriceLocaleWrapper(currencySymbol: json['currencySymbol'] as String); + return SKPriceLocaleWrapper( + currencySymbol: json['currencySymbol'] as String, + currencyCode: json['currencyCode'] as String); } Map _$SKPriceLocaleWrapperToJson( SKPriceLocaleWrapper instance) => - {'currencySymbol': instance.currencySymbol}; + { + 'currencySymbol': instance.currencySymbol, + 'currencyCode': instance.currencyCode + }; From b015244b9ec339991bffec94b82765d114e91bf2 Mon Sep 17 00:00:00 2001 From: Catalin Stanciu Date: Mon, 22 Jul 2019 12:47:43 +0200 Subject: [PATCH 2/4] Add tests for currencyCode for priceLocale --- .../store_kit_wrappers/sk_methodchannel_apis_test.dart | 5 +++++ .../test/store_kit_wrappers/sk_test_stub_objects.dart | 7 +++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/packages/in_app_purchase/test/store_kit_wrappers/sk_methodchannel_apis_test.dart b/packages/in_app_purchase/test/store_kit_wrappers/sk_methodchannel_apis_test.dart index cc259f972a0e..f644e6f66ff1 100644 --- a/packages/in_app_purchase/test/store_kit_wrappers/sk_methodchannel_apis_test.dart +++ b/packages/in_app_purchase/test/store_kit_wrappers/sk_methodchannel_apis_test.dart @@ -30,10 +30,15 @@ void main() { productResponseWrapper.products.first.priceLocale.currencySymbol, '\$', ); + expect( productResponseWrapper.products.first.priceLocale.currencySymbol, isNot('A'), ); + expect( + productResponseWrapper.products.first.priceLocale.currencyCode, + 'USD', + ); expect( productResponseWrapper.invalidProductIdentifiers, isNotEmpty, diff --git a/packages/in_app_purchase/test/store_kit_wrappers/sk_test_stub_objects.dart b/packages/in_app_purchase/test/store_kit_wrappers/sk_test_stub_objects.dart index b4fa0165a18c..1dc70748f1db 100644 --- a/packages/in_app_purchase/test/store_kit_wrappers/sk_test_stub_objects.dart +++ b/packages/in_app_purchase/test/store_kit_wrappers/sk_test_stub_objects.dart @@ -33,7 +33,7 @@ final SKPaymentTransactionWrapper dummyTransaction = ); final SKPriceLocaleWrapper dummyLocale = - SKPriceLocaleWrapper(currencySymbol: '\$'); + SKPriceLocaleWrapper(currencySymbol: '\$', currencyCode: 'USD'); final SKProductSubscriptionPeriodWrapper dummySubscription = SKProductSubscriptionPeriodWrapper( @@ -67,7 +67,10 @@ final SkProductResponseWrapper dummyProductResponseWrapper = ); Map buildLocaleMap(SKPriceLocaleWrapper local) { - return {'currencySymbol': local.currencySymbol}; + return { + 'currencySymbol': local.currencySymbol, + 'currencyCode': local.currencyCode + }; } Map buildSubscriptionPeriodMap( From d8f8d0ffaedfb3f3f825a6a69e3884c5f2541924 Mon Sep 17 00:00:00 2001 From: Catalin Stanciu Date: Mon, 22 Jul 2019 13:10:10 +0200 Subject: [PATCH 3/4] Update version of in_app_purchase to 0.2.1 --- packages/in_app_purchase/pubspec.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/in_app_purchase/pubspec.yaml b/packages/in_app_purchase/pubspec.yaml index 78af9b15bf1c..c943bd87a8ea 100644 --- a/packages/in_app_purchase/pubspec.yaml +++ b/packages/in_app_purchase/pubspec.yaml @@ -2,7 +2,7 @@ name: in_app_purchase description: A Flutter plugin for in-app purchases. Exposes APIs for making in-app purchases through the App Store and Google Play. author: Flutter Team homepage: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase -version: 0.2.0+6 +version: 0.2.1 dependencies: async: ^2.0.8 From f8e7ed1378df335f69bceeba501e009dcd16ed59 Mon Sep 17 00:00:00 2001 From: Catalin Stanciu Date: Mon, 22 Jul 2019 13:17:29 +0200 Subject: [PATCH 4/4] Update in_app_purchase CHANGELOG --- packages/in_app_purchase/CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/in_app_purchase/CHANGELOG.md b/packages/in_app_purchase/CHANGELOG.md index e9de56b2cef3..a99d7ae445ae 100644 --- a/packages/in_app_purchase/CHANGELOG.md +++ b/packages/in_app_purchase/CHANGELOG.md @@ -1,3 +1,7 @@ +## 0.2.1 + +* iOS: Add currencyCode to priceLocale on productDetails. + ## 0.2.0+6 * Add missing `hashCode` implementations.