-
Notifications
You must be signed in to change notification settings - Fork 1
/
RnLoginSdkModule.java
88 lines (71 loc) · 2.46 KB
/
RnLoginSdkModule.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package com.rnloginsdk;
import androidx.annotation.NonNull;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactMethod;
// For Flutter Integration
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.module.annotations.ReactModule;
import io.flutter.embedding.android.FlutterActivity;
import io.flutter.embedding.engine.FlutterEngine;
import io.flutter.embedding.engine.FlutterEngineCache;
import io.flutter.embedding.engine.dart.DartExecutor;
import android.app.Activity;
public class RnLoginSdkModule extends RnLoginSdkSpec {
public static final String NAME = "RnLoginSdk";
// For Flutter Integration
private final ReactApplicationContext reactContext;
public FlutterEngine flutterEngine;
RnLoginSdkModule(ReactApplicationContext context) {
super(context);
this.reactContext = context;
new Thread(new Runnable() {
@Override
public void run() {
try {
//dummy delay
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
//update ui on UI thread
reactContext.getCurrentActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
// Instantiate a FlutterEngine.
flutterEngine = new FlutterEngine(reactContext.getApplicationContext());
// Start executing Dart code to pre-warm the FlutterEngine.
flutterEngine.getDartExecutor().executeDartEntrypoint(
DartExecutor.DartEntrypoint.createDefault()
);
// Cache the FlutterEngine to be used by FlutterActivity.
FlutterEngineCache
.getInstance()
.put(NAME, flutterEngine);
}
});
}
}).start();
}
@Override
@NonNull
public String getName() {
return NAME;
}
// Example method
// See https://reactnative.dev/docs/native-modules-android
@ReactMethod
public void multiply(double a, double b, Promise promise) {
promise.resolve(a * b);
}
// For Flutter Integration
@ReactMethod
public void openLoginSdk() {
Activity currentActivity = reactContext.getCurrentActivity();
currentActivity.startActivity(
FlutterActivity
.withCachedEngine(NAME)
.build(currentActivity)
);
}
}