Fixed some extensions issues (smallish)

Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
This commit is contained in:
Julien Eluard 2018-11-05 17:56:12 +01:00
parent 9248db8dfb
commit fceaa0981f
No known key found for this signature in database
GPG Key ID: 6FD7DB5437FCBEF6
4 changed files with 56 additions and 45 deletions

View File

@ -136,10 +136,10 @@
:preview :view
:on-send? :event
:on-receive? :event
:parameters [{:id :keyword
:type {:one-of #{:text :phone :password :number}}
:placeholder :string
:suggestions? :view}]}
:parameters? [{:id :keyword
:type {:one-of #{:text :phone :password :number}}
:placeholder :string
:suggestions? :view}]}
:hook
(reify hooks/Hook
(hook-in [_ id {:keys [description scope parameters preview short-preview on-send on-receive]} cofx]
@ -149,8 +149,8 @@
(description [_] description)
(parameters [_] parameters)
(validate [_ _ _])
(on-send [_ command-message _] (when on-send {:dispatch (on-send {:value command-message})}))
(on-receive [_ command-message _] (when on-receive {:dispatch (on-receive {:value command-message})}))
(on-send [_ command-message _] (when on-send {:dispatch (on-send command-message)}))
(on-receive [_ command-message _] (when on-receive {:dispatch (on-receive command-message)}))
(short-preview [_ props] (short-preview props))
(preview [_ props] (preview props)))]
(load-commands cofx [new-command])))

View File

@ -42,7 +42,7 @@
(fn [db [_ {:keys [key]}]]
(get-in db [:extensions-store :collectible key])))
(re-frame/reg-sub :identity
(re-frame/reg-sub :extensions/identity
(fn [_ [_ {:keys [value]}]] value))
(handlers/register-handler-fx
@ -152,11 +152,12 @@
:style {:width "100%"}
:on-change-text #(re-frame/dispatch (on-change {:value %}))}])
(defn touchable-opacity [{:keys [on-press]} & children]
(into [react/touchable-opacity {:on-press #(re-frame/dispatch (on-press {}))}] children))
(defn touchable-opacity [{:keys [style on-press]} & children]
(into [react/touchable-opacity (merge {:on-press #(re-frame/dispatch (on-press {}))}
(when style {:style style}))] children))
(defn image [{:keys [uri style]}]
[react/image (merge {:style (merge {:width 100 :height 100} style)} (when uri {:source {:uri uri}}))])
[react/image (merge {:style (merge {:width 100 :height 100} style)} {:source {:uri uri}})])
(defn link [{:keys [uri]}]
[react/text
@ -165,17 +166,23 @@
:on-press #(re-frame/dispatch [:browser.ui/message-link-pressed uri])}
uri])
(defn text [o & children]
(if (map? o)
[react/text o children]
(into [react/text {} o] children)))
(defn list [{:keys [data item-view]}]
[list/flat-list {:data data :key-fn (fn [_ i] (str i)) :render-fn item-view}])
(defn checkbox [{:keys [on-change checked]}]
[react/view {:style {:background-color colors/white}}
[checkbox/checkbox (merge {:checked checked :style {:padding 0}}
(when on-change {:on-value-change #(re-frame/dispatch (on-change {:value %}))}))]])
[checkbox/checkbox {:checked? checked
:style {:padding 0}
:on-value-change #(re-frame/dispatch (on-change {:value %}))}]])
(def capacities
{:components {'view {:value react/view}
'text {:value react/text}
'text {:value text}
'touchable-opacity {:value touchable-opacity :properties {:on-press :event}}
'image {:value image :properties {:uri :string}}
'input {:value input :properties {:on-change :event :placeholder :string}}
@ -217,11 +224,11 @@
'store/put
{:permissions [:read]
:value :store/put
:arguments {:key :string :value :string}}
:arguments {:key :string :value :map}}
'store/append
{:permissions [:read]
:value :store/append
:arguments {:key :string :value :string}}
:arguments {:key :string :value :map}}
'store/clear
{:permissions [:read]
:value :store/put

View File

@ -1,11 +1,15 @@
(ns status-im.extensions.ethereum
(:require [status-im.utils.handlers :as handlers]
(:require [clojure.string :as string]
[re-frame.core :as re-frame]
[status-im.constants :as constants]
[status-im.i18n :as i18n]
[status-im.models.wallet :as models.wallet]
[status-im.utils.hex :as hex]
[status-im.ui.screens.navigation :as navigation]
[status-im.utils.ethereum.abi-spec :as abi-spec]
[status-im.utils.fx :as fx]
[status-im.ui.screens.navigation :as navigation]
[clojure.string :as string]))
[status-im.utils.handlers :as handlers]
[status-im.utils.money :as money]))
(handlers/register-handler-fx
:extensions/transaction-on-result
@ -20,12 +24,37 @@
(fn [{db :db} [_ on-result message]]
(when on-result {:dispatch (on-result {:error message :result nil})})))
;; EXTENSION TRANSACTION -> SEND TRANSACTION
(defn prepare-extension-transaction [params contacts on-result]
(let [{:keys [to value data gas gasPrice nonce]} params
contact (get contacts (hex/normalize-hex to))]
(cond-> {:id "extension-id"
:to-name (or (when (nil? to)
(i18n/label :t/new-contract))
contact)
:symbol :ETH
:method constants/web3-send-transaction
:to to
:amount (money/bignumber (or value 0))
:gas (cond
gas
(money/bignumber gas)
(and value (empty? data))
(money/bignumber 21000))
:gas-price (when gasPrice
(money/bignumber gasPrice))
:data data
:on-result [:extensions/transaction-on-result on-result]
:on-error [:extensions/transaction-on-error on-result]}
nonce
(assoc :nonce nonce))))
(handlers/register-handler-fx
:extensions/ethereum-send-transaction
(fn [{db :db} [_ {:keys [method params on-result] :as arguments}]]
(let [tx-object (assoc (select-keys arguments [:to :gas :gas-price :value :nonce])
:data (when (and method params) (abi-spec/encode method params)))
transaction (models.wallet/prepare-extension-transaction tx-object (:contacts/contacts db) on-result)]
transaction (prepare-extension-transaction tx-object (:contacts/contacts db) on-result)]
(models.wallet/open-modal-wallet-for-transaction db transaction tx-object))))
(handlers/register-handler-fx
@ -41,4 +70,4 @@
result (if (and outputs result-str)
(abi-spec/decode (string/replace result-str #"0x" "") outputs)
result-str)]
(re-frame/dispatch (on-result {:error %1 :result result}))))]})))
(re-frame/dispatch (on-result {:error %1 :result result}))))]})))

View File

@ -88,31 +88,6 @@
nonce
(assoc :nonce nonce))))
;; EXTENSION TRANSACTION -> SEND TRANSACTION
(defn prepare-extension-transaction [params contacts on-result]
(let [{:keys [to value data gas gasPrice nonce]} params
contact (get contacts (utils.hex/normalize-hex to))]
(cond-> {:id "extension-id"
:to-name (or (when (nil? to)
(i18n/label :t/new-contract))
contact)
:symbol :ETH
:method constants/web3-send-transaction
:to to
:amount (money/bignumber (or value 0))
:gas (cond
gas
(money/bignumber gas)
(and value (empty? data))
(money/bignumber 21000))
:gas-price (when gasPrice
(money/bignumber gasPrice))
:data data
:on-result [:extensions/transaction-on-result on-result]
:on-error [:extensions/transaction-on-error on-result]}
nonce
(assoc :nonce nonce))))
;; SEND TRANSACTION -> RPC TRANSACTION
(defn prepare-send-transaction [from {:keys [amount to gas gas-price data nonce]}]
(cond-> {:from (ethereum/normalized-address from)