From 7b8950870f88840ed98b2f8bd4baa0eb9fa27289 Mon Sep 17 00:00:00 2001 From: Andrey Shovkoplyas Date: Wed, 23 May 2018 16:54:24 +0300 Subject: [PATCH] Webview is still active after unmount [#4353] Signed-off-by: Andrey Shovkoplyas --- resources/js/webview.js | 24 +------- src/status_im/chat/events.cljs | 3 +- src/status_im/chat/events/webview_bridge.cljs | 56 ------------------- src/status_im/ui/screens/browser/views.cljs | 1 + 4 files changed, 4 insertions(+), 80 deletions(-) delete mode 100644 src/status_im/chat/events/webview_bridge.cljs diff --git a/resources/js/webview.js b/resources/js/webview.js index 365a9d674b..14c6814325 100644 --- a/resources/js/webview.js +++ b/resources/js/webview.js @@ -1,29 +1,9 @@ (function () { - window.statusAPI = { - dispatch: function (event, options) { - console.log("statusAPI.dispatch: " + JSON.stringify(options)); - if (options.callback) { - console.log(options.callback); - statusAPI.callbacks[event] = options.callback; - } - var json = JSON.stringify({ - event: event, - options: options - }); - console.log("sending from webview: " + json); - WebViewBridge.send(json); - }, - callbacks: {} - }; WebViewBridge.onMessage = function (messageString) { console.log("received from react-native: " + messageString); - var message = JSON.parse(messageString); - if (message.event === "actions-execute-js") { - eval(message.js); - } else if (statusAPI.callbacks[message.event]) { - statusAPI.callbacks[message.event](message.params); - } + if (messageString === "navigate-to-blank") + window.location.href = "about:blank"; }; }()); diff --git a/src/status_im/chat/events.cljs b/src/status_im/chat/events.cljs index 5fa9d06592..049ea84c0b 100644 --- a/src/status_im/chat/events.cljs +++ b/src/status_im/chat/events.cljs @@ -25,8 +25,7 @@ status-im.chat.events.requests status-im.chat.events.send-message status-im.chat.events.receive-message - status-im.chat.events.console - status-im.chat.events.webview-bridge)) + status-im.chat.events.console)) ;;;; Effects diff --git a/src/status_im/chat/events/webview_bridge.cljs b/src/status_im/chat/events/webview_bridge.cljs deleted file mode 100644 index 2672951e7d..0000000000 --- a/src/status_im/chat/events/webview_bridge.cljs +++ /dev/null @@ -1,56 +0,0 @@ -(ns status-im.chat.events.webview-bridge - (:require [re-frame.core :as re-frame] - [status-im.ui.components.nfc :as nfc] - [status-im.utils.handlers :as handlers] - [status-im.utils.types :as types] - [taoensso.timbre :as log])) - -;;;; Effects - -(re-frame/reg-fx - ::webview-nfc - (fn [{:keys [event params]}] - (let [callback #(re-frame/dispatch [:chat-webview-bridge/send-to-bridge - {:params % :event "nfc"}])] - (case (keyword event) - :get-card-id (nfc/get-card-id #(callback {:event :get-card-id :card %}) - #(callback {:event :get-card-id :error %})) - :read-tag (let [{:keys [sectors]} params] - (nfc/read-tag sectors - #(callback {:event :read-tag :card %}) - #(callback {:event :read-tag :error %}))) - :write-tag (let [{:keys [sectors id]} params] - (nfc/write-tag sectors - id - #(callback {:event :write-tag :card %}) - #(callback {:event :write-tag :error %}))) - :default)))) - -(re-frame/reg-fx - ::send-to-bridge - (fn [[webview-bridge data]] - (when webview-bridge - (.sendToBridge webview-bridge data)))) - -;;;; Handlers - -(handlers/register-handler-db - :chat-webview-bridge/set-ref - (fn [db [_ ref]] - (assoc db :webview-bridge ref))) - -(handlers/register-handler-fx - :chat-webview-bridge/process-message - (fn [{:keys [db]} [_ message-string]] - (let [{:keys [event options] :as message} (types/json->clj message-string) - event' (keyword event) - params (:data options)] - (log/debug (str "message from webview: " message)) - (case event' - :nfc {::webview-nfc params} - nil)))) - -(handlers/register-handler-fx - :chat-webview-bridge/send-to-bridge - (fn [{{:keys [webview-bridge]} :db} [_ data]] - {::send-to-bridge [webview-bridge data]})) diff --git a/src/status_im/ui/screens/browser/views.cljs b/src/status_im/ui/screens/browser/views.cljs index 7e2365e9e8..fb539ae2d7 100644 --- a/src/status_im/ui/screens/browser/views.cljs +++ b/src/status_im/ui/screens/browser/views.cljs @@ -85,6 +85,7 @@ [toolbar.view/toolbar {} [toolbar.view/nav-button-with-count (actions/close (fn [] + (.sendToBridge @webview "navigate-to-blank") (re-frame/dispatch [:navigate-back]) (when error? (re-frame/dispatch [:remove-browser browser-id]))))]