web3 opt-in updates

This commit is contained in:
Andrey Shovkoplyas 2018-09-06 09:53:05 +03:00
parent 3a67b09c4c
commit 8941331e40
No known key found for this signature in database
GPG Key ID: EAAB7C8622D860A4
4 changed files with 15 additions and 19 deletions

View File

@ -9,9 +9,6 @@
(js/window.addEventListener "statusapi"
#(re-frame/dispatch [:on-status-api (js->clj (.-detail %) :keywordize-keys true)]))
(js/window.addEventListener "ethereumprovider"
#(re-frame/dispatch [:on-web3-success (.-ethereum (.-detail %))]))
(defn dev-setup []
(when config/debug?
(enable-console-print!)

View File

@ -1,8 +1,15 @@
(ns status-dapp.db)
(ns status-dapp.db
(:require [re-frame.core :as re-frame]))
(def web3 (or (when (exists? js/web3) js/web3)
(when js/ethereum
(js/setTimeout (fn [] (.then (.enable js/ethereum) #(do
(re-frame/dispatch [:set-default-account]))) 100))
(js/Web3. js/ethereum))))
(def default-db
{:web3 (when (exists? js/web3) js/web3)
{:web3 web3
:web3-async-data {}
:view-id (if (exists? js/web3) :web3 :no-web3)
:view-id (if web3 :web3 :no-web3)
:message "Test message"
:tab-view :accounts})

View File

@ -104,16 +104,11 @@
(fn [_ _]
db/default-db))
(re-frame/reg-event-fx
:request-web3
(fn [{:keys [db]} _]
(js/window.postMessage (clj->js {:type "ETHEREUM_PROVIDER_REQUEST"}) "*")
{:db (assoc db :web3 nil :view-id :no-web3)}))
;; Status web3 doesn't support sync calls
(re-frame/reg-event-fx
:request-web3-async-data
(fn [{{:keys [web3] :as db} :db} _]
(println "WEB3" web3)
(when web3
{:db (update db :web3-async-data
assoc
@ -256,8 +251,7 @@
{:db (assoc-in db [:api :contact] (:CONTACT_CODE data))}))
(re-frame/reg-event-fx
:on-web3-success
(fn [{db :db} [_ provider]]
{:db (assoc db :web3 (js/Web3. provider)
:view-id :web3)
:dispatch [:request-web3-async-data]}))
:set-default-account
(fn [{db :db} _]
(set! (.-defaultAccount (.-eth (:web3 db))) js/currentAccountAddress)
{:dispatch [:request-web3-async-data]}))

View File

@ -137,8 +137,6 @@
(when (= :api tab-view)
[react/view
[ui/button "Request web3 access"
#(re-frame/dispatch [:request-web3])]
[ui/button "Request contact code (public key)"
#(js/window.postMessage