mirror of
https://github.com/status-im/status-react.git
synced 2025-02-23 08:08:33 +00:00
webview loading indicator
Signed-off-by: Andrey Shovkoplyas <motor4ik@gmail.com>
This commit is contained in:
parent
56eb0b57a7
commit
c5771f3168
@ -9,10 +9,12 @@
|
|||||||
(spec/def :browser/error? (spec/nilable boolean?))
|
(spec/def :browser/error? (spec/nilable boolean?))
|
||||||
(spec/def :browser/history (spec/nilable vector?))
|
(spec/def :browser/history (spec/nilable vector?))
|
||||||
(spec/def :browser/history-index (spec/nilable int?))
|
(spec/def :browser/history-index (spec/nilable int?))
|
||||||
|
(spec/def :browser/loading? (spec/nilable boolean?))
|
||||||
|
|
||||||
(spec/def :browser/options
|
(spec/def :browser/options
|
||||||
(allowed-keys
|
(allowed-keys
|
||||||
:opt-un [:browser/browser-id
|
:opt-un [:browser/browser-id
|
||||||
|
:browser/loading?
|
||||||
:browser/error?]))
|
:browser/error?]))
|
||||||
|
|
||||||
(spec/def :browser/browser
|
(spec/def :browser/browser
|
||||||
|
@ -40,8 +40,14 @@
|
|||||||
|
|
||||||
(def web-view-loading
|
(def web-view-loading
|
||||||
{:flex 1
|
{:flex 1
|
||||||
|
:background-color colors/gray-transparent
|
||||||
:align-items :center
|
:align-items :center
|
||||||
:justify-content :center})
|
:justify-content :center
|
||||||
|
:position :absolute
|
||||||
|
:top 0
|
||||||
|
:bottom 0
|
||||||
|
:left 0
|
||||||
|
:right 0})
|
||||||
|
|
||||||
(def web-view-error
|
(def web-view-error
|
||||||
{:flex 1
|
{:flex 1
|
||||||
|
@ -18,7 +18,8 @@
|
|||||||
[status-im.ui.components.toolbar.actions :as actions]
|
[status-im.ui.components.toolbar.actions :as actions]
|
||||||
[status-im.ui.components.tooltip.views :as tooltip]
|
[status-im.ui.components.tooltip.views :as tooltip]
|
||||||
[status-im.models.browser :as model]
|
[status-im.models.browser :as model]
|
||||||
[status-im.utils.http :as http]))
|
[status-im.utils.http :as http]
|
||||||
|
[status-im.ui.components.styles :as components.styles]))
|
||||||
|
|
||||||
(views/defview toolbar-content-dapp [name]
|
(views/defview toolbar-content-dapp [name]
|
||||||
(views/letsubs [dapp [:get-dapp-by-name name]]
|
(views/letsubs [dapp [:get-dapp-by-name name]]
|
||||||
@ -61,13 +62,9 @@
|
|||||||
[react/text {:style styles/web-view-error-text}
|
[react/text {:style styles/web-view-error-text}
|
||||||
(str desc)]]))
|
(str desc)]]))
|
||||||
|
|
||||||
(defn web-view-loading []
|
|
||||||
(reagent/as-element
|
|
||||||
[react/view styles/web-view-loading
|
|
||||||
[components/activity-indicator {:animating true}]]))
|
|
||||||
|
|
||||||
(defn on-navigation-change [event browser]
|
(defn on-navigation-change [event browser]
|
||||||
(let [{:strs [url loading]} (js->clj event)]
|
(let [{:strs [url loading]} (js->clj event)]
|
||||||
|
(re-frame/dispatch [:update-browser-options {:loading? loading}])
|
||||||
(when (not= "about:blank" url)
|
(when (not= "about:blank" url)
|
||||||
(re-frame/dispatch [:update-browser-on-nav-change browser url loading]))))
|
(re-frame/dispatch [:update-browser-on-nav-change browser url loading]))))
|
||||||
|
|
||||||
@ -79,7 +76,7 @@
|
|||||||
(views/letsubs [webview (atom nil)
|
(views/letsubs [webview (atom nil)
|
||||||
{:keys [address]} [:get-current-account]
|
{:keys [address]} [:get-current-account]
|
||||||
{:keys [dapp? browser-id name] :as browser} [:get-current-browser]
|
{:keys [dapp? browser-id name] :as browser} [:get-current-browser]
|
||||||
{:keys [error?]} [:get :browser/options]
|
{:keys [error? loading?]} [:get :browser/options]
|
||||||
rpc-url [:get :rpc-url]
|
rpc-url [:get :rpc-url]
|
||||||
network-id [:get-network-id]]
|
network-id [:get-network-id]]
|
||||||
(let [can-go-back? (model/can-go-back? browser)
|
(let [can-go-back? (model/can-go-back? browser)
|
||||||
@ -98,15 +95,14 @@
|
|||||||
(if dapp?
|
(if dapp?
|
||||||
[toolbar-content-dapp name]
|
[toolbar-content-dapp name]
|
||||||
[toolbar-content url browser])]
|
[toolbar-content url browser])]
|
||||||
|
[react/view components.styles/flex
|
||||||
[components.webview-bridge/webview-bridge
|
[components.webview-bridge/webview-bridge
|
||||||
{:ref #(reset! webview %)
|
{:ref #(reset! webview %)
|
||||||
:source {:uri url}
|
:source {:uri url}
|
||||||
:java-script-enabled true
|
:java-script-enabled true
|
||||||
:bounces false
|
:bounces false
|
||||||
:local-storage-enabled true
|
:local-storage-enabled true
|
||||||
:start-in-loading-state true
|
|
||||||
:render-error web-view-error
|
:render-error web-view-error
|
||||||
:render-loading web-view-loading
|
|
||||||
:on-navigation-state-change #(on-navigation-change % browser)
|
:on-navigation-state-change #(on-navigation-change % browser)
|
||||||
:on-bridge-message #(re-frame/dispatch [:on-bridge-message
|
:on-bridge-message #(re-frame/dispatch [:on-bridge-message
|
||||||
(js->clj (.parse js/JSON %)
|
(js->clj (.parse js/JSON %)
|
||||||
@ -114,7 +110,8 @@
|
|||||||
browser
|
browser
|
||||||
webview])
|
webview])
|
||||||
:on-load #(re-frame/dispatch [:update-browser-options {:error? false}])
|
:on-load #(re-frame/dispatch [:update-browser-options {:error? false}])
|
||||||
:on-error #(re-frame/dispatch [:update-browser-options {:error? true}])
|
:on-error #(re-frame/dispatch [:update-browser-options {:error? true
|
||||||
|
:loading? false}])
|
||||||
:injected-on-start-loading-java-script (str js-res/web3
|
:injected-on-start-loading-java-script (str js-res/web3
|
||||||
(get-inject-js url)
|
(get-inject-js url)
|
||||||
(js-res/web3-init
|
(js-res/web3-init
|
||||||
@ -122,6 +119,9 @@
|
|||||||
(ethereum/normalized-address address)
|
(ethereum/normalized-address address)
|
||||||
(str network-id)))
|
(str network-id)))
|
||||||
:injected-java-script js-res/webview-js}]
|
:injected-java-script js-res/webview-js}]
|
||||||
|
(when loading?
|
||||||
|
[react/view styles/web-view-loading
|
||||||
|
[components/activity-indicator {:animating true}]])]
|
||||||
[react/view styles/toolbar
|
[react/view styles/toolbar
|
||||||
[react/touchable-highlight {:on-press #(re-frame/dispatch [:browser-nav-back browser])
|
[react/touchable-highlight {:on-press #(re-frame/dispatch [:browser-nav-back browser])
|
||||||
:disabled (not can-go-back?)
|
:disabled (not can-go-back?)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user