Browse Source

feat: expose currencyCode on Product struct in IAP module (#25058)

Co-authored-by: Shur Singh <[email protected]>
shur 4 years ago
parent
commit
a17e97c3b2

+ 1 - 0
docs/api/structures/product.md

@@ -7,4 +7,5 @@
 * `contentLengths` Number[] - The total size of the content, in bytes.
 * `price` Number - The cost of the product in the local currency.
 * `formattedPrice` String - The locale formatted price of the product.
+* `currencyCode` String - 3 character code presenting a product's currency based on the ISO 4217 standard.
 * `isDownloadable` Boolean - A Boolean value that indicates whether the App Store has downloadable content for this product. `true` if at least one file has been associated with the product.

+ 3 - 0
shell/browser/api/electron_api_in_app_purchase.cc

@@ -61,6 +61,9 @@ struct Converter<in_app_purchase::Product> {
     dict.Set("price", val.price);
     dict.Set("formattedPrice", val.formattedPrice);
 
+    // Currency Information
+    dict.Set("currencyCode", val.currencyCode);
+
     // Downloadable Content Information
     dict.Set("isDownloadable", val.isDownloadable);
 

+ 3 - 0
shell/browser/mac/in_app_purchase_product.h

@@ -28,6 +28,9 @@ struct Product {
   double price = 0.0;
   std::string formattedPrice;
 
+  // Currency Information
+  std::string currencyCode;
+
   // Downloadable Content Information
   bool isDownloadable = false;
 

+ 8 - 0
shell/browser/mac/in_app_purchase_product.mm

@@ -146,6 +146,14 @@
       productStruct.formattedPrice =
           [[self formatPrice:product.price
                    withLocal:product.priceLocale] UTF8String];
+
+      // Currency Information
+      if (@available(macOS 10.12, *)) {
+        if (product.priceLocale.currencyCode != nil) {
+          productStruct.currencyCode =
+              [product.priceLocale.currencyCode UTF8String];
+        }
+      }
     }
   }