diff --git a/plugin/plugin.xml b/plugin/plugin.xml index 5fd3087..e66de1f 100644 --- a/plugin/plugin.xml +++ b/plugin/plugin.xml @@ -57,7 +57,7 @@ - + @@ -75,7 +75,7 @@ - + diff --git a/plugin/src/android/QonversionPlugin.java b/plugin/src/android/QonversionPlugin.java index 6d780a3..8684722 100644 --- a/plugin/src/android/QonversionPlugin.java +++ b/plugin/src/android/QonversionPlugin.java @@ -90,7 +90,10 @@ public void purchase( CallbackContext callbackContext ) { try { - List contextKeysList = EntitiesConverter.convertArrayToStringList(contextKeys); + List contextKeysList = contextKeys == null + ? null + : EntitiesConverter.convertArrayToStringList(contextKeys); + qonversionSandwich.purchase( productId, offerId, diff --git a/plugin/src/plugin/QonversionApi.ts b/plugin/src/plugin/QonversionApi.ts index 6d3c796..85b6208 100644 --- a/plugin/src/plugin/QonversionApi.ts +++ b/plugin/src/plugin/QonversionApi.ts @@ -35,7 +35,7 @@ export interface QonversionApi { * * @see [Making Purchases](https://documentation.qonversion.io/docs/making-purchases) */ - purchaseProduct(product: Product, options: PurchaseOptions): Promise> + purchaseProduct(product: Product, options: PurchaseOptions | undefined): Promise> /** * Make a purchase and validate it through server-to-server using Qonversion's Backend. diff --git a/plugin/src/plugin/QonversionInternal.ts b/plugin/src/plugin/QonversionInternal.ts index 8332d97..c32b434 100644 --- a/plugin/src/plugin/QonversionInternal.ts +++ b/plugin/src/plugin/QonversionInternal.ts @@ -25,7 +25,8 @@ import {RemoteConfigList} from "./RemoteConfigList"; import {UserProperties} from './UserProperties'; import {PurchaseModel} from './PurchaseModel'; import {PurchaseUpdateModel} from './PurchaseUpdateModel'; -import {PurchaseOptions} from "./PurchaseOptions";; +import {PurchaseOptions} from "./PurchaseOptions"; +import {PurchaseOptionsBuilder} from './PurchaseOptionsBuilder'; const sdkVersion = "6.1.0"; @@ -63,8 +64,12 @@ export default class QonversionInternal implements QonversionApi { } } - async purchaseProduct(product: Product, options: PurchaseOptions): Promise> { + async purchaseProduct(product: Product, options: PurchaseOptions | undefined): Promise> { try { + if (!options) { + options = new PurchaseOptionsBuilder().build(); + } + let args: any[] = [product.qonversionID] if (isIos()) { args = [...args, options.quantity, options.contextKeys]; diff --git a/sample/www/js/index.js b/sample/www/js/index.js index 9b1be45..eae1166 100644 --- a/sample/www/js/index.js +++ b/sample/www/js/index.js @@ -78,8 +78,8 @@ const app = { const products = await Qonversion.getSharedInstance().products(); const product = products.get(productId); try { - const purchaseModel = product.toPurchaseModel(offerId); - const entitlements = await Qonversion.getSharedInstance().purchase(purchaseModel); + const purchaseOptions = !!offerId ? new Qonversion.PurchaseOptionsBuilder().setOfferId(offerId) : undefined; + const entitlements = await Qonversion.getSharedInstance().purchaseProduct(product, purchaseOptions); console.log('Qonversion purchase:', entitlements, productId); } catch (e) { console.log('Qonversion purchase failed', e); diff --git a/sample/yarn.lock b/sample/yarn.lock index e5dab6e..7609366 100644 --- a/sample/yarn.lock +++ b/sample/yarn.lock @@ -184,7 +184,7 @@ cordova-plugin-device@^3.0.0: integrity sha512-g8fFYOvleeYpklWvHwZ/T8/IzJe/3O0MGVDIUoqBru4v8SNDAbNVD3oOqoOQANBWGFQMg7GIkAAl8errCHZ7zQ== "cordova-plugin-qonversion@file:../plugin": - version "6.0.1" + version "6.1.0" resolved "file:../plugin" cross-spawn@^7.0.1, cross-spawn@^7.0.3: @@ -276,7 +276,17 @@ fs-extra@^10.1.0: jsonfile "^6.0.1" universalify "^2.0.0" -fs-extra@^9.0.0, fs-extra@^9.1.0: +fs-extra@^9.0.0: + version "9.1.0" + resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" + integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^2.0.0" + +fs-extra@^9.1.0: version "9.1.0" resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz" integrity sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ== @@ -365,10 +375,10 @@ ios-sim@^8.0.2: plist "^3.0.1" simctl "^2" -is-core-module@^2.11.0: - version "2.12.1" - resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.12.1.tgz" - integrity sha512-Q4ZuBAe2FUsKtyQJoQHlvP8OvBERxO3jEmy1I7hcRXcJBGGHFh/aJBswbXuS9sgrDH2QUO8ilkwNPHvHMd8clg== +is-core-module@^2.13.0: + version "2.13.0" + resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.0.tgz" + integrity sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ== dependencies: has "^1.0.3" @@ -571,11 +581,11 @@ rechoir@^0.6.2: resolve "^1.1.6" resolve@^1.1.6: - version "1.22.2" - resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.2.tgz" - integrity sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g== + version "1.22.4" + resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.4.tgz" + integrity sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg== dependencies: - is-core-module "^2.11.0" + is-core-module "^2.13.0" path-parse "^1.0.7" supports-preserve-symlinks-flag "^1.0.0"