[#19737] feat: edit a saved address (#20398)

This commit is contained in:
Mohsen 2024-06-12 12:55:38 +03:00 committed by GitHub
parent 672358fbce
commit af07205f20
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 58 additions and 10 deletions

View File

@ -2,6 +2,7 @@
(:require (:require
[status-im.contexts.wallet.data-store :as data-store] [status-im.contexts.wallet.data-store :as data-store]
[taoensso.timbre :as log] [taoensso.timbre :as log]
[utils.i18n :as i18n]
[utils.re-frame :as rf])) [utils.re-frame :as rf]))
(defn save-address (defn save-address
@ -99,6 +100,19 @@
(rf/reg-event-fx :wallet/add-saved-address-success add-saved-address-success) (rf/reg-event-fx :wallet/add-saved-address-success add-saved-address-success)
(defn edit-saved-address-success
[_]
{:fx [[:dispatch [:wallet/get-saved-addresses]]
[:dispatch [:navigate-back]]
[:dispatch-later
{:ms 100
:dispatch [:toasts/upsert
{:type :positive
:theme :dark
:text (i18n/label :t/address-edited)}]}]]})
(rf/reg-event-fx :wallet/edit-saved-address-success edit-saved-address-success)
(defn add-saved-address-failed (defn add-saved-address-failed
[_ [error]] [_ [error]]
{:fx [[:dispatch [:wallet/saved-addresses-rpc-error :add-save-address error]] {:fx [[:dispatch [:wallet/saved-addresses-rpc-error :add-save-address error]]

View File

@ -161,3 +161,20 @@
:text toast-message}]}]]] :text toast-message}]}]]]
(is (= (count result-fx) 3)) (is (= (count result-fx) 3))
(is (match? expected-fx result-fx))))) (is (match? expected-fx result-fx)))))
(deftest edit-saved-address-success-test
(testing "edit saved address success test - gets saved addresses, dismiss modals and dispatch toast"
(let [cofx {:db {}}
toast-message "Address edited"
effects (events/edit-saved-address-success cofx)
result-fx (:fx effects)
expected-fx [[:dispatch [:wallet/get-saved-addresses]]
[:dispatch [:navigate-back]]
[:dispatch-later
{:ms 100
:dispatch [:toasts/upsert
{:type :positive
:theme :dark
:text toast-message}]}]]]
(is (= (count result-fx) 3))
(is (match? expected-fx result-fx)))))

View File

@ -35,12 +35,16 @@
(defn view (defn view
[] []
(let [{:keys [address ens ens?]} (rf/sub [:wallet/saved-address]) (let [{:keys [edit?]} (rf/sub [:get-screen-params])
{:keys [address name customization-color ens ens? network-preferences-names]}
(rf/sub [:wallet/saved-address])
[network-prefixes address-without-prefix] (utils/split-prefix-and-address address) [network-prefixes address-without-prefix] (utils/split-prefix-and-address address)
[address-label set-address-label] (rn/use-state "") [address-label set-address-label] (rn/use-state (or name ""))
[address-color set-address-color] (rn/use-state (rand-nth colors/account-colors)) [address-color set-address-color] (rn/use-state (or customization-color
(rand-nth colors/account-colors)))
[selected-networks set-selected-networks] [selected-networks set-selected-networks]
(rn/use-state (network-utils/network-preference-prefix->network-names network-prefixes)) (rn/use-state (or network-preferences-names
(network-utils/network-preference-prefix->network-names network-prefixes)))
chain-short-names (rn/use-memo chain-short-names (rn/use-memo
#(network-utils/network-names->network-preference-prefix #(network-utils/network-names->network-preference-prefix
selected-networks) selected-networks)
@ -70,8 +74,10 @@
(fn [] (fn []
(rf/dispatch [:wallet/save-address (rf/dispatch [:wallet/save-address
{:on-success {:on-success
[:wallet/add-saved-address-success (if edit?
(i18n/label :t/address-saved)] [:wallet/edit-saved-address-success]
[:wallet/add-saved-address-success
(i18n/label :t/address-saved)])
:on-error :on-error
[:wallet/add-saved-address-failed] [:wallet/add-saved-address-failed]
:name address-label :name address-label
@ -104,9 +110,9 @@
:header [quo/page-nav :header [quo/page-nav
{:type :no-title {:type :no-title
:background :blur :background :blur
:icon-name :i/arrow-left :icon-name (if edit? :i/close :i/arrow-left)
:on-press navigate-back :on-press navigate-back
:margin-top (safe-area/get-top) :margin-top (when-not edit? (safe-area/get-top))
:accessibility-label :save-address-page-nav}] :accessibility-label :save-address-page-nav}]
:footer [quo/button :footer [quo/button
{:accessibility-label :save-address-button {:accessibility-label :save-address-button

View File

@ -5,7 +5,6 @@
[quo.foundations.colors :as colors] [quo.foundations.colors :as colors]
[react-native.core :as rn] [react-native.core :as rn]
[react-native.platform :as platform] [react-native.platform :as platform]
[status-im.common.not-implemented :as not-implemented]
[status-im.constants :as constants] [status-im.constants :as constants]
[status-im.contexts.settings.wallet.saved-addresses.sheets.remove-address.view :as remove-address] [status-im.contexts.settings.wallet.saved-addresses.sheets.remove-address.view :as remove-address]
[utils.i18n :as i18n] [utils.i18n :as i18n]
@ -62,6 +61,13 @@
open-show-address-qr (rn/use-callback open-show-address-qr (rn/use-callback
#(rf/dispatch [:open-modal #(rf/dispatch [:open-modal
:screen/settings.share-saved-address opts]) :screen/settings.share-saved-address opts])
[opts])
open-edit-saved-address (rn/use-callback
(fn []
(rf/dispatch [:wallet/set-address-to-save opts])
(rf/dispatch [:open-modal
:screen/settings.edit-saved-address
{:edit? true}]))
[opts])] [opts])]
[quo/action-drawer [quo/action-drawer
[[{:icon :i/arrow-up [[{:icon :i/arrow-up
@ -102,7 +108,7 @@
{:icon :i/edit {:icon :i/edit
:label (i18n/label :t/edit-account) :label (i18n/label :t/edit-account)
:blur? true :blur? true
:on-press not-implemented/alert :on-press open-edit-saved-address
:accessibility-label :edit-saved-address} :accessibility-label :edit-saved-address}
{:icon :i/delete {:icon :i/delete
:label (i18n/label :t/remove-address) :label (i18n/label :t/remove-address)

View File

@ -567,6 +567,10 @@
:options options/transparent-modal-screen-options :options options/transparent-modal-screen-options
:component wallet-save-address/view} :component wallet-save-address/view}
{:name :screen/settings.edit-saved-address
:options (assoc options/dark-screen :sheet? true)
:component wallet-save-address/view}
{:name :screen/settings.add-address-to-save {:name :screen/settings.add-address-to-save
:options options/transparent-modal-screen-options :options options/transparent-modal-screen-options
:component wallet-add-address-to-save/view} :component wallet-add-address-to-save/view}

View File

@ -2691,6 +2691,7 @@
"this-address-is-already-saved": "This address is already saved", "this-address-is-already-saved": "This address is already saved",
"this-ens-name-is-not-registered-yet": "This ENS name is not registered yet", "this-ens-name-is-not-registered-yet": "This ENS name is not registered yet",
"address-saved": "Address saved", "address-saved": "Address saved",
"address-edited": "Address edited",
"dapp-will-be-able-to": "{{dapp-name}} will be able to:", "dapp-will-be-able-to": "{{dapp-name}} will be able to:",
"check-your-account-balance-and-activity": "Check your account balance and activity", "check-your-account-balance-and-activity": "Check your account balance and activity",
"request-txns-and-message-signing": "Request transactions and message signing", "request-txns-and-message-signing": "Request transactions and message signing",