@@ -2,8 +2,10 @@ package com.reactnativeapphudsdk
22import com.apphud.sdk.Apphud
33import com.apphud.sdk.ApphudAttributionProvider
44import com.apphud.sdk.ApphudUserPropertyKey
5+ import com.apphud.sdk.managers.HeadersInterceptor
56import com.facebook.react.bridge.*
6- import java.lang.Error
7+ import com.facebook.react.modules.core.DeviceEventManagerModule.RCTDeviceEventEmitter
8+
79
810class ApphudSdkModule (reactContext : ReactApplicationContext ) : ReactContextBaseJavaModule(reactContext) {
911
@@ -13,6 +15,18 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
1315 return " ApphudSdk"
1416 }
1517
18+ init {
19+ HeadersInterceptor .X_SDK = " reactnative" ;
20+ HeadersInterceptor .X_SDK_VERSION = " 1.0.7" ;
21+ Apphud .productsFetchCallback {
22+ var arr: WritableNativeArray = WritableNativeArray ();
23+ it.map { s -> arr.pushMap(ApphudDataTransformer .getProductMap(s)) }
24+ reactContext
25+ .getJSModule(RCTDeviceEventEmitter ::class .java)
26+ .emit(" productFetchCallback" , arr);
27+ }
28+ }
29+
1630 @ReactMethod
1731 fun start (options : ReadableMap , promise : Promise ) {
1832
@@ -59,18 +73,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
5973 val subscriptions = Apphud .subscriptions();
6074 val result: WritableNativeArray = WritableNativeArray ();
6175 for (subscription in subscriptions) {
62- val item: WritableNativeMap = WritableNativeMap ();
63- item.putString(" status" , subscription.status.toString());
64- item.putString(" productId" , subscription.productId);
65- item.putString(" expiresAt" , subscription.expiresAt.toString());
66- item.putString(" startedAt" , subscription.startedAt.toString());
67- item.putString(" cancelledAt" , subscription.cancelledAt.toString());
68- item.putBoolean(" isAutoRenewEnabled" , subscription.isAutoRenewEnabled);
69- item.putBoolean(" isInRetryBilling" , subscription.isInRetryBilling);
70- item.putBoolean(" isIntroductoryActivated" , subscription.isIntroductoryActivated);
71- item.putBoolean(" isActive" , subscription.isActive());
72- item.putString(" kind" , subscription.kind.toString());
73- result.pushMap(item)
76+ result.pushMap(ApphudDataTransformer .getSubscriptionMap(subscription));
7477 }
7578 promise.resolve(result);
7679 }
@@ -79,20 +82,9 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
7982 fun purchase (productIdentifier : String , promise : Promise ) {
8083 this .currentActivity?.let {
8184 try {
82- Apphud .purchase(it, productIdentifier ) { res ->
85+ Apphud .purchase(it, productIdentifier) { res ->
8386 val result: WritableNativeArray = WritableNativeArray ();
84- for (purchase in res) {
85- val item: WritableNativeMap = WritableNativeMap ();
86- item.putString(" orderId" , purchase.orderId);
87- item.putString(" originalJson" , purchase.originalJson);
88- item.putString(" packageName" , purchase.packageName);
89- item.putInt(" purchaseState" , purchase.purchaseState);
90- item.putInt(" purchaseTime" , purchase.purchaseTime.toInt());
91- item.putString(" purchaseToken" , purchase.purchaseToken);
92- item.putString(" signature" , purchase.signature);
93- item.putString(" sku" , purchase.sku);
94- result.pushMap(item);
95- }
87+ result.pushMap(ApphudDataTransformer .getPurchaseMap(res));
9688 promise.resolve(result);
9789 }
9890 } catch (error: Error ) {
@@ -135,11 +127,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
135127 val products = Apphud .products();
136128 if (products != null ) {
137129 for (product in products) {
138- val item = WritableNativeMap ();
139- item.putString(" id" , product.sku);
140- item.putString(" price" , product.price);
141- item.putString(" currencyCode" , product.priceCurrencyCode);
142- result.pushMap(item);
130+ result.pushMap(ApphudDataTransformer .getProductMap(product));
143131 }
144132 }
145133 promise.resolve(result);
@@ -150,16 +138,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
150138 val subscription = Apphud .subscription();
151139 val result: WritableNativeMap = WritableNativeMap ();
152140 if (subscription != = null ) {
153- result.putString(" productId" , subscription.productId);
154- result.putString(" expiresAt" , subscription.expiresAt.toString());
155- result.putString(" statedAt" , subscription.startedAt.toString());
156- result.putString(" cancelledAt" , subscription.cancelledAt.toString());
157- result.putBoolean(" isInRetryBilling" , subscription.isInRetryBilling);
158- result.putBoolean(" isAutoRenewEnabled" , subscription.isAutoRenewEnabled);
159- result.putBoolean(" isIntroductoryActivated" , subscription.isIntroductoryActivated);
160- result.putBoolean(" isActive" , subscription.isActive());
161- result.putString(" kind" , subscription.kind.toString());
162- result.putString(" status" , subscription.status.toString());
141+ result.merge(ApphudDataTransformer .getSubscriptionMap(subscription));
163142 }
164143 promise.resolve(result);
165144 }
@@ -168,12 +147,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
168147 fun nonRenewingPurchases (promise : Promise ) {
169148 val result: WritableNativeArray = WritableNativeArray ();
170149 for (purchase in Apphud .nonRenewingPurchases()) {
171- val item: WritableNativeMap = WritableNativeMap ();
172- item.putString(" productId" , purchase.productId);
173- item.putString(" purchasedAt" , purchase.purchasedAt.toString());
174- item.putString(" canceledAt" , purchase.canceledAt.toString());
175- item.putBoolean(" isActive" , purchase.isActive());
176- result.pushMap(item);
150+ result.pushMap(ApphudDataTransformer .getNonRenewingPurchaseMap(purchase));
177151 }
178152 promise.resolve(result);
179153 }
@@ -182,11 +156,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
182156 fun product (productIdentifier : String , promise : Promise ) {
183157 val product = Apphud .product(productIdentifier);
184158 if (product != null ) {
185- val item = WritableNativeMap ();
186- item.putString(" id" , product.sku);
187- item.putString(" price" , product.price);
188- item.putString(" currencyCode" , product.priceCurrencyCode);
189- promise.resolve(item);
159+ promise.resolve(ApphudDataTransformer .getProductMap(product));
190160 } else {
191161 promise.reject(" product" , " product not found" );
192162 }
@@ -200,7 +170,7 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
200170 }
201171
202172 @ReactMethod
203- fun setUserProperty (key : String , value : String , setOnce : Boolean , promise : Promise ) {
173+ fun setUserProperty (key : String , value : String , setOnce : Boolean , promise : Promise ) {
204174 val label = getUserPropertyKey(key);
205175 Apphud .setUserProperty(label, value, setOnce);
206176 promise.resolve(true );
@@ -215,7 +185,23 @@ class ApphudSdkModule(reactContext: ReactApplicationContext) : ReactContextBaseJ
215185
216186 @ReactMethod
217187 fun restorePurchases (promise : Promise ) {
218- promise.reject(this .unSupportMethodMsg);
188+ Apphud .restorePurchases { apphudSubscriptionList, apphudNonRenewingPurchaseList, error ->
189+ val resultMap: WritableNativeMap = WritableNativeMap ();
190+ apphudSubscriptionList.let {
191+ val arr: WritableNativeArray = WritableNativeArray ();
192+ it?.map { obj -> arr.pushMap(ApphudDataTransformer .getSubscriptionMap(obj)) }
193+ resultMap.putArray(" subscriptions" , arr);
194+ }
195+ apphudNonRenewingPurchaseList.let {
196+ val arr: WritableNativeArray = WritableNativeArray ();
197+ it?.map { obj -> arr.pushMap(ApphudDataTransformer .getNonRenewingPurchaseMap(obj)) }
198+ resultMap.putArray(" nonRenewingPurchases" , arr);
199+ }
200+ error.let {
201+ resultMap.putString(" error" , it?.message)
202+ }
203+ promise.resolve(resultMap);
204+ }
219205 }
220206
221207 private fun getUserPropertyKey (key : String ): ApphudUserPropertyKey {
0 commit comments