Skip to content

Commit

Permalink
Add a button to address watch screen; (#17781)
Browse files Browse the repository at this point in the history
Add account creation screen

remove icons

remove extra utility and create a new one that would use conventional way of getting an emoji

fix lint

Use button component instead of bottom-actions

Provide global customization color to buttons

Use conventional approach to extract account name

Move to another address

Move to another namespace

Refactor bottom-actions to have button props in maps

Update doc with new icon location

Add spaces between styles

Work on pr comments

Use :on-change-text instead of :on-change for input component
Subscribe to :profile/customization-color directly
Use bottom button from the create-or-edit-account wrapper

Remove extra code
Sort requires

Move ns to proper fileˆ

Fix styles
  • Loading branch information
tumanov-alex authored and yevh-berdnyk committed Dec 8, 2023
1 parent 1224301 commit 7a7fe52
Show file tree
Hide file tree
Showing 11 changed files with 137 additions and 33 deletions.
2 changes: 1 addition & 1 deletion doc/export-icons.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

![](images/export-icons/export-icons.gif)

1. Export from figma 2 pngs 2x and 3x put them in `./resources/images/icons`
1. Export from figma 2 pngs 2x and 3x put them in `./resources/images/icons2`
2. if necessary, rename file so that filename contains only lower case chars, e.g. `"Icon-Name@2x.png"` should be renamed to `"icon_name@2x.png"`.
3. In the app `icon_name.png` still can be accessed as `icon-name`, so in order to use can add the next code:
```clojure
Expand Down
10 changes: 6 additions & 4 deletions src/quo/components/drawers/bottom_actions/view.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,9 @@
[react-native.core :as rn]))

(def default-props
{:button-one-type :primary
:button-two-type :grey})
{:button-one-type :primary
:button-two-type :grey
:customization-color :blue})

(defn- view-internal
"Options:
Expand All @@ -23,7 +24,7 @@
:scroll? - bool (default false) - Whether the iOS Home Indicator should be rendered"
[props]
(let [{:keys [actions description button-one-label button-two-label
button-one-props button-two-props theme scroll?]}
button-one-props button-two-props theme scroll? customization-color]}
(merge default-props props)]
[:<>
[rn/view {:style style/buttons-container}
Expand All @@ -43,7 +44,8 @@
:container-style style/button-container
:background (when scroll? :blur)
:theme theme
:accessibility-label :button-one}
:accessibility-label :button-one
:customization-color customization-color}
button-one-props)
button-one-label]]
(when description
Expand Down
4 changes: 4 additions & 0 deletions src/status_im2/contexts/emoji_picker/utils.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,7 @@
(some #(string/includes? % cleaned-query) tags)))
emoji-data)
(partition-all constants/emojis-per-row))))

(defn random-emoji
[]
(:unicode (rand-nth emoji-data)))
20 changes: 20 additions & 0 deletions src/status_im2/contexts/wallet/add_watch_only_account/style.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
(ns status-im2.contexts.wallet.add-watch-only-account.style)

(def container
{:flex 1})

(def input
{:margin-right 12
:flex 1})

(def data-item
{:margin-horizontal 20
:padding-vertical 8
:padding-horizontal 12})

(defn button-container
[bottom]
{:position :absolute
:bottom (+ bottom 12)
:left 20
:right 20})
60 changes: 60 additions & 0 deletions src/status_im2/contexts/wallet/add_watch_only_account/views.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
(ns status-im2.contexts.wallet.add-watch-only-account.views
(:require
[clojure.string :as string]
[quo.core :as quo]
[quo.theme :as quo.theme]
[re-frame.core :as re-frame]
[react-native.core :as rn]
[reagent.core :as reagent]
[status-im2.contexts.emoji-picker.utils :as emoji-picker.utils]
[status-im2.contexts.wallet.add-watch-only-account.style :as style]
[status-im2.contexts.wallet.common.screen-base.create-or-edit-account.view :as
create-or-edit-account]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))

(defn- view-internal
[]
(let [{:keys [address]} (rf/sub [:get-screen-params])
number-of-accounts (count (rf/sub [:profile/wallet-accounts]))
account-name (reagent/atom (i18n/label :t/default-account-name
{:number (inc number-of-accounts)}))
address-title (i18n/label :t/watch-address)
account-color (reagent/atom :blue)
account-emoji (reagent/atom (emoji-picker.utils/random-emoji))
on-change-name #(reset! account-name %)
on-change-color #(reset! account-color %)
on-change-emoji #(reset! account-emoji %)]
(fn []
[rn/view {:style style/container}
[create-or-edit-account/view
{:page-nav-right-side [{:icon-name :i/info
:on-press
#(js/alert
"Get info (to be
implemented)")}]
:account-name @account-name
:account-emoji @account-emoji
:account-color @account-color
:on-change-name on-change-name
:on-change-color on-change-color
:on-change-emoji on-change-emoji
:bottom-action? true
:bottom-action-label :t/create-account
:bottom-action-props {:customization-color @account-color
:disabled? (string/blank? @account-name)
:on-press #(re-frame/dispatch [:navigate-to
:wallet-account])}}
[quo/data-item
{:card? true
:right-icon :i/advanced
:icon-right? true
:emoji @account-emoji
:title address-title
:subtitle address
:status :default
:size :default
:container-style style/data-item
:on-press #(js/alert "To be implemented")}]]])))

(def address-add-edit (quo.theme/with-theme view-internal))
19 changes: 0 additions & 19 deletions src/status_im2/contexts/wallet/address_watch/style.cljs

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
{:padding-vertical 8})

(def color-picker
{:padding-horizontal 12})
{:padding-horizontal 20})

(def divider-2
{:margin-top 4
Expand Down
18 changes: 18 additions & 0 deletions src/status_im2/contexts/wallet/select_address_to_watch/style.cljs
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
(ns status-im2.contexts.wallet.select-address-to-watch.style)

(def header-container
{:margin-horizontal 20
:margin-top 12
:margin-bottom 20})

(def input-container
{:flex-direction :row
:padding-horizontal 20
:align-items :flex-end})

(defn button-container
[bottom]
{:position :absolute
:bottom (- bottom 22)
:left 20
:right 20})
Original file line number Diff line number Diff line change
@@ -1,20 +1,27 @@
(ns status-im2.contexts.wallet.address-watch.view
(ns status-im2.contexts.wallet.select-address-to-watch.view
(:require
[clojure.string :as string]
[quo.core :as quo]
[quo.theme :as quo.theme]
[re-frame.core :as re-frame]
[react-native.clipboard :as clipboard]
[react-native.core :as rn]
[react-native.safe-area :as safe-area]
[reagent.core :as reagent]
[status-im2.contexts.wallet.address-watch.style :as style]
[status-im2.contexts.wallet.select-address-to-watch.style :as style]
[utils.i18n :as i18n]
[utils.re-frame :as rf]))

(defn view-internal
[]
(let [input-value (reagent/atom "")]
(let [top (safe-area/get-top)
bottom (safe-area/get-bottom)
input-value (reagent/atom "")
customization-color (rf/sub [:profile/customization-color])]
(fn []
[rn/view {:style {:flex 1}}
[rn/view
{:style {:flex 1
:margin-top top}}
[quo/page-nav
{:type :no-title
:icon-name :i/close
Expand All @@ -32,12 +39,18 @@
:container-style {:margin-right 12
:flex 1}
:weight :monospace
:on-change #(reset! input-value %)
:on-change-text #(reset! input-value %)
:default-value @input-value}]
[quo/button
{:icon-only? true
:type :outline} :i/scan]]
[rn/view {:style style/button-container}
[quo/text "[WIP] Bottom Actions"]]])))
[quo/button
{:customization-color customization-color
:disabled? (clojure.string/blank? @input-value)
:on-press #(re-frame/dispatch [:navigate-to
:address-to-watch-edit
{:address @input-value}])
:container-style (style/button-container bottom)}
(i18n/label :t/continue)]])))

(def view (quo.theme/with-theme view-internal))
6 changes: 5 additions & 1 deletion src/status_im2/navigation/screens.cljs
Original file line number Diff line number Diff line change
Expand Up @@ -39,13 +39,14 @@
[status-im2.contexts.syncing.syncing-devices-list.view :as settings-syncing]
[status-im2.contexts.wallet.account.bridge.view :as bridge]
[status-im2.contexts.wallet.account.view :as wallet-accounts]
[status-im2.contexts.wallet.address-watch.view :as wallet-address-watch]
[status-im2.contexts.wallet.add-watch-only-account.views :as address-add-edit]
[status-im2.contexts.wallet.collectible.view :as wallet-collectible]
[status-im2.contexts.wallet.create-account.edit-derivation-path.view :as wallet-edit-derivation-path]
[status-im2.contexts.wallet.create-account.view :as wallet-create-account]
[status-im2.contexts.wallet.edit-account.view :as wallet-edit-account]
[status-im2.contexts.wallet.saved-address.view :as wallet-saved-address]
[status-im2.contexts.wallet.scan-account.view :as scan-address]
[status-im2.contexts.wallet.select-address-to-watch.view :as wallet-address-watch]
[status-im2.contexts.wallet.send.select-address.view :as wallet-select-address]
[status-im2.navigation.options :as options]
[status-im2.navigation.transitions :as transitions]))
Expand Down Expand Up @@ -247,6 +248,9 @@
:options {:insets {:top? true}}
:component wallet-accounts/view}

{:name :address-to-watch-edit
:component address-add-edit/address-add-edit}

{:name :wallet-edit-account
:component wallet-edit-account/view}

Expand Down
2 changes: 2 additions & 0 deletions translations/en.json
Original file line number Diff line number Diff line change
Expand Up @@ -292,6 +292,7 @@
"create-profile": "Create profile",
"create-profile-password-info-box-title": "About your profile password",
"create-profile-password-info-box-description": "Your Status keys are the foundation of your self-sovereign identity in Web3. You have complete control over these keys, which you can use to sign transactions, access your data, and interact with Web3 services.\n\nYour keys are always securely stored on your device and protected by your Status profile password. Status doesn't know your password and can't reset it for you. If you forget your password, you may lose access to your Status profile and wallet funds.\n\nRemember your Status password and don't share it with anyone.",
"create-account": "Create account",
"create-a-pin": "Create a 6-digit passcode",
"create-a-puk": "Create a 12-digit PUK",
"create-group-chat": "Create group chat",
Expand Down Expand Up @@ -1564,6 +1565,7 @@
"delete-account": "Delete account",
"delete-keys-keycard": "Delete keys from Keycard",
"watch-only": "Watch-only",
"watch-address": "Watch address",
"cant-report-bug": "Can't report a bug",
"mail-should-be-configured": "Mail client should be configured",
"check-on-block-explorer": "Check on block explorer",
Expand Down

0 comments on commit 7a7fe52

Please sign in to comment.