CallRPC in Function<> object

This commit is contained in:
Roman Volosovskyi
2017-09-25 19:36:54 +02:00
parent a52580df1a
commit 3fc01ceeff
4 changed files with 25 additions and 12 deletions
+8 -4
View File
@@ -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) {
@@ -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);
@@ -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)
);
}