diff --git a/src/cljs/status_dapp/core.cljs b/src/cljs/status_dapp/core.cljs index 4e9f7b5..fab583f 100644 --- a/src/cljs/status_dapp/core.cljs +++ b/src/cljs/status_dapp/core.cljs @@ -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!) diff --git a/src/cljs/status_dapp/db.cljs b/src/cljs/status_dapp/db.cljs index 004961f..abda65a 100644 --- a/src/cljs/status_dapp/db.cljs +++ b/src/cljs/status_dapp/db.cljs @@ -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}) \ No newline at end of file diff --git a/src/cljs/status_dapp/events.cljs b/src/cljs/status_dapp/events.cljs index fc96931..ab1097d 100644 --- a/src/cljs/status_dapp/events.cljs +++ b/src/cljs/status_dapp/events.cljs @@ -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]})) \ No newline at end of file + :set-default-account + (fn [{db :db} _] + (set! (.-defaultAccount (.-eth (:web3 db))) js/currentAccountAddress) + {:dispatch [:request-web3-async-data]})) \ No newline at end of file diff --git a/src/cljs/status_dapp/views.cljs b/src/cljs/status_dapp/views.cljs index 6896f93..dedb893 100644 --- a/src/cljs/status_dapp/views.cljs +++ b/src/cljs/status_dapp/views.cljs @@ -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