parent
2da6d9dffb
commit
0d6bd9c15d
|
@ -56,6 +56,10 @@
|
||||||
:shell? true
|
:shell? true
|
||||||
:content (fn []
|
:content (fn []
|
||||||
[remove-address/view opts])}])
|
[remove-address/view opts])}])
|
||||||
|
[opts])
|
||||||
|
open-show-address-qr (rn/use-callback
|
||||||
|
#(rf/dispatch [:open-modal
|
||||||
|
:screen/settings.share-saved-address opts])
|
||||||
[opts])]
|
[opts])]
|
||||||
[quo/action-drawer
|
[quo/action-drawer
|
||||||
[[{:icon :i/arrow-up
|
[[{:icon :i/arrow-up
|
||||||
|
@ -91,7 +95,7 @@
|
||||||
{:icon :i/qr-code
|
{:icon :i/qr-code
|
||||||
:label (i18n/label :t/show-address-qr)
|
:label (i18n/label :t/show-address-qr)
|
||||||
:blur? true
|
:blur? true
|
||||||
:on-press not-implemented/alert
|
:on-press open-show-address-qr
|
||||||
:accessibility-label :show-address-qr-code}
|
:accessibility-label :show-address-qr-code}
|
||||||
{:icon :i/edit
|
{:icon :i/edit
|
||||||
:label (i18n/label :t/edit-account)
|
:label (i18n/label :t/edit-account)
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
(ns status-im.contexts.settings.wallet.saved-addresses.sheets.share-address.style)
|
||||||
|
|
||||||
|
(def screen-container
|
||||||
|
{:flex 1})
|
||||||
|
|
||||||
|
(def top-container
|
||||||
|
{:margin-bottom 8})
|
||||||
|
|
||||||
|
(def qr-wrapper
|
||||||
|
{:padding-horizontal 20})
|
|
@ -0,0 +1,100 @@
|
||||||
|
(ns status-im.contexts.settings.wallet.saved-addresses.sheets.share-address.view
|
||||||
|
(:require
|
||||||
|
[quo.core :as quo]
|
||||||
|
[react-native.core :as rn]
|
||||||
|
[react-native.platform :as platform]
|
||||||
|
[status-im.contexts.settings.wallet.saved-addresses.sheets.share-address.style :as style]
|
||||||
|
[status-im.contexts.wallet.common.utils :as utils]
|
||||||
|
[status-im.contexts.wallet.common.utils.networks :as network-utils]
|
||||||
|
[status-im.contexts.wallet.sheets.network-preferences.view :as network-preferences]
|
||||||
|
[utils.i18n :as i18n]
|
||||||
|
[utils.image-server :as image-server]
|
||||||
|
[utils.re-frame :as rf]))
|
||||||
|
|
||||||
|
(def qr-size 500)
|
||||||
|
|
||||||
|
(defn- navigate-back
|
||||||
|
[]
|
||||||
|
(rf/dispatch [:navigate-back]))
|
||||||
|
|
||||||
|
(defn- share-action
|
||||||
|
[address share-title]
|
||||||
|
(rf/dispatch [:open-share
|
||||||
|
{:options (if platform/ios?
|
||||||
|
{:activityItemSources [{:placeholderItem {:type :text
|
||||||
|
:content address}
|
||||||
|
:item {:default {:type :text
|
||||||
|
:content
|
||||||
|
address}}
|
||||||
|
:linkMetadata {:title share-title}}]}
|
||||||
|
{:title share-title
|
||||||
|
:subject share-title
|
||||||
|
:message address
|
||||||
|
:isNewTask true})}]))
|
||||||
|
|
||||||
|
(defn- open-preferences
|
||||||
|
[selected-networks set-selected-networks]
|
||||||
|
(let [on-save (fn [chain-ids]
|
||||||
|
(rf/dispatch [:hide-bottom-sheet])
|
||||||
|
(set-selected-networks (map network-utils/id->network chain-ids)))
|
||||||
|
sheet-content (fn []
|
||||||
|
[network-preferences/view
|
||||||
|
{:blur? true
|
||||||
|
:selected-networks (set selected-networks)
|
||||||
|
:on-save on-save
|
||||||
|
:button-label (i18n/label :t/display)}])]
|
||||||
|
(rf/dispatch [:show-bottom-sheet
|
||||||
|
{:theme :dark
|
||||||
|
:shell? true
|
||||||
|
:content sheet-content}])))
|
||||||
|
|
||||||
|
(defn view
|
||||||
|
[]
|
||||||
|
(let [{:keys [name address customization-color
|
||||||
|
network-preferences-names]} (rf/sub [:get-screen-params])
|
||||||
|
[wallet-type set-wallet-type] (rn/use-state :legacy)
|
||||||
|
[selected-networks set-selected-networks] (rn/use-state network-preferences-names)
|
||||||
|
on-settings-press (rn/use-callback #(open-preferences
|
||||||
|
selected-networks
|
||||||
|
set-selected-networks)
|
||||||
|
[selected-networks])
|
||||||
|
on-legacy-press (rn/use-callback #(set-wallet-type :legacy))
|
||||||
|
on-multichain-press (rn/use-callback #(set-wallet-type :multichain))
|
||||||
|
share-title (str name " " (i18n/label :t/address))
|
||||||
|
qr-url (rn/use-memo #(utils/get-wallet-qr
|
||||||
|
{:wallet-type wallet-type
|
||||||
|
:selected-networks selected-networks
|
||||||
|
:address address})
|
||||||
|
[wallet-type selected-networks address])
|
||||||
|
qr-media-server-uri (rn/use-memo
|
||||||
|
#(image-server/get-qr-image-uri-for-any-url
|
||||||
|
{:url qr-url
|
||||||
|
:port (rf/sub [:mediaserver/port])
|
||||||
|
:qr-size qr-size
|
||||||
|
:error-level :highest})
|
||||||
|
[qr-url])]
|
||||||
|
[quo/overlay
|
||||||
|
{:type :shell
|
||||||
|
:top-inset? true}
|
||||||
|
[rn/view {:style style/screen-container}
|
||||||
|
[quo/page-nav
|
||||||
|
{:icon-name :i/close
|
||||||
|
:on-press navigate-back
|
||||||
|
:background :blur
|
||||||
|
:accessibility-label :top-bar}]
|
||||||
|
[quo/page-top
|
||||||
|
{:title (i18n/label :t/share-address)
|
||||||
|
:container-style style/top-container}]
|
||||||
|
[rn/view {:style style/qr-wrapper}
|
||||||
|
[quo/share-qr-code
|
||||||
|
{:type :saved-address
|
||||||
|
:address wallet-type
|
||||||
|
:qr-image-uri qr-media-server-uri
|
||||||
|
:qr-data qr-url
|
||||||
|
:networks selected-networks
|
||||||
|
:on-share-press #(share-action qr-url share-title)
|
||||||
|
:full-name name
|
||||||
|
:customization-color customization-color
|
||||||
|
:on-legacy-press on-legacy-press
|
||||||
|
:on-multichain-press on-multichain-press
|
||||||
|
:on-settings-press on-settings-press}]]]]))
|
|
@ -20,7 +20,7 @@
|
||||||
:container-style style/empty-container-style}]))
|
:container-style style/empty-container-style}]))
|
||||||
|
|
||||||
(defn- saved-address
|
(defn- saved-address
|
||||||
[{:keys [name address chain-short-names customization-color has-ens? ens]}]
|
[{:keys [name address chain-short-names customization-color has-ens? ens network-preferences-names]}]
|
||||||
(let [full-address (str chain-short-names address)
|
(let [full-address (str chain-short-names address)
|
||||||
on-press-saved-address (rn/use-callback
|
on-press-saved-address (rn/use-callback
|
||||||
#(rf/dispatch
|
#(rf/dispatch
|
||||||
|
@ -33,6 +33,7 @@
|
||||||
:chain-short-names chain-short-names
|
:chain-short-names chain-short-names
|
||||||
:full-address full-address
|
:full-address full-address
|
||||||
:name name
|
:name name
|
||||||
|
:network-preferences-names network-preferences-names
|
||||||
:customization-color customization-color}])}])
|
:customization-color customization-color}])}])
|
||||||
[address chain-short-names full-address name customization-color])]
|
[address chain-short-names full-address name customization-color])]
|
||||||
[quo/saved-address
|
[quo/saved-address
|
||||||
|
|
|
@ -66,6 +66,8 @@
|
||||||
[status-im.contexts.settings.wallet.saved-addresses.add-address-to-save.view :as
|
[status-im.contexts.settings.wallet.saved-addresses.add-address-to-save.view :as
|
||||||
wallet-add-address-to-save]
|
wallet-add-address-to-save]
|
||||||
[status-im.contexts.settings.wallet.saved-addresses.save-address.view :as wallet-save-address]
|
[status-im.contexts.settings.wallet.saved-addresses.save-address.view :as wallet-save-address]
|
||||||
|
[status-im.contexts.settings.wallet.saved-addresses.sheets.share-address.view :as
|
||||||
|
share-saved-address]
|
||||||
[status-im.contexts.settings.wallet.saved-addresses.view :as saved-addresses-settings]
|
[status-im.contexts.settings.wallet.saved-addresses.view :as saved-addresses-settings]
|
||||||
[status-im.contexts.settings.wallet.wallet-options.view :as wallet-options]
|
[status-im.contexts.settings.wallet.wallet-options.view :as wallet-options]
|
||||||
[status-im.contexts.shell.activity-center.view :as activity-center]
|
[status-im.contexts.shell.activity-center.view :as activity-center]
|
||||||
|
@ -557,6 +559,10 @@
|
||||||
: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}
|
||||||
|
|
||||||
|
{:name :screen/settings.share-saved-address
|
||||||
|
:options options/transparent-screen-options
|
||||||
|
:component share-saved-address/view}
|
||||||
|
|
||||||
{:name :screen/settings-messages
|
{:name :screen/settings-messages
|
||||||
:options options/transparent-modal-screen-options
|
:options options/transparent-modal-screen-options
|
||||||
:component settings.messages/view}
|
:component settings.messages/view}
|
||||||
|
|
Loading…
Reference in New Issue