Webview is still active after unmount [#4353]

Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
This commit is contained in:
Andrey Shovkoplyas 2018-05-23 16:54:24 +03:00
parent 76f5f020ef
commit 7b8950870f
No known key found for this signature in database
GPG Key ID: EAAB7C8622D860A4
4 changed files with 4 additions and 80 deletions

View File

@ -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";
};
}());

View File

@ -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

View File

@ -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]}))

View File

@ -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]))))]