From 130308fa8a4d60c01b2d3f4d2554a0bd635a4f5e Mon Sep 17 00:00:00 2001 From: andrey Date: Thu, 6 Jan 2022 14:54:18 +0100 Subject: [PATCH] [#12920] Unable to perform swap on 1inch.exchange if initial swap was cancelled by closing bottom sheet Signed-off-by: andrey --- .../status/ethereum/module/StatusModule.java | 19 +++++++++++++++++++ .../ios/RCTStatus/RCTStatus.m | 12 ++++++++++++ resources/js/provider.js | 2 ++ src/status_im/browser/core.cljs | 19 +++++++++++++------ src/status_im/native_module/core.cljs | 5 +++++ src/status_im/signing/core.cljs | 6 ++++++ 6 files changed, 57 insertions(+), 6 deletions(-) diff --git a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java index e1e737af6d..b644c58287 100644 --- a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java +++ b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java @@ -1011,6 +1011,25 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL StatusThreadPoolExecutor.getInstance().execute(r); } + @ReactMethod + public void recover(final String rpcParams, final Callback callback) { + Log.d(TAG, "recover"); + if (!checkAvailability()) { + callback.invoke(false); + return; + } + + Runnable r = new Runnable() { + @Override + public void run() { + String res = Statusgo.recover(rpcParams); + callback.invoke(res); + } + }; + + StatusThreadPoolExecutor.getInstance().execute(r); + } + @ReactMethod public void signTypedData(final String data, final String account, final String password, final Callback callback) { Log.d(TAG, "signTypedData"); diff --git a/modules/react-native-status/ios/RCTStatus/RCTStatus.m b/modules/react-native-status/ios/RCTStatus/RCTStatus.m index f6aaa27d08..5b53ef06c6 100644 --- a/modules/react-native-status/ios/RCTStatus/RCTStatus.m +++ b/modules/react-native-status/ios/RCTStatus/RCTStatus.m @@ -662,6 +662,18 @@ RCT_EXPORT_METHOD(signMessage:(NSString *)message callback(@[result]); } +//////////////////////////////////////////////////////////////////// +#pragma mark - Recover +//////////////////////////////////////////////////////////////////// recover +RCT_EXPORT_METHOD(recover:(NSString *)message + callback:(RCTResponseSenderBlock)callback) { +#if DEBUG + NSLog(@"Recover() method called"); +#endif + NSString *result = StatusgoRecover(message); + callback(@[result]); +} + //////////////////////////////////////////////////////////////////// #pragma mark - SignTypedData //////////////////////////////////////////////////////////////////// signTypedData diff --git a/resources/js/provider.js b/resources/js/provider.js index 59ba708b27..fa3ede6fa7 100644 --- a/resources/js/provider.js +++ b/resources/js/provider.js @@ -107,6 +107,7 @@ } else { + if (window.statusAppDebug) { console.log("resolve " + callback.method + " :" + JSON.stringify(data.result.result)); } callback.resolve(data.result.result); } } @@ -239,6 +240,7 @@ return new Promise(function (resolve, reject) { callbacks[messageId] = {beta: true, + method: method, resolve: resolve, reject: reject}; }); diff --git a/src/status_im/browser/core.cljs b/src/status_im/browser/core.cljs index 38b7438a5a..bd03ce761d 100644 --- a/src/status_im/browser/core.cljs +++ b/src/status_im/browser/core.cljs @@ -418,12 +418,19 @@ :result {:jsonrpc "2.0" :id (int id) :result (if (= method "eth_coinbase") dapps-address [dapps-address])}}) - {:browser/call-rpc [payload - #(re-frame/dispatch [:browser.callback/call-rpc - {:type constants/web3-send-async-callback - :messageId message-id - :error %1 - :result %2}])]})))) + (if (= method "personal_ecRecover") + {:signing.fx/recover-message {:params {:message (first params) + :signature (second params)} + :on-completed #(re-frame/dispatch [:browser.callback/call-rpc + {:type constants/web3-send-async-callback + :messageId message-id + :result (types/json->clj %)}])}} + {:browser/call-rpc [payload + #(re-frame/dispatch [:browser.callback/call-rpc + {:type constants/web3-send-async-callback + :messageId message-id + :error %1 + :result %2}])]}))))) (fx/defn handle-no-permissions [cofx {:keys [method id]} message-id] (if (= method "eth_accounts") diff --git a/src/status_im/native_module/core.cljs b/src/status_im/native_module/core.cljs index 70487e4bc2..4a7195d004 100644 --- a/src/status_im/native_module/core.cljs +++ b/src/status_im/native_module/core.cljs @@ -253,6 +253,11 @@ (log/debug "[native-module] sign-message") (.signMessage ^js (status) rpcParams callback)) +(defn recover-message + [rpcParams callback] + (log/debug "[native-module] recover") + (.recover ^js (status) rpcParams callback)) + (defn send-transaction "NOTE: beware, the password has to be sha3 hashed" [rpcParams hashed-password callback] diff --git a/src/status_im/signing/core.cljs b/src/status_im/signing/core.cljs index cc9812e717..217c936361 100644 --- a/src/status_im/signing/core.cljs +++ b/src/status_im/signing/core.cljs @@ -47,6 +47,12 @@ (status/sign-message (types/clj->json params) on-completed))) +(re-frame/reg-fx + :signing.fx/recover-message + (fn [{:keys [params on-completed]}] + (status/recover-message (types/clj->json params) + on-completed))) + (re-frame/reg-fx :signing.fx/sign-typed-data (fn [{:keys [v4 data account on-completed hashed-password]}]