Fixed broken extensions HTTP events

Signed-off-by: Julien Eluard <julien.eluard@gmail.com>
This commit is contained in:
Julien Eluard 2018-11-23 08:43:22 +01:00
parent 6ca3933b71
commit 6f08a9fe7f
No known key found for this signature in database
GPG Key ID: 6FD7DB5437FCBEF6
2 changed files with 22 additions and 23 deletions

View File

@ -93,14 +93,15 @@
(fn [_ [_ _ {:keys [value]}]] (fn [_ [_ _ {:keys [value]}]]
{::json-stringify value})) {::json-stringify value}))
(defn- parse-result [o on-success]
(let [res (if (json? o) (update o :body parse-json) o)]
(on-success res)))
(re-frame/reg-event-fx (re-frame/reg-event-fx
:http/get :http/get
(fn [_ [_ _ {:keys [url on-success on-failure timeout]}]] (fn [_ [_ _ {:keys [url on-success on-failure timeout]}]]
{:http-raw-get (merge {:url url {:http-raw-get (merge {:url url
:success-event-creator :success-event-creator #(parse-result % on-success)}
(fn [{:keys [body] :as o}]
(let [res (if (json? body) (update o :body parse-json))]
(on-success res)))}
(when on-failure (when on-failure
{:failure-event-creator on-failure}) {:failure-event-creator on-failure})
(when timeout (when timeout
@ -125,10 +126,7 @@
(fn [_ [_ _ {:keys [url body on-success on-failure timeout]}]] (fn [_ [_ _ {:keys [url body on-success on-failure timeout]}]]
{:http-raw-post (merge {:url url {:http-raw-post (merge {:url url
:body (clj->js body) :body (clj->js body)
:success-event-creator :success-event-creator #(parse-result % on-success)}
(fn [{:keys [body] :as o}]
(let [res (if (json? body) (update o :body parse-json))]
(on-success res)))}
(when on-failure (when on-failure
{:failure-event-creator on-failure}) {:failure-event-creator on-failure})
(when timeout (when timeout
@ -167,8 +165,9 @@
(fn [_ [_ _ m]] (fn [_ [_ _ m]]
{::arithmetic m})) {::arithmetic m}))
(defn button [{:keys [on-click]} label] (defn button [{:keys [on-click disabled]} label]
[button/secondary-button (when on-click {:on-press #(re-frame/dispatch (on-click {}))}) label]) [button/secondary-button (merge {:disabled? disabled}
(when on-click {:on-press #(re-frame/dispatch (on-click {}))})) label])
(defn input [{:keys [on-change placeholder]}] (defn input [{:keys [on-change placeholder]}]
[react/text-input (merge {:placeholder placeholder [react/text-input (merge {:placeholder placeholder
@ -218,7 +217,7 @@
'touchable-opacity {:value touchable-opacity :properties {:on-press :event}} 'touchable-opacity {:value touchable-opacity :properties {:on-press :event}}
'image {:value image :properties {:uri :string}} 'image {:value image :properties {:uri :string}}
'input {:value input :properties {:on-change :event :placeholder :string}} 'input {:value input :properties {:on-change :event :placeholder :string}}
'button {:value button :properties {:on-click :event}} 'button {:value button :properties {:disabled :boolean :on-click :event}}
'link {:value link :properties {:uri :string}} 'link {:value link :properties {:uri :string}}
;'list {:value list :properties {:data :vector :item-view :view}} ;'list {:value list :properties {:data :vector :item-view :view}}
'checkbox {:value checkbox :properties {:on-change :event :checked :boolean}} 'checkbox {:value checkbox :properties {:on-change :event :checked :boolean}}
@ -273,7 +272,7 @@
:arguments {:key :string :value :map}} :arguments {:key :string :value :map}}
'store/clear 'store/clear
{:permissions [:read] {:permissions [:read]
:value :store/put :value :store/clear
:arguments {:key :string}} :arguments {:key :string}}
'http/get 'http/get
{:permissions [:read] {:permissions [:read]

View File

@ -1,8 +1,7 @@
(ns status-im.utils.ethereum.abi-spec (ns status-im.utils.ethereum.abi-spec
(:require [cljs.spec.alpha :as spec] (:require [cljs.spec.alpha :as spec]
[clojure.string :as string] [clojure.string :as string]
[status-im.js-dependencies :as dependencies] [status-im.js-dependencies :as dependencies]))
[clojure.string :as str]))
;; Utility functions for encoding ;; Utility functions for encoding
@ -44,7 +43,8 @@
(.sha3 utils (str s))) (.sha3 utils (str s)))
(defn is-hex? [value] (defn is-hex? [value]
(string/starts-with? value "0x")) (when value
(string/starts-with? value "0x")))
;; Encoder for parsed abi spec ;; Encoder for parsed abi spec
@ -71,7 +71,7 @@
;; address: as in the uint160 case ;; address: as in the uint160 case
(defmethod enc :address (defmethod enc :address
[{:keys [value]}] [{:keys [value]}]
(when value (when (string? value)
(left-pad (string/replace value "0x" "")))) (left-pad (string/replace value "0x" ""))))
;; bytes, of length k (which is assumed to be of type uint256): ;; bytes, of length k (which is assumed to be of type uint256):
@ -330,10 +330,10 @@
(defn dyn-hex-to-value [hex type] (defn dyn-hex-to-value [hex type]
(cond (cond
(str/starts-with? type "bytes") (string/starts-with? type "bytes")
(str "0x" (hex-to-bytes hex)) (str "0x" (hex-to-bytes hex))
(str/starts-with? type "string") (string/starts-with? type "string")
(hex-to-utf8 (hex-to-bytes hex)))) (hex-to-utf8 (hex-to-bytes hex))))
(defn hex-to-bytesM [hex type] (defn hex-to-bytesM [hex type]
@ -343,10 +343,10 @@
(defn hex-to-value [hex type] (defn hex-to-value [hex type]
(cond (cond
(= "bool" type) (= hex "0000000000000000000000000000000000000000000000000000000000000001") (= "bool" type) (= hex "0000000000000000000000000000000000000000000000000000000000000001")
(str/starts-with? type "uint") (hex-to-number hex) (string/starts-with? type "uint") (hex-to-number hex)
(str/starts-with? type "int") (hex-to-number hex) (string/starts-with? type "int") (hex-to-number hex)
(str/starts-with? type "address") (str "0x" (subs hex (- (count hex) 40))) (string/starts-with? type "address") (str "0x" (subs hex (- (count hex) 40)))
(str/starts-with? type "bytes") (hex-to-bytesM hex type))) (string/starts-with? type "bytes") (hex-to-bytesM hex type)))
(defn dec-type [bytes] (defn dec-type [bytes]
(fn [offset type] (fn [offset type]
@ -369,7 +369,7 @@
(recur (conj res ((dec-type bytes) (+ arr-start i) nname)) (+ i rnstatpartlen))))) (recur (conj res ((dec-type bytes) (+ arr-start i) nname)) (+ i rnstatpartlen)))))
(or (re-matches #"^bytes(\[([0-9]*)\])*$" type) (or (re-matches #"^bytes(\[([0-9]*)\])*$" type)
(str/starts-with? type "string")) (string/starts-with? type "string"))
(let [dyn-off (js/parseInt (str "0x" (substr bytes (* offset 2) 64))) (let [dyn-off (js/parseInt (str "0x" (substr bytes (* offset 2) 64)))
len (js/parseInt (str "0x" (substr bytes (* dyn-off 2) 64))) len (js/parseInt (str "0x" (substr bytes (* dyn-off 2) 64)))