             [status-im.ui.components.styles :as components.styles]
             [status-im.ui.components.toolbar.actions :as actions]
             [status-im.ui.components.toolbar.view :as toolbar]
-            [status-im.ui.components.list-item.views :as list-item])
+            [status-im.ui.components.list-item.views :as list-item]
+            [reagent.core :as reagent])
   (:require-macros [status-im.utils.views :refer [defview letsubs]]))
 
 (defn toolbar []

      {:theme    :action
       :title    :t/token-details
       :icon     :main-icons/warning
       :on-press #(hide-sheet-and-dispatch [:navigate-to :wallet-custom-token-details token])}]
     (when custom?
       [list-item/list-item
        {:theme    :action-destructive
         :title    :t/remove-token
         :icon     :main-icons/delete
         :on-press #(hide-sheet-and-dispatch [:wallet.custom-token.ui/remove-pressed token])}])]))

(defn- render-token [{:keys [symbol name icon color custom? checked?] :as token}]
  [list/list-item-with-checkbox
   {:checked?        checked?
    :on-long-press   #(re-frame/dispatch [:bottom-sheet/show-sheet {:content        (custom-token-actions-view token)
                                                                    :content-height (if custom? 128 68)}])
    :on-value-change #(re-frame/dispatch [:wallet.settings/toggle-visible-token (keyword symbol) %])}
   [list/item
    (if icon
      [list/item-image icon]
      [chat-icon/custom-icon-view-list name color])
    [list/item-content
     [list/item-primary name]
     [list/item-secondary symbol]]]])

(defview manage-assets []
  (letsubs [{custom-tokens true default-tokens nil} [:wallet/grouped-chain-tokens]]

     [toolbar]
     [react/view {:style components.styles/flex}
      [list/section-list
       {:header
        [react/view {:margin-top 16}
         [list-item/list-item
          {:theme     :action
           :title     :t/add-custom-token
           :icon      :main-icons/add
           :on-press
           #(re-frame/dispatch [:navigate-to :wallet-add-custom-token])}]]
        :sections (concat
                   (when (seq custom-tokens)
                     [{:title (i18n/label :t/custom)
                       :data  custom-tokens}])
                   [{:title (i18n/label :t/default)
                     :data  default-tokens}])
        :key-fn :address
        :stickySectionHeadersEnabled false
        :render-section-header-fn
        (fn [{:keys [title data]}]
          [list-item/list-item {:type :section-header :title title}])
        :render-fn render-token-wrapper}]]]))

(defn- create-payload [address]
  {:address (ethereum/normalized-address address)})
