@appboxo/react-native-sdk 1.0.33 → 1.0.35
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 +5 -4
- package/android/build.gradle +4 -4
- package/android/gradle/wrapper/gradle-wrapper.properties +1 -1
- package/android/src/main/java/com/appboxo/RnappboxosdkModule.java +48 -4
- package/index.d.ts +2 -3
- package/index.js +4 -2
- package/ios/Rnappboxosdk.m +83 -22
- package/js/mOpenMiniapp.js +2 -3
- package/js/mSetAuthCode.js +13 -0
- package/js/mSetConfig.js +2 -2
- package/js/paymentEvents.js +36 -0
- package/package.json +3 -3
- package/react-native-appboxosdk.podspec +1 -1
- package/types.ts +1 -0
package/README.md
CHANGED
|
@@ -26,11 +26,11 @@ import { StyleSheet, View, Button } from 'react-native';
|
|
|
26
26
|
export default function App() {
|
|
27
27
|
|
|
28
28
|
React.useEffect(() => {
|
|
29
|
-
appboxo.setConfig('[client_id]', false); //set your Appboxo client_id and specify multitask mode (by default is "true")
|
|
29
|
+
appboxo.setConfig('[client_id]', false, false); //set your Appboxo client_id, sandbox mode (by default is "false") and specify multitask mode (by default is "true")
|
|
30
30
|
}, [])
|
|
31
31
|
|
|
32
32
|
const handleOpenMiniapp = () => {
|
|
33
|
-
appboxo.openMiniapp('[miniapp_id]',
|
|
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 (
|
|
@@ -69,13 +69,14 @@ import { StyleSheet, View, Button } from 'react-native';
|
|
|
69
69
|
export default function App() {
|
|
70
70
|
|
|
71
71
|
React.useEffect(() => {
|
|
72
|
-
appboxo.setConfig('[client_id]', false); //set your Appboxo client_id and specify multitask mode (by default is "true")
|
|
72
|
+
appboxo.setConfig('[client_id]', false, false); //set your Appboxo client_id, sandbox mode and specify multitask mode (by default is "true")
|
|
73
73
|
|
|
74
74
|
const subscription = appboxo.lifecycleHooksListener({
|
|
75
75
|
onLaunch: (appId: string) => console.log('onLaunch', appId), // called when the miniapp will launch with openMiniapp(...)
|
|
76
76
|
onResume: (appId: string) => console.log('onResume', appId), // called when the miniapp will start interacting with the user
|
|
77
77
|
onPause: (appId: string) => console.log('onPause', appId), // called when clicked close button in miniapp or when destroyed miniapp activity
|
|
78
78
|
onClose: (appId: string) => console.log('onClose', appId), // called when the miniapp loses foreground state
|
|
79
|
+
onAuth: (appId: string) => console.log('onAuth', appId), // called when authorization flow starts
|
|
79
80
|
onError: (appId: string, error: string) => console.log('onError', appId, error), // handle error
|
|
80
81
|
});
|
|
81
82
|
|
|
@@ -83,7 +84,7 @@ export default function App() {
|
|
|
83
84
|
}, [])
|
|
84
85
|
|
|
85
86
|
const handleOpenMiniapp = () => {
|
|
86
|
-
appboxo.openMiniapp('[miniapp_id]'
|
|
87
|
+
appboxo.openMiniapp('[miniapp_id]'); //launch miniapp by id
|
|
87
88
|
}
|
|
88
89
|
|
|
89
90
|
return (
|
package/android/build.gradle
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
def DEFAULT_COMPILE_SDK_VERSION =
|
|
1
|
+
def DEFAULT_COMPILE_SDK_VERSION = 33
|
|
2
2
|
def DEFAULT_MIN_SDK_VERSION = 21
|
|
3
|
-
def DEFAULT_TARGET_SDK_VERSION =
|
|
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
|
|
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:
|
|
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.
|
|
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
|
|
|
@@ -63,7 +64,7 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
|
|
|
63
64
|
}
|
|
64
65
|
|
|
65
66
|
@ReactMethod
|
|
66
|
-
public void setConfig(String clientId, boolean enableMultitaskMode, String theme) {
|
|
67
|
+
public void setConfig(String clientId, boolean sandboxMode, boolean enableMultitaskMode, String theme) {
|
|
67
68
|
Config.Theme globalTheme;
|
|
68
69
|
switch (theme) {
|
|
69
70
|
case "light":
|
|
@@ -78,15 +79,17 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
|
|
|
78
79
|
Appboxo.INSTANCE
|
|
79
80
|
.setConfig(new Config.Builder()
|
|
80
81
|
.setClientId(clientId)
|
|
82
|
+
.sandboxMode(sandboxMode)
|
|
81
83
|
.multitaskMode(enableMultitaskMode)
|
|
82
84
|
.setTheme(globalTheme)
|
|
83
85
|
.build());
|
|
84
86
|
}
|
|
85
87
|
|
|
86
88
|
@ReactMethod
|
|
87
|
-
public void openMiniapp(String appId,
|
|
89
|
+
public void openMiniapp(String appId, ReadableMap data, String theme, ReadableMap customUrlParams) {
|
|
88
90
|
Miniapp miniapp = Appboxo.INSTANCE.getMiniapp(appId)
|
|
89
91
|
.setCustomEventListener(this)
|
|
92
|
+
.setAuthListener(this)
|
|
90
93
|
.setLifecycleListener(this);
|
|
91
94
|
|
|
92
95
|
MiniappConfig.Builder configBuilder = new MiniappConfig.Builder();
|
|
@@ -125,6 +128,12 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
|
|
|
125
128
|
miniapp.open(reactContext);
|
|
126
129
|
}
|
|
127
130
|
|
|
131
|
+
@ReactMethod
|
|
132
|
+
public void setAuthCode(String appId, String authCode) {
|
|
133
|
+
Appboxo.INSTANCE.getMiniapp(appId)
|
|
134
|
+
.setAuthCode(authCode);
|
|
135
|
+
}
|
|
136
|
+
|
|
128
137
|
@Override
|
|
129
138
|
public void handle(@NotNull AppboxoActivity appboxoActivity, @NotNull Miniapp miniApp, @NotNull CustomEvent customEvent) {
|
|
130
139
|
WritableMap params = Arguments.createMap();
|
|
@@ -192,8 +201,16 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
|
|
|
192
201
|
sendEvent(MINIAPP_LIFECYCLE_EVENT_NAME, params);
|
|
193
202
|
}
|
|
194
203
|
|
|
204
|
+
@Override
|
|
205
|
+
public void onAuth(@NotNull AppboxoActivity appboxoActivity, @NonNull Miniapp miniapp) {
|
|
206
|
+
WritableMap params = Arguments.createMap();
|
|
207
|
+
params.putString("app_id", miniapp.getAppId());
|
|
208
|
+
params.putString("lifecycle", "onAuth");
|
|
209
|
+
sendEvent(MINIAPP_LIFECYCLE_EVENT_NAME, params);
|
|
210
|
+
}
|
|
211
|
+
|
|
195
212
|
@ReactMethod
|
|
196
|
-
void sendCustomEvent(ReadableMap map) {
|
|
213
|
+
public void sendCustomEvent(ReadableMap map) {
|
|
197
214
|
try {
|
|
198
215
|
String appId = map.getString("app_id");
|
|
199
216
|
ReadableMap customEventMap = map.getMap("custom_event");
|
|
@@ -215,6 +232,33 @@ public class RnappboxosdkModule extends ReactContextBaseJavaModule
|
|
|
215
232
|
}
|
|
216
233
|
}
|
|
217
234
|
|
|
235
|
+
@ReactMethod
|
|
236
|
+
public void sendPaymentEvent(ReadableMap map) {
|
|
237
|
+
try {
|
|
238
|
+
String appId = map.getString("app_id");
|
|
239
|
+
ReadableMap paymentEvent = map.getMap("payment_event");
|
|
240
|
+
final PaymentData data = new PaymentData(
|
|
241
|
+
paymentEvent.getString("transaction_token"),
|
|
242
|
+
paymentEvent.getString("miniapp_order_id"),
|
|
243
|
+
paymentEvent.getDouble("amount"),
|
|
244
|
+
paymentEvent.getString("currency"),
|
|
245
|
+
paymentEvent.getString("status"),
|
|
246
|
+
paymentEvent.getString("hostapp_order_id"),
|
|
247
|
+
MapUtil.toMap(paymentEvent.getMap("extra_params")));
|
|
248
|
+
final Miniapp miniapp = Appboxo.INSTANCE.getMiniapp(appId);
|
|
249
|
+
handler.post(new Runnable() {
|
|
250
|
+
@Override
|
|
251
|
+
public void run() {
|
|
252
|
+
if (miniapp != null) {
|
|
253
|
+
miniapp.sendPaymentResult(data);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
});
|
|
257
|
+
} catch (Exception e) {
|
|
258
|
+
e.printStackTrace();
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
|
|
218
262
|
@ReactMethod
|
|
219
263
|
void hideMiniapps() {
|
|
220
264
|
Appboxo.INSTANCE.hideMiniapps();
|
package/index.d.ts
CHANGED
|
@@ -21,22 +21,21 @@ declare module '@appboxo/react-native-sdk' {
|
|
|
21
21
|
/**
|
|
22
22
|
* Set Appboxo clientId
|
|
23
23
|
* @param {string} clientId Appboxo clientId
|
|
24
|
+
* @param {boolean} sandboxMode (by default false)
|
|
24
25
|
* @param {boolean} enableMultitaskMode Enable multiscreen mode (by default true)
|
|
25
26
|
* @param {'dark' | 'light'} theme Miniapp theme (by default 'system')
|
|
26
27
|
* */
|
|
27
|
-
export function setConfig(clientId: string, enableMultitaskMode?: boolean, theme?: 'dark' | 'light'): void
|
|
28
|
+
export function setConfig(clientId: string, sandboxMode?: boolean, enableMultitaskMode?: boolean, theme?: 'dark' | 'light'): void
|
|
28
29
|
|
|
29
30
|
/**
|
|
30
31
|
* Launch miniapp by id with payload and custom data
|
|
31
32
|
* @param {string} miniAppId Appboxo miniAppId
|
|
32
|
-
* @param {string} payload Appboxo payload for Appboxo miniapp
|
|
33
33
|
* @param {{ data?: object, theme?: 'dark' | 'light' | 'system', extraUrlParams?: object }} options Appboxo options: data for send to miniapp,
|
|
34
34
|
* theme Miniapp theme (by default is value of "theme" argument in setConfig function)
|
|
35
35
|
* */
|
|
36
36
|
|
|
37
37
|
export function openMiniapp(
|
|
38
38
|
miniAppId: string,
|
|
39
|
-
payload: string,
|
|
40
39
|
options?: {
|
|
41
40
|
data?: object,
|
|
42
41
|
theme?: 'dark' | 'light' | 'system',
|
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 }
|
package/ios/Rnappboxosdk.m
CHANGED
|
@@ -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
|
|
@@ -30,7 +31,7 @@ limitations under the License.
|
|
|
30
31
|
RCT_EXPORT_MODULE()
|
|
31
32
|
|
|
32
33
|
|
|
33
|
-
RCT_EXPORT_METHOD(setConfig:(NSString *)clientId multitaskMode:(BOOL)multitaskMode theme:(NSString *)theme)
|
|
34
|
+
RCT_EXPORT_METHOD(setConfig:(NSString *)clientId sandboxMode:(BOOL)sandboxMode multitaskMode:(BOOL)multitaskMode theme:(NSString *)theme)
|
|
34
35
|
{
|
|
35
36
|
NSArray *themes = @[@"dark", @"light", @"system"];
|
|
36
37
|
|
|
@@ -40,13 +41,17 @@ RCT_EXPORT_METHOD(setConfig:(NSString *)clientId multitaskMode:(BOOL)multitaskMo
|
|
|
40
41
|
globalTheme = (Theme) [themes indexOfObject:theme];
|
|
41
42
|
};
|
|
42
43
|
|
|
43
|
-
|
|
44
|
+
Config *config = [[Config alloc] initWithClientId: clientId theme: globalTheme];
|
|
45
|
+
config.sandboxMode = sandboxMode;
|
|
46
|
+
|
|
47
|
+
[[Appboxo shared] setConfig: config];
|
|
44
48
|
}
|
|
45
49
|
|
|
46
|
-
RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId
|
|
50
|
+
RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId data:(nullable NSDictionary<NSString *,id> *)data theme:(nullable NSString *)theme customUrlParams:(nullable NSDictionary<NSString *,id> *)customUrlParams)
|
|
47
51
|
{
|
|
48
52
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
49
|
-
Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId
|
|
53
|
+
Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId];
|
|
54
|
+
[miniapp setData: data];
|
|
50
55
|
[miniapp setDelegate:self];
|
|
51
56
|
|
|
52
57
|
MiniappConfig *miniappConfig = [[MiniappConfig alloc] initWithTheme: ThemeSystem];
|
|
@@ -64,6 +69,14 @@ RCT_EXPORT_METHOD(openMiniapp:(NSString *)appId payload:(NSString *)payload data
|
|
|
64
69
|
});
|
|
65
70
|
}
|
|
66
71
|
|
|
72
|
+
RCT_EXPORT_METHOD(setAuthCode:(NSString *)appId code:(NSString *)code)
|
|
73
|
+
{
|
|
74
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
75
|
+
Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId: appId];
|
|
76
|
+
[miniapp setAuthCode: code];
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
|
|
67
80
|
RCT_EXPORT_METHOD(hideAllMiniApps)
|
|
68
81
|
{
|
|
69
82
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
@@ -82,10 +95,39 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
|
|
|
82
95
|
{
|
|
83
96
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
84
97
|
NSString *appId = params[@"app_id"] != NULL ? params[@"app_id"] : @"";
|
|
85
|
-
NSDictionary *
|
|
98
|
+
NSDictionary<NSString *, id> *customEventParams = params[@"custom_event"];
|
|
99
|
+
|
|
100
|
+
CustomEvent *customEvent = [CustomEvent new];
|
|
101
|
+
customEvent.requestId = customEventParams[@"request_id"] != NULL ? (NSInteger) customEventParams[@"request_id"] : 0;
|
|
102
|
+
customEvent.type = customEventParams[@"type"] != NULL ? (NSString *) customEventParams[@"type"] : @"";
|
|
103
|
+
customEvent.errorType = customEventParams[@"error_type"] != NULL ? (NSString *) customEventParams[@"error_type"] : @"";
|
|
104
|
+
customEvent.payload = customEventParams[@"payload"] != NULL ? (NSDictionary<NSString *, id> *) customEventParams[@"payload"] : NULL;
|
|
105
|
+
|
|
86
106
|
Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId:appId];
|
|
87
107
|
if (miniapp != NULL) {
|
|
88
|
-
[miniapp
|
|
108
|
+
[miniapp sendCustomEvent:customEvent];
|
|
109
|
+
};
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
RCT_EXPORT_METHOD(sendPaymentEvent:(NSDictionary<NSString *,id> * _Nonnull)params)
|
|
114
|
+
{
|
|
115
|
+
dispatch_async(dispatch_get_main_queue(), ^{
|
|
116
|
+
NSString *appId = params[@"app_id"] != NULL ? params[@"app_id"] : @"";
|
|
117
|
+
NSDictionary<NSString *, id> *paymentEventParams = params[@"payment_event"];
|
|
118
|
+
|
|
119
|
+
PaymentData *paymentData = [PaymentData new];
|
|
120
|
+
paymentData.transactionToken = paymentEventParams[@"transaction_token"] != NULL ? (NSString *) paymentEventParams[@"transaction_token"] : @"";
|
|
121
|
+
paymentData.miniappOrderId = paymentEventParams[@"miniapp_order_id"] != NULL ? (NSString *) paymentEventParams[@"miniapp_order_id"] : @"";
|
|
122
|
+
paymentData.amount = paymentEventParams[@"amount"] != NULL ? [paymentEventParams[@"amount"] doubleValue] : 0;
|
|
123
|
+
paymentData.currency = paymentEventParams[@"currency"] != NULL ? (NSString *) paymentEventParams[@"currency"] : @"";
|
|
124
|
+
paymentData.status = paymentEventParams[@"status"] != NULL ? (NSString *) paymentEventParams[@"status"] : @"";
|
|
125
|
+
paymentData.hostappOrderId = paymentEventParams[@"hostapp_order_id"] != NULL ? (NSString *) paymentEventParams[@"hostapp_order_id"] : @"";
|
|
126
|
+
paymentData.extraParams = paymentEventParams[@"extra_params"] != NULL ? (NSDictionary<NSString *, id> *) paymentEventParams[@"extra_params"] : NULL;
|
|
127
|
+
|
|
128
|
+
Miniapp *miniapp = [[Appboxo shared] getMiniappWithAppId:appId];
|
|
129
|
+
if (miniapp != NULL) {
|
|
130
|
+
[miniapp sendPaymentEvent: paymentData];
|
|
89
131
|
};
|
|
90
132
|
});
|
|
91
133
|
}
|
|
@@ -93,35 +135,46 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
|
|
|
93
135
|
|
|
94
136
|
- (NSArray<NSString *> *)supportedEvents
|
|
95
137
|
{
|
|
96
|
-
return @[APPBOXO_CUSTOM_EVENT,APPBOXO_MINIAPP_LIFECYCLE_EVENT];
|
|
138
|
+
return @[APPBOXO_CUSTOM_EVENT, APPBOXO_PAYMENT_EVENT, APPBOXO_MINIAPP_LIFECYCLE_EVENT];
|
|
97
139
|
}
|
|
98
140
|
|
|
99
|
-
- (void)
|
|
100
|
-
|
|
101
|
-
|
|
141
|
+
- (void)didReceiveCustomEvent:(Miniapp *)miniapp customEvent:(CustomEvent *)customEvent {
|
|
142
|
+
NSMutableDictionary *customEventParams = [NSMutableDictionary new];
|
|
143
|
+
customEventParams[@"request_id"] = [NSNumber numberWithLong: customEvent.requestId];
|
|
144
|
+
customEventParams[@"type"] = customEvent.type;
|
|
145
|
+
customEventParams[@"error_type"] = customEvent.errorType;
|
|
102
146
|
|
|
103
|
-
if (
|
|
104
|
-
|
|
147
|
+
if (customEvent.payload) {
|
|
148
|
+
customEventParams[@"payload"] = customEvent.payload;
|
|
105
149
|
}
|
|
106
150
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
151
|
+
NSDictionary *body = @{
|
|
152
|
+
@"app_id": miniapp.appId,
|
|
153
|
+
@"custom_event": customEventParams
|
|
154
|
+
};
|
|
110
155
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
}
|
|
156
|
+
[self sendEventWithName:APPBOXO_CUSTOM_EVENT body:body];
|
|
157
|
+
}
|
|
114
158
|
|
|
115
|
-
|
|
116
|
-
|
|
159
|
+
- (void)didReceivePaymentEvent:(Miniapp *)miniapp paymentData:(PaymentData *)paymentData {
|
|
160
|
+
NSMutableDictionary *paymentEventParams = [NSMutableDictionary new];
|
|
161
|
+
paymentEventParams[@"transaction_token"] = paymentData.transactionToken;
|
|
162
|
+
paymentEventParams[@"miniapp_order_id"] = paymentData.miniappOrderId;
|
|
163
|
+
paymentEventParams[@"amount"] = [NSNumber numberWithDouble:paymentData.amount];
|
|
164
|
+
paymentEventParams[@"currency"] = paymentData.currency;
|
|
165
|
+
paymentEventParams[@"status"] = paymentData.status;
|
|
166
|
+
paymentEventParams[@"hostapp_order_id"] = paymentData.hostappOrderId;
|
|
167
|
+
|
|
168
|
+
if (paymentData.extraParams) {
|
|
169
|
+
paymentEventParams[@"extra_params"] = paymentData.extraParams;
|
|
117
170
|
}
|
|
118
171
|
|
|
119
172
|
NSDictionary *body = @{
|
|
120
173
|
@"app_id": miniapp.appId,
|
|
121
|
-
@"
|
|
174
|
+
@"payment_event": paymentEventParams
|
|
122
175
|
};
|
|
123
176
|
|
|
124
|
-
[self sendEventWithName:
|
|
177
|
+
[self sendEventWithName:APPBOXO_PAYMENT_EVENT body:body];
|
|
125
178
|
}
|
|
126
179
|
|
|
127
180
|
- (void)onLaunchMiniapp:(Miniapp *)miniapp {
|
|
@@ -170,4 +223,12 @@ RCT_EXPORT_METHOD(sendCustomEvent:(NSDictionary<NSString *,id> * _Nonnull)params
|
|
|
170
223
|
[self sendEventWithName:APPBOXO_MINIAPP_LIFECYCLE_EVENT body:body];
|
|
171
224
|
}
|
|
172
225
|
|
|
226
|
+
- (void)onAuthMiniapp:(Miniapp *)miniapp {
|
|
227
|
+
NSDictionary *body = @{
|
|
228
|
+
@"app_id": miniapp.appId,
|
|
229
|
+
@"lifecycle": @"onAuth"
|
|
230
|
+
};
|
|
231
|
+
[self sendEventWithName:APPBOXO_MINIAPP_LIFECYCLE_EVENT body:body];
|
|
232
|
+
}
|
|
233
|
+
|
|
173
234
|
@end
|
package/js/mOpenMiniapp.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { NativeModules } from 'react-native'
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
|
-
* Launch miniapp by id
|
|
4
|
+
* Launch miniapp by id and custom data
|
|
5
5
|
* */
|
|
6
|
-
const mOpenMiniapp = (miniAppId,
|
|
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,
|
package/js/mSetConfig.js
CHANGED
|
@@ -3,8 +3,8 @@ import { NativeModules } from 'react-native'
|
|
|
3
3
|
/**
|
|
4
4
|
* Miniapp theme (by default 'system')
|
|
5
5
|
* */
|
|
6
|
-
const mSetConfig = (clientId, enableMultitaskMode = true, theme = 'system') => {
|
|
7
|
-
NativeModules.Rnappboxosdk.setConfig(clientId, enableMultitaskMode, theme === 'dark' || theme === 'light' ? theme : 'system')
|
|
6
|
+
const mSetConfig = (clientId, sandboxMode = false, enableMultitaskMode = true, theme = 'system') => {
|
|
7
|
+
NativeModules.Rnappboxosdk.setConfig(clientId, sandboxMode, enableMultitaskMode, theme === 'dark' || theme === 'light' ? theme : 'system')
|
|
8
8
|
}
|
|
9
9
|
|
|
10
10
|
export default mSetConfig
|
|
@@ -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.
|
|
4
|
+
"version": "1.0.35",
|
|
5
5
|
"description": "Appboxo react native sdk",
|
|
6
6
|
"main": "index.js",
|
|
7
7
|
"files": [
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"react-native": ">=0.60.0-rc.0 <1.0.x"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"react": "
|
|
43
|
-
"react-native": "0.
|
|
42
|
+
"react": "18.2.0",
|
|
43
|
+
"react-native": "0.72.4"
|
|
44
44
|
}
|
|
45
45
|
}
|
package/types.ts
CHANGED