mirror of
https://github.com/status-im/react-native-webview-bridge.git
synced 2026-08-30 21:01:12 +00:00
CallRPC in Function<> object
This commit is contained in:
@@ -11,18 +11,23 @@ buildscript {
|
||||
apply plugin: 'com.android.library'
|
||||
|
||||
android {
|
||||
compileSdkVersion 23
|
||||
buildToolsVersion "23.0.1"
|
||||
compileSdkVersion 24
|
||||
buildToolsVersion "23.0.2"
|
||||
|
||||
defaultConfig {
|
||||
minSdkVersion 16
|
||||
targetSdkVersion 23
|
||||
targetSdkVersion 24
|
||||
versionCode 1
|
||||
versionName "1.0"
|
||||
}
|
||||
lintOptions {
|
||||
abortOnError false
|
||||
}
|
||||
|
||||
compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
}
|
||||
|
||||
repositories {
|
||||
@@ -31,5 +36,4 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
compile 'com.facebook.react:react-native:+'
|
||||
compile(group: 'status-im', name: 'status-go', version: '+', ext: 'aar')
|
||||
}
|
||||
|
||||
@@ -5,15 +5,18 @@ import android.webkit.WebView;
|
||||
import android.app.Activity;
|
||||
|
||||
import com.facebook.react.uimanager.ThemedReactContext;
|
||||
import com.github.status_im.status_go.cmd.Statusgo;
|
||||
|
||||
import java.util.function.Function;
|
||||
|
||||
class StatusBridge {
|
||||
private WebView webView;
|
||||
private ThemedReactContext context;
|
||||
private Function<String, String> callRPC;
|
||||
|
||||
public StatusBridge(ThemedReactContext context, WebView webView) {
|
||||
public StatusBridge(ThemedReactContext context, WebView webView, Function<String, String> callRPC) {
|
||||
this.context = context;
|
||||
this.webView = webView;
|
||||
this.callRPC = callRPC;
|
||||
}
|
||||
|
||||
@JavascriptInterface
|
||||
@@ -21,7 +24,7 @@ class StatusBridge {
|
||||
Thread thread = new Thread() {
|
||||
@Override
|
||||
public void run() {
|
||||
String rpcResponse = Statusgo.CallRPC(json).trim();
|
||||
String rpcResponse = callRPC.apply(json).trim();
|
||||
|
||||
final String script = "httpCallback('" + callbackId + "','" + rpcResponse + "');";
|
||||
final Activity activity = context.getCurrentActivity();
|
||||
@@ -38,7 +41,7 @@ class StatusBridge {
|
||||
|
||||
@JavascriptInterface
|
||||
public String sendRequestSync(final String host, final String json) {
|
||||
return Statusgo.CallRPC(json);
|
||||
return this.callRPC.apply(json);
|
||||
}
|
||||
|
||||
static private void evaluateJavascript(WebView root, String javascript) {
|
||||
|
||||
+5
-2
@@ -36,6 +36,7 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.nio.charset.Charset;
|
||||
import java.util.Map;
|
||||
import java.util.function.Function;
|
||||
|
||||
import static okhttp3.internal.Util.UTF_8;
|
||||
|
||||
@@ -53,10 +54,12 @@ public class WebViewBridgeManager extends ReactWebViewManager {
|
||||
private static ReactApplicationContext reactNativeContext;
|
||||
private OkHttpClient client;
|
||||
private static boolean debug;
|
||||
Function<String, String> callRPC;
|
||||
|
||||
public WebViewBridgeManager(ReactApplicationContext context, boolean debug) {
|
||||
public WebViewBridgeManager(ReactApplicationContext context, boolean debug, Function<String, String> callRPC) {
|
||||
this.reactNativeContext = context;
|
||||
this.debug = debug;
|
||||
this.callRPC = callRPC;
|
||||
Builder b = new Builder();
|
||||
client = b
|
||||
.followRedirects(false)
|
||||
@@ -140,7 +143,7 @@ public class WebViewBridgeManager extends ReactWebViewManager {
|
||||
webView.setWebChromeClient(client);
|
||||
webView.setWebViewClient(new ReactWebViewClient());
|
||||
webView.addJavascriptInterface(new JavascriptBridge(webView), "WebViewBridge");
|
||||
StatusBridge bridge = new StatusBridge(reactContext, webView);
|
||||
StatusBridge bridge = new StatusBridge(reactContext, webView, this.callRPC);
|
||||
webView.addJavascriptInterface(bridge, "StatusBridge");
|
||||
webView.setStatusBridge(bridge);
|
||||
|
||||
|
||||
+5
-2
@@ -9,13 +9,16 @@ import com.facebook.react.uimanager.ViewManager;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.function.Function;
|
||||
|
||||
public class WebViewBridgePackage implements ReactPackage {
|
||||
|
||||
private boolean debug;
|
||||
Function<String, String> callRPC;
|
||||
|
||||
public WebViewBridgePackage(boolean debug) {
|
||||
public WebViewBridgePackage(boolean debug, Function<String, String> callRPC) {
|
||||
this.debug = debug;
|
||||
this.callRPC = callRPC;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -26,7 +29,7 @@ public class WebViewBridgePackage implements ReactPackage {
|
||||
@Override
|
||||
public List<ViewManager> createViewManagers(ReactApplicationContext reactApplicationContext) {
|
||||
return Arrays.<ViewManager>asList(
|
||||
new WebViewBridgeManager(reactApplicationContext, this.debug)
|
||||
new WebViewBridgeManager(reactApplicationContext, this.debug, this.callRPC)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user