|
12 | 12 | [status-im.ui.components.chat-preview :as chat-preview] |
13 | 13 | [status-im.ui.components.list.views :as list] |
14 | 14 | [status-im.ui.components.animation :as animation] |
| 15 | + [status-im.ui.components.svgimage :as svgimage] |
15 | 16 | [status-im.i18n :as i18n] |
16 | 17 | [status-im.constants :as constants] |
17 | 18 | [status-im.utils.ethereum.core :as ethereum] |
|
40 | 41 | #_[react/text {:style transactions-styles/asset-balance} |
41 | 42 | (str (money/internal->formatted amount symbol decimals))]]])) |
42 | 43 |
|
| 44 | +(defn- render-nft-asset [selected-event-creator] |
| 45 | + (fn [{:keys [name symbol amount] :as asset}] |
| 46 | + [react/touchable-highlight |
| 47 | + {:on-press #(re-frame/dispatch (selected-event-creator (clojure.core/name symbol)))} |
| 48 | + [react/view transactions-styles/asset-container |
| 49 | + [react/view transactions-styles/asset-main |
| 50 | + [react/image {:source (-> asset :icon :source) |
| 51 | + :style transactions-styles/asset-icon}] |
| 52 | + [react/text {:style transactions-styles/asset-symbol} name]] |
| 53 | + [react/text {:style transactions-styles/nft-asset-amount} (money/to-fixed amount)]]])) |
| 54 | + |
43 | 55 | (def assets-separator [react/view transactions-styles/asset-separator]) |
44 | 56 |
|
45 | | -(defview choose-asset [selected-event-creator] |
| 57 | +(defview choose-asset [nft? selected-event-creator] |
46 | 58 | (letsubs [assets [:wallet/visible-assets-with-amount]] |
47 | 59 | [react/view |
48 | | - [list/flat-list {:data (filter #(not (:nft? %)) assets) |
| 60 | + [list/flat-list {:data (filter #(if nft? |
| 61 | + (:nft? %) |
| 62 | + (not (:nft? %))) |
| 63 | + assets) |
49 | 64 | :key-fn (comp name :symbol) |
50 | | - :render-fn (render-asset selected-event-creator) |
| 65 | + :render-fn (if nft? |
| 66 | + (render-nft-asset selected-event-creator) |
| 67 | + (render-asset selected-event-creator)) |
51 | 68 | :enableEmptySections true |
52 | 69 | :separator assets-separator |
53 | 70 | :keyboardShouldPersistTaps :always |
54 | 71 | :bounces false}]])) |
55 | 72 |
|
56 | 73 | (defn choose-asset-suggestion [selected-event-creator] |
57 | | - [choose-asset selected-event-creator]) |
| 74 | + [choose-asset false selected-event-creator]) |
| 75 | + |
| 76 | +(defn choose-nft-asset-suggestion [selected-event-creator] |
| 77 | + [choose-asset true selected-event-creator]) |
58 | 78 |
|
59 | 79 | (defn personal-send-request-short-preview |
60 | 80 | [label-key {:keys [content]}] |
|
77 | 97 | :type :number |
78 | 98 | :placeholder "Amount"}]) |
79 | 99 |
|
| 100 | +(defview choose-nft-token [selected-event-creator] |
| 101 | + (letsubs [{:keys [input-params]} [:selected-chat-command] |
| 102 | + collectibles [:collectibles]] |
| 103 | + (let [collectible-tokens (get collectibles (keyword (:symbol input-params)))] |
| 104 | + [react/view {:flex-direction :row |
| 105 | + :align-items :center |
| 106 | + :padding-vertical 11} |
| 107 | + (map |
| 108 | + (fn [[id {:keys [name image_url]}]] |
| 109 | + [react/touchable-highlight |
| 110 | + {:key id |
| 111 | + :on-press #(re-frame/dispatch (selected-event-creator (str id)))} |
| 112 | + [react/view {:flex-direction :column |
| 113 | + :align-items :center |
| 114 | + :margin-left 10 |
| 115 | + :border-radius 2 |
| 116 | + :border-width 1 |
| 117 | + :border-color colors/gray} |
| 118 | + [svgimage/svgimage {:style transactions-styles/nft-token-icon |
| 119 | + :source {:uri image_url}}] |
| 120 | + [react/text {} name]]]) |
| 121 | + collectible-tokens)]))) |
| 122 | + |
| 123 | +(defn choose-nft-token-suggestion [selected-event-creator] |
| 124 | + [choose-nft-token selected-event-creator]) |
| 125 | + |
80 | 126 | ;;TODO(goranjovic): currently we only allow tokens which are enabled in Manage assets here |
81 | 127 | ;; because balances are only fetched for them. Revisit this decision with regard to battery/network consequences |
82 | 128 | ;; if we were to update all balances. |
|
0 commit comments