[in_app_purchase] Added country code to sk product wrapper (#4122)
diff --git a/packages/in_app_purchase/in_app_purchase_ios/CHANGELOG.md b/packages/in_app_purchase/in_app_purchase_ios/CHANGELOG.md
index f6acc2b..acbe995 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/CHANGELOG.md
+++ b/packages/in_app_purchase/in_app_purchase_ios/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 0.1.2
+
+* Added countryCode to the SKPriceLocaleWrapper.
+
## 0.1.1+1
* iOS: Fix treating missing App Store receipt as an exception.
diff --git a/packages/in_app_purchase/in_app_purchase_ios/example/ios/RunnerTests/TranslatorTests.m b/packages/in_app_purchase/in_app_purchase_ios/example/ios/RunnerTests/TranslatorTests.m
index 42c51b8..89a7b2c 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/example/ios/RunnerTests/TranslatorTests.m
+++ b/packages/in_app_purchase/in_app_purchase_ios/example/ios/RunnerTests/TranslatorTests.m
@@ -149,9 +149,10 @@
- (void)testLocaleToMap {
if (@available(iOS 10.0, *)) {
- NSLocale *system = NSLocale.systemLocale;
+ NSLocale *system = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
NSDictionary *map = [FIAObjectTranslator getMapFromNSLocale:system];
XCTAssertEqualObjects(map[@"currencySymbol"], system.currencySymbol);
+ XCTAssertEqualObjects(map[@"countryCode"], system.countryCode);
}
}
diff --git a/packages/in_app_purchase/in_app_purchase_ios/ios/Classes/FIAObjectTranslator.m b/packages/in_app_purchase/in_app_purchase_ios/ios/Classes/FIAObjectTranslator.m
index 30b0b81..765ef4d 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/ios/Classes/FIAObjectTranslator.m
+++ b/packages/in_app_purchase/in_app_purchase_ios/ios/Classes/FIAObjectTranslator.m
@@ -111,6 +111,7 @@
forKey:@"currencySymbol"];
[map setObject:[locale objectForKey:NSLocaleCurrencyCode] ?: [NSNull null]
forKey:@"currencyCode"];
+ [map setObject:[locale objectForKey:NSLocaleCountryCode] ?: [NSNull null] forKey:@"countryCode"];
return map;
}
diff --git a/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.dart b/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.dart
index ef0e667..1b681f2 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.dart
+++ b/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.dart
@@ -335,15 +335,19 @@
@JsonSerializable()
class SKPriceLocaleWrapper {
/// Creates a new price locale for `currencySymbol` and `currencyCode`.
- SKPriceLocaleWrapper(
- {required this.currencySymbol, required this.currencyCode});
+ SKPriceLocaleWrapper({
+ required this.currencySymbol,
+ required this.currencyCode,
+ required this.countryCode,
+ });
/// Constructing an instance from a map from the Objective-C layer.
///
/// This method should only be used with `map` values returned by [SKProductWrapper.fromJson] and [SKProductDiscountWrapper.fromJson].
factory SKPriceLocaleWrapper.fromJson(Map<String, dynamic>? map) {
if (map == null) {
- return SKPriceLocaleWrapper(currencyCode: '', currencySymbol: '');
+ return SKPriceLocaleWrapper(
+ currencyCode: '', currencySymbol: '', countryCode: '');
}
return _$SKPriceLocaleWrapperFromJson(map);
}
@@ -356,6 +360,10 @@
@JsonKey(defaultValue: '')
final String currencyCode;
+ ///The country code for the locale, e.g. US for US locale.
+ @JsonKey(defaultValue: '')
+ final String countryCode;
+
@override
bool operator ==(Object other) {
if (identical(other, this)) {
diff --git a/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart b/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart
index 8c2eed3..66f4b78 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart
+++ b/packages/in_app_purchase/in_app_purchase_ios/lib/src/store_kit_wrappers/sk_product_wrapper.g.dart
@@ -112,6 +112,7 @@
return SKPriceLocaleWrapper(
currencySymbol: json['currencySymbol'] as String? ?? '',
currencyCode: json['currencyCode'] as String? ?? '',
+ countryCode: json['countryCode'] as String? ?? '',
);
}
@@ -120,4 +121,5 @@
<String, dynamic>{
'currencySymbol': instance.currencySymbol,
'currencyCode': instance.currencyCode,
+ 'countryCode': instance.countryCode,
};
diff --git a/packages/in_app_purchase/in_app_purchase_ios/pubspec.yaml b/packages/in_app_purchase/in_app_purchase_ios/pubspec.yaml
index d06e5fe..b73ad84 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/pubspec.yaml
+++ b/packages/in_app_purchase/in_app_purchase_ios/pubspec.yaml
@@ -2,7 +2,7 @@
description: An implementation for the iOS platform of the Flutter `in_app_purchase` plugin. This uses the iOS StoreKit Framework.
repository: https://github.com/flutter/plugins/tree/master/packages/in_app_purchase/in_app_purchase_ios
issue_tracker: https://github.com/flutter/flutter/issues?q=is%3Aissue+is%3Aopen+label%3A%22p%3A+in_app_purchase%22
-version: 0.1.1+1
+version: 0.1.2
environment:
sdk: ">=2.12.0 <3.0.0"
diff --git a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_methodchannel_apis_test.dart b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
index 7bfddaa..892b9d3 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_methodchannel_apis_test.dart
@@ -48,6 +48,10 @@
'USD',
);
expect(
+ productResponseWrapper.products.first.priceLocale.countryCode,
+ 'US',
+ );
+ expect(
productResponseWrapper.invalidProductIdentifiers,
isNotEmpty,
);
diff --git a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_product_test.dart b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_product_test.dart
index 9454a9d..6233a71 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_product_test.dart
+++ b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_product_test.dart
@@ -44,8 +44,13 @@
final SKProductDiscountWrapper wrapper =
SKProductDiscountWrapper.fromJson(<String, dynamic>{});
expect(wrapper.price, '');
- expect(wrapper.priceLocale,
- SKPriceLocaleWrapper(currencyCode: '', currencySymbol: ''));
+ expect(
+ wrapper.priceLocale,
+ SKPriceLocaleWrapper(
+ currencyCode: '',
+ currencySymbol: '',
+ countryCode: '',
+ ));
expect(wrapper.numberOfPeriods, 0);
expect(wrapper.paymentMode, SKProductDiscountPaymentMode.payAsYouGo);
expect(
@@ -69,8 +74,13 @@
expect(wrapper.productIdentifier, '');
expect(wrapper.localizedTitle, '');
expect(wrapper.localizedDescription, '');
- expect(wrapper.priceLocale,
- SKPriceLocaleWrapper(currencyCode: '', currencySymbol: ''));
+ expect(
+ wrapper.priceLocale,
+ SKPriceLocaleWrapper(
+ currencyCode: '',
+ currencySymbol: '',
+ countryCode: '',
+ ));
expect(wrapper.subscriptionGroupIdentifier, null);
expect(wrapper.price, '');
expect(wrapper.subscriptionPeriod, null);
diff --git a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_test_stub_objects.dart b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_test_stub_objects.dart
index d6c2446..435dd44 100644
--- a/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_test_stub_objects.dart
+++ b/packages/in_app_purchase/in_app_purchase_ios/test/store_kit_wrappers/sk_test_stub_objects.dart
@@ -33,8 +33,11 @@
error: dummyError,
);
-final SKPriceLocaleWrapper dummyLocale =
- SKPriceLocaleWrapper(currencySymbol: '\$', currencyCode: 'USD');
+final SKPriceLocaleWrapper dummyLocale = SKPriceLocaleWrapper(
+ currencySymbol: '\$',
+ currencyCode: 'USD',
+ countryCode: 'US',
+);
final SKProductSubscriptionPeriodWrapper dummySubscription =
SKProductSubscriptionPeriodWrapper(
@@ -70,7 +73,8 @@
Map<String, dynamic> buildLocaleMap(SKPriceLocaleWrapper local) {
return {
'currencySymbol': local.currencySymbol,
- 'currencyCode': local.currencyCode
+ 'currencyCode': local.currencyCode,
+ 'countryCode': local.countryCode,
};
}