@appboxo/react-native-sdk 1.0.32 → 1.0.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -30,7 +30,7 @@ export default function App() {
30
30
  }, [])
31
31
 
32
32
  const handleOpenMiniapp = () => {
33
- appboxo.openMiniapp('[miniapp_id]', '[auth_payload]', {'key': 'value'}); //launch miniapp by id with auth payload and with data as {[key: string]: any} | undefined that is sent to miniapp.
33
+ appboxo.openMiniapp('[miniapp_id]', {'key': 'value'}); //launch miniapp by id with data as {[key: string]: any} | undefined that is sent to miniapp.
34
34
  }
35
35
 
36
36
  return (
@@ -83,7 +83,7 @@ export default function App() {
83
83
  }, [])
84
84
 
85
85
  const handleOpenMiniapp = () => {
86
- appboxo.openMiniapp('[miniapp_id]', '[auth_payload]'); //launch miniapp by id with auth payload.
86
+ appboxo.openMiniapp('[miniapp_id]'); //launch miniapp by id
87
87
  }
88
88
 
89
89
  return (
@@ -1,6 +1,6 @@
1
- def DEFAULT_COMPILE_SDK_VERSION = 30
1
+ def DEFAULT_COMPILE_SDK_VERSION = 33
2
2
  def DEFAULT_MIN_SDK_VERSION = 21
3
- def DEFAULT_TARGET_SDK_VERSION = 30
3
+ def DEFAULT_TARGET_SDK_VERSION = 33
4
4
 
5
5
  def safeExtGet(prop, fallback) {
6
6
  rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
@@ -12,7 +12,7 @@ buildscript {
12
12
  jcenter()
13
13
  }
14
14
  dependencies {
15
- classpath 'com.android.tools.build:gradle:7.1.3'
15
+ classpath "com.android.tools.build:gradle:7.4.2"
16
16
  }
17
17
  }
18
18
 
@@ -127,5 +127,5 @@ rootProject.allprojects {
127
127
  dependencies {
128
128
  //noinspection GradleDynamicVersion
129
129
  implementation 'com.facebook.react:react-native:+' // From node_modules
130
- implementation 'com.appboxo:miniapp-sdk:1.4.13'
130
+ implementation 'com.appboxo:sdk:1.4.19'
131
131
  }
@@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
3
3
  distributionPath=wrapper/dists
4
4
  zipStoreBase=GRADLE_USER_HOME
5
5
  zipStorePath=wrapper/dists
6
- distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-all.zip
6
+ distributionUrl=https\://services.gradle.org/distributions/gradle-7.5-all.zip
@@ -23,6 +23,7 @@ import android.os.Looper;
23
23
  import androidx.annotation.NonNull;
24
24
 
25
25
  import com.appboxo.js.params.CustomEvent;
26
+ import com.appboxo.js.params.PaymentData;
26
27
  import com.appboxo.sdk.Appboxo;
27
28
  import com.appboxo.sdk.Config;
28
29
  import com.appboxo.sdk.Miniapp;
@@ -43,7 +44,7 @@ import java.util.HashMap;
43
44
  import java.util.Map;
44
45
 
45
46
  public class RnappboxosdkModule extends ReactContextBaseJavaModule
46
- implements Miniapp.LifecycleListener, Miniapp.CustomEventListener {
47
+ implements Miniapp.LifecycleListener, Miniapp.CustomEventListener, Miniapp.AuthListener {
47
48
  private static final String CUSTOM_EVENTS_EVENT_NAME = "appboxo_custom_events";
48
49
  private static final String MINIAPP_LIFECYCLE_EVENT_NAME = "appboxo_miniapp_lifecycle";
49
50
 
@@ -84,9 +85,10 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
84
85
  }
85
86
 
86
87
  @ReactMethod
87
- public void openMiniapp(String appId, String payload, ReadableMap data, String theme, ReadableMap customUrlParams) {
88
+ public void openMiniapp(String appId, ReadableMap data, String theme, ReadableMap customUrlParams) {
88
89
  Miniapp miniapp = Appboxo.INSTANCE.getMiniapp(appId)
89
90
  .setCustomEventListener(this)
91
+ .setAuthListener(this)
90
92
  .setLifecycleListener(this);
91
93
 
92
94
  MiniappConfig.Builder configBuilder = new MiniappConfig.Builder();
@@ -125,6 +127,12 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
125
127
  miniapp.open(reactContext);
126
128
  }
127
129
 
130
+ @ReactMethod
131
+ public void setAuthCode(String appId, String authCode) {
132
+ Appboxo.INSTANCE.getMiniapp(appId)
133
+ .setAuthCode(authCode);
134
+ }
135
+
128
136
  @Override
129
137
  public void handle(@NotNull AppboxoActivity appboxoActivity, @NotNull Miniapp miniApp, @NotNull CustomEvent customEvent) {
130
138
  WritableMap params = Arguments.createMap();
@@ -192,8 +200,16 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
192
200
  sendEvent(MINIAPP_LIFECYCLE_EVENT_NAME, params);
193
201
  }
194
202
 
203
+ @Override
204
+ public void onAuth(@NotNull AppboxoActivity appboxoActivity, @NonNull Miniapp miniapp) {
205
+ WritableMap params = Arguments.createMap();
206
+ params.putString("app_id", miniapp.getAppId());
207
+ params.putString("lifecycle", "onAuth");
208
+ sendEvent(MINIAPP_LIFECYCLE_EVENT_NAME, params);
209
+ }
210
+
195
211
  @ReactMethod
196
- void sendCustomEvent(ReadableMap map) {
212
+ public void sendCustomEvent(ReadableMap map) {
197
213
  try {
198
214
  String appId = map.getString("app_id");
199
215
  ReadableMap customEventMap = map.getMap("custom_event");
@@ -215,6 +231,33 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
215
231
  }
216
232
  }
217
233
 
234
+ @ReactMethod
235
+ public void sendPaymentEvent(ReadableMap map) {
236
+ try {
237
+ String appId = map.getString("app_id");
238
+ ReadableMap paymentEvent = map.getMap("payment_event");
239
+ final PaymentData data = new PaymentData(
240
+ paymentEvent.getString("transaction_token"),
241
+ paymentEvent.getString("miniapp_order_id"),
242
+ paymentEvent.getDouble("amount"),
243
+ paymentEvent.getString("currency"),
244
+ paymentEvent.getString("status"),
245
+ paymentEvent.getString("hostapp_order_id"),
246
+ MapUtil.toMap(paymentEvent.getMap("extra_params")));
247
+ final Miniapp miniapp = Appboxo.INSTANCE.getMiniapp(appId);
248
+ handler.post(new Runnable() {
249
+ @Override
250
+ public void run() {
251
+ if (miniapp != null) {
252
+ miniapp.sendPaymentResult(data);
253
+ }
254
+ }
255
+ });
256
+ } catch (Exception e) {
257
+ e.printStackTrace();
258
+ }
259
+ }
260
+
218
261
  @ReactMethod
219
262
  void hideMiniapps() {
220
263
  Appboxo.INSTANCE.hideMiniapps();
package/index.js CHANGED
@@ -20,7 +20,9 @@ import lifecycleHooksListener from './js/lifecycleHooks'
20
20
  import customEvents from './js/customEvents'
21
21
  import mOpenMiniapp from './js/mOpenMiniapp'
22
22
  import mSetConfig from './js/mSetConfig'
23
+ import mSetAuthCode from './js/mSetAuthCode'
24
+ import paymentEvents from './js/paymentEvents'
23
25
 
24
- const { Rnappboxosdk: { sendCustomEvent, openMiniapp, setConfig, ...methods } } = NativeModules
26
+ const { Rnappboxosdk: { sendCustomEvent, sendPaymentEvent, openMiniapp, setConfig, ...methods } } = NativeModules
25
27
 
26
- export default { ...methods, lifecycleHooksListener, openMiniapp: mOpenMiniapp, setConfig: mSetConfig, customEvents }
28
+ export default { ...methods, lifecycleHooksListener, openMiniapp: mOpenMiniapp, setConfig: mSetConfig, customEvents, paymentEvents }
@@ -23,6 +23,7 @@ limitations under the License.
23
23
  @end
24
24
 
25
25
  #define APPBOXO_CUSTOM_EVENT @"appboxo_custom_events"
26
+ #define APPBOXO_PAYMENT_EVENT @"appboxo_payment_events"
26
27
  #define APPBOXO_MINIAPP_LIFECYCLE_EVENT @"appboxo_miniapp_lifecycle"
27
28
 
28
29
  @implementation Rnappboxosdk
@@ -43,10 +44,11 @@ RCT_EXPORT_METHOD(setConfig:(NSString *)clientId multitaskMode:(BOOL)multitaskMo
43
44
  [[Appboxo shared] setConfig: [[Config alloc] initWithClientId: clientId theme: globalTheme]];
44
45
  }
45
46
 
46
- RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId payload:(NSString *)payload data:(nullable NSDictionary<NSString *,id> *)data theme:(nullable NSString *)theme customUrlParams:(nullable NSDictionary<NSString *,id> *)customUrlParams)
47
+ RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId data:(nullable NSDictionary<NSString *,id> *)data theme:(nullable NSString *)theme customUrlParams:(nullable NSDictionary<NSString *,id> *)customUrlParams)
47
48
  {
48
49
  dispatch_async(dispatch_get_main_queue(), ^{
49
- Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId authPayload: payload data: data];
50
+ Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId];
51
+ [miniapp setData: data];
50
52
  [miniapp setDelegate:self];
51
53
 
52
54
  MiniappConfig *miniappConfig = [[MiniappConfig alloc] initWithTheme: ThemeSystem];
@@ -64,6 +66,14 @@ RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId payload:(NSString *)payload data
64
66
  });
65
67
  }
66
68
 
69
+ RCT_EXPORT_METHOD(setAuthCode:(NSString *)appId code:(NSString *)code)
70
+ {
71
+ dispatch_async(dispatch_get_main_queue(), ^{
72
+ Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId];
73
+ [miniapp setAuthCode: code];
74
+ });
75
+ }
76
+
67
77
  RCT_EXPORT_METHOD(hideAllMiniApps)
68
78
  {
69
79
  dispatch_async(dispatch_get_main_queue(), ^{
@@ -82,10 +92,39 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
82
92
  {
83
93
  dispatch_async(dispatch_get_main_queue(), ^{
84
94
  NSString *appId = params[@"app_id"] != NULL ? params[@"app_id"] : @"";
85
- NSDictionary *customEvent = params[@"custom_event"] != NULL ? params[@"custom_event"] : @{};
95
+ NSDictionary<NSString *, id> *customEventParams = params[@"custom_event"];
96
+
97
+ CustomEvent *customEvent = [CustomEvent new];
98
+ customEvent.requestId = customEventParams[@"request_id"] != NULL ? (NSInteger) customEventParams[@"request_id"] : 0;
99
+ customEvent.type = customEventParams[@"type"] != NULL ? (NSString *) customEventParams[@"type"] : @"";
100
+ customEvent.errorType = customEventParams[@"error_type"] != NULL ? (NSString *) customEventParams[@"error_type"] : @"";
101
+ customEvent.payload = customEventParams[@"payload"] != NULL ? (NSDictionary<NSString *, id> *) customEventParams[@"payload"] : NULL;
102
+
86
103
  Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId:appId];
87
104
  if (miniapp != NULL) {
88
- [miniapp sendCustomEventWithParams:customEvent];
105
+ [miniapp sendCustomEvent:customEvent];
106
+ };
107
+ });
108
+ }
109
+
110
+ RCT_EXPORT_METHOD(sendPaymentEvent:(NSDictionary<NSString *,id> * _Nonnull)params)
111
+ {
112
+ dispatch_async(dispatch_get_main_queue(), ^{
113
+ NSString *appId = params[@"app_id"] != NULL ? params[@"app_id"] : @"";
114
+ NSDictionary<NSString *, id> *paymentEventParams = params[@"payment_event"];
115
+
116
+ PaymentData *paymentData = [PaymentData new];
117
+ paymentData.transactionToken = paymentEventParams[@"transaction_token"] != NULL ? (NSString *) paymentEventParams[@"transaction_token"] : @"";
118
+ paymentData.miniappOrderId = paymentEventParams[@"miniapp_order_id"] != NULL ? (NSString *) paymentEventParams[@"miniapp_order_id"] : @"";
119
+ paymentData.amount = paymentEventParams[@"amount"] != NULL ? [paymentEventParams[@"amount"] doubleValue] : 0;
120
+ paymentData.currency = paymentEventParams[@"currency"] != NULL ? (NSString *) paymentEventParams[@"currency"] : @"";
121
+ paymentData.status = paymentEventParams[@"status"] != NULL ? (NSString *) paymentEventParams[@"status"] : @"";
122
+ paymentData.hostappOrderId = paymentEventParams[@"hostapp_order_id"] != NULL ? (NSString *) paymentEventParams[@"hostapp_order_id"] : @"";
123
+ paymentData.extraParams = paymentEventParams[@"extra_params"] != NULL ? (NSDictionary<NSString *, id> *) paymentEventParams[@"extra_params"] : NULL;
124
+
125
+ Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId:appId];
126
+ if (miniapp != NULL) {
127
+ [miniapp sendPaymentEvent: paymentData];
89
128
  };
90
129
  });
91
130
  }
@@ -93,35 +132,46 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
93
132
 
94
133
  - (NSArray<NSString *> *)supportedEvents
95
134
  {
96
- return @[APPBOXO_CUSTOM_EVENT,APPBOXO_MINIAPP_LIFECYCLE_EVENT];
135
+ return @[APPBOXO_CUSTOM_EVENT, APPBOXO_PAYMENT_EVENT, APPBOXO_MINIAPP_LIFECYCLE_EVENT];
97
136
  }
98
137
 
99
- - (void)didReceiveCustomEventWithMiniapp:(Miniapp * _Nonnull)miniapp params:(NSDictionary<NSString *,id> * _Nonnull)params {
100
-
101
- NSMutableDictionary *customEvent = [NSMutableDictionary new];
138
+ - (void)didReceiveCustomEvent:(Miniapp *)miniapp customEvent:(CustomEvent *)customEvent {
139
+ NSMutableDictionary *customEventParams = [NSMutableDictionary new];
140
+ customEventParams[@"request_id"] = [NSNumber numberWithLong: customEvent.requestId];
141
+ customEventParams[@"type"] = customEvent.type;
142
+ customEventParams[@"error_type"] = customEvent.errorType;
102
143
 
103
- if (params[@"request_id"]) {
104
- customEvent[@"request_id"] = params[@"request_id"];
144
+ if (customEvent.payload) {
145
+ customEventParams[@"payload"] = customEvent.payload;
105
146
  }
106
147
 
107
- if (params[@"type"]) {
108
- customEvent[@"type"] = params[@"type"];
109
- }
148
+ NSDictionary *body = @{
149
+ @"app_id": miniapp.appId,
150
+ @"custom_event": customEventParams
151
+ };
110
152
 
111
- if (params[@"error_type"]) {
112
- customEvent[@"error_type"] = params[@"error_type"];
113
- }
153
+ [self sendEventWithName:APPBOXO_CUSTOM_EVENT body:body];
154
+ }
114
155
 
115
- if (params[@"payload"]) {
116
- customEvent[@"payload"] = params[@"payload"];
156
+ - (void)didReceivePaymentEvent:(Miniapp *)miniapp paymentData:(PaymentData *)paymentData {
157
+ NSMutableDictionary *paymentEventParams = [NSMutableDictionary new];
158
+ paymentEventParams[@"transaction_token"] = paymentData.transactionToken;
159
+ paymentEventParams[@"miniapp_order_id"] = paymentData.miniappOrderId;
160
+ paymentEventParams[@"amount"] = [NSNumber numberWithDouble:paymentData.amount];
161
+ paymentEventParams[@"currency"] = paymentData.currency;
162
+ paymentEventParams[@"status"] = paymentData.status;
163
+ paymentEventParams[@"hostapp_order_id"] = paymentData.hostappOrderId;
164
+
165
+ if (paymentData.extraParams) {
166
+ paymentEventParams[@"extra_params"] = paymentData.extraParams;
117
167
  }
118
168
 
119
169
  NSDictionary *body = @{
120
170
  @"app_id": miniapp.appId,
121
- @"custom_event": customEvent
171
+ @"payment_event": paymentEventParams
122
172
  };
123
173
 
124
- [self sendEventWithName:APPBOXO_CUSTOM_EVENT body:body];
174
+ [self sendEventWithName:APPBOXO_PAYMENT_EVENT body:body];
125
175
  }
126
176
 
127
177
  - (void)onLaunchMiniapp:(Miniapp *)miniapp {
@@ -170,4 +220,12 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
170
220
  [self sendEventWithName:APPBOXO_MINIAPP_LIFECYCLE_EVENT body:body];
171
221
  }
172
222
 
223
+ - (void)onAuthMiniapp:(Miniapp *)miniapp {
224
+ NSDictionary *body = @{
225
+ @"app_id": miniapp.appId,
226
+ @"lifecycle": @"onAuth"
227
+ };
228
+ [self sendEventWithName:APPBOXO_MINIAPP_LIFECYCLE_EVENT body:body];
229
+ }
230
+
173
231
  @end
@@ -1,12 +1,11 @@
1
1
  import { NativeModules } from 'react-native'
2
2
 
3
3
  /**
4
- * Launch miniapp by id with payload and custom data
4
+ * Launch miniapp by id and custom data
5
5
  * */
6
- const mOpenMiniapp = (miniAppId, payload, options) => {
6
+ const mOpenMiniapp = (miniAppId, options) => {
7
7
  NativeModules.Rnappboxosdk.openMiniapp(
8
8
  miniAppId,
9
- payload,
10
9
  options?.data,
11
10
  options?.theme === 'dark' || options?.theme === 'light' || options?.theme === 'system' ? options.theme : null,
12
11
  options?.extraUrlParams,
@@ -0,0 +1,13 @@
1
+ import { NativeModules } from 'react-native'
2
+
3
+ /**
4
+ * Set auth code
5
+ * */
6
+ const mAuthCode = (miniAppId, authCode) => {
7
+ NativeModules.Rnappboxosdk.setAuthCode(
8
+ miniAppId,
9
+ authCode,
10
+ )
11
+ }
12
+
13
+ export default mAuthCode
@@ -0,0 +1,36 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native'
2
+
3
+ /**
4
+ * Appboxo custom events system for handle events from miniapp and send to miniapp.
5
+ * */
6
+ const paymentEvents = {
7
+
8
+ /**
9
+ * Subscribe to events from miniapp
10
+ * @param {function} eventHandler the custom event handler
11
+ * @param {function} errorHandler the custom event error handler
12
+ * @returns {function} unsubscribe events from miniapp
13
+ * */
14
+ subscribe: (eventHandler) => {
15
+ const appboxoPaymentEventEmitter = new NativeEventEmitter(NativeModules.Rnappboxosdk)
16
+ const appboxoEventListener =
17
+ appboxoPaymentEventEmitter.addListener('appboxo_payment_events', event => {
18
+ if (event.payment_event && event.app_id) {
19
+ eventHandler(event)
20
+ }
21
+ }
22
+ )
23
+ return () => appboxoEventListener.remove()
24
+ },
25
+
26
+ /**
27
+ * Send events to miniapp
28
+ * @param {AppboxoPaymentEvent} event to send to miniapp
29
+ * */
30
+ send: (event) => {
31
+ const { Rnappboxosdk: { sendPaymentEvent } } = NativeModules
32
+ sendPaymentEvent(event)
33
+ },
34
+ }
35
+
36
+ export default paymentEvents
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@appboxo/react-native-sdk",
3
3
  "title": "Appboxo react native sdk",
4
- "version": "1.0.32",
4
+ "version": "1.0.34",
5
5
  "description": "Appboxo react native sdk",
6
6
  "main": "index.js",
7
7
  "files": [
@@ -35,11 +35,11 @@
35
35
  "license": "Apache-2.0",
36
36
  "readmeFilename": "README.md",
37
37
  "peerDependencies": {
38
- "react": "^16.8.1",
38
+ "react": ">=16.8.1 <= 18.2.0",
39
39
  "react-native": ">=0.60.0-rc.0 <1.0.x"
40
40
  },
41
41
  "devDependencies": {
42
- "react": "^16.9.0",
43
- "react-native": "^0.61.5"
42
+ "react": "18.2.0",
43
+ "react-native": "0.72.4"
44
44
  }
45
45
  }
@@ -22,7 +22,7 @@ Pod::Spec.new do |s|
22
22
  s.requires_arc = true
23
23
 
24
24
  s.dependency "React"
25
- s.dependency 'AppBoxoSDK', '1.3.37'
25
+ s.dependency 'AppBoxoSDK', '1.4.12'
26
26
  # ...
27
27
  # s.dependency "..."
28
28
  end