From d6992e63db6a9c30cb1061c0e9d6f4a7c1600895 Mon Sep 17 00:00:00 2001 From: Jamie Caprani Date: Mon, 24 Jun 2024 17:38:47 +0100 Subject: [PATCH] fix(wallet): native share should point to opensea link --- .../contexts/wallet/account/tabs/view.cljs | 5 +-- .../contexts/wallet/collectible/events.cljs | 33 ++++++++++++------- .../wallet/collectible/options/view.cljs | 23 +++++++++---- .../contexts/wallet/collectible/view.cljs | 12 ++++--- .../contexts/wallet/home/tabs/view.cljs | 17 ++++------ 5 files changed, 57 insertions(+), 33 deletions(-) diff --git a/src/status_im/contexts/wallet/account/tabs/view.cljs b/src/status_im/contexts/wallet/account/tabs/view.cljs index aabef2c98a8..9a9a2179b34 100644 --- a/src/status_im/contexts/wallet/account/tabs/view.cljs +++ b/src/status_im/contexts/wallet/account/tabs/view.cljs @@ -16,12 +16,13 @@ (rf/dispatch [:wallet/get-collectible-details id])) (defn- on-collectible-long-press - [{:keys [preview-url collectible-details]}] + [{:keys [preview-url collectible-details id]}] (rf/dispatch [:show-bottom-sheet {:content (fn [] [options-drawer/view {:name (:name collectible-details) - :image (:uri preview-url)}])}])) + :image (:uri preview-url) + :id id}])}])) (defn- on-end-reached [] diff --git a/src/status_im/contexts/wallet/collectible/events.cljs b/src/status_im/contexts/wallet/collectible/events.cljs index 2c5a898fc42..96e31d99f33 100644 --- a/src/status_im/contexts/wallet/collectible/events.cljs +++ b/src/status_im/contexts/wallet/collectible/events.cljs @@ -1,5 +1,6 @@ (ns status-im.contexts.wallet.collectible.events (:require [camel-snake-kebab.extras :as cske] + [react-native.platform :as platform] [status-im.contexts.wallet.collectible.utils :as collectible-utils] [taoensso.timbre :as log] [utils.ethereum.chain :as chain] @@ -200,25 +201,35 @@ (rf/reg-event-fx :wallet/trigger-share-collectible (fn [_ [{:keys [title uri]}]] - {:fx [[:effects.share/open - {:title title - :message title - :url uri}]]})) + {:fx [[:dispatch + [:open-share + {:options (if platform/ios? + {:activityItemSources + [{:placeholderItem {:type :text + :content uri} + :item {:default {:type :url + :content uri}} + :linkMetadata {:title title}}]} + {:title title + :subject title + :url uri + :isNewTask true})}]]]})) (rf/reg-event-fx :wallet/share-collectible - (fn [_ [{:keys [title uri in-sheet?]}]] - (if in-sheet? + (fn [{:keys [db]} [{:keys [title token-id contract-address chain-id]}]] + (let [uri (collectible-utils/get-opensea-collectible-url + {:chain-id chain-id + :token-id token-id + :contract-address contract-address + :test-networks-enabled? (get-in db [:profile/profile :test-networks-enabled?]) + :is-goerli-enabled? (get-in db [:profile/profile :is-goerli-enabled?])})] {:fx [[:dispatch [:hide-bottom-sheet]] [:dispatch-later {:ms 600 :dispatch [:wallet/trigger-share-collectible {:title title - :uri uri}]}]]} - {:fx [[:dispatch - [:wallet/trigger-share-collectible - {:title title - :uri uri}]]]}))) + :uri uri}]}]]}))) (rf/reg-event-fx :wallet/navigate-to-opensea diff --git a/src/status_im/contexts/wallet/collectible/options/view.cljs b/src/status_im/contexts/wallet/collectible/options/view.cljs index 094d5a5e38c..cc0adc95bd6 100644 --- a/src/status_im/contexts/wallet/collectible/options/view.cljs +++ b/src/status_im/contexts/wallet/collectible/options/view.cljs @@ -7,15 +7,18 @@ [utils.url :as url])) (defn view - [{:keys [image name chain-id address]}] - (let [uri (url/replace-port image (rf/sub [:mediaserver/port]))] + [{:keys [image name id]}] + (let [chain-id (get-in id [:contract-id :chain-id]) + token-id (:token-id id) + contract-address (get-in id [:contract-id :address]) + uri (url/replace-port image (rf/sub [:mediaserver/port]))] [quo/action-drawer [[{:icon :i/link :accessibility-label :view-on-etherscan :on-press (fn [] (rf/dispatch [:wallet/navigate-to-chain-explorer-from-bottom-sheet (external-links/get-explorer-url-by-chain-id chain-id) - address])) + contract-address])) :label (i18n/label :t/view-on-eth) :right-icon :i/external}] [{:icon :i/save @@ -34,6 +37,14 @@ :accessibility-label :share-collectible :label (i18n/label :t/share-collectible) :on-press #(rf/dispatch [:wallet/share-collectible - {:in-sheet? true - :title name - :uri uri}])}]]])) + {:token-id token-id + :contract-address contract-address + :chain-id chain-id + :title name}])}]]])) + +"222" +"https://nft-cdn.alchemy.com/eth-mainnet/219530f9b3a7901f02169334d593823e" +"Tengria #913" +{:contract-id {:chain-id 1 :address "0x1a4ceef5d575c2228d142ef862a9b60be8161e7f"} :token-id "913"} + +{:contract-id {:chain-id 1 :address "0x1a4ceef5d575c2228d142ef862a9b60be8161e7f"} :token-id "913"} diff --git a/src/status_im/contexts/wallet/collectible/view.cljs b/src/status_im/contexts/wallet/collectible/view.cljs index 7f3122f1952..7b456d1c435 100644 --- a/src/status_im/contexts/wallet/collectible/view.cljs +++ b/src/status_im/contexts/wallet/collectible/view.cljs @@ -79,7 +79,8 @@ (js/setTimeout #(rf/dispatch [:wallet/clear-last-collectible-details]) 700)) (defn animated-header - [{:keys [scroll-amount title-opacity page-nav-type picture title description theme]}] + [{:keys [scroll-amount title-opacity page-nav-type picture title description theme + id]}] (let [blur-amount (header-animations/use-blur-amount scroll-amount) layer-opacity (header-animations/use-layer-opacity scroll-amount @@ -110,7 +111,8 @@ {:content (fn [] [options-drawer/view {:name title - :image picture}]) + :image picture + :id id}]) :theme theme}])}] :center-opacity title-opacity}]]]])) @@ -197,7 +199,8 @@ [options-drawer/view {:name collectible-name :image - preview-uri}])}])}]))) + preview-uri + :id id}])}])}]))) :on-collectible-load (fn [] ;; We need to delay the measurement because the ;; navigation has an animation @@ -246,7 +249,8 @@ {collection-name :name} collection-data] [rn/view {:style (style/background-color theme)} [animated-header - {:scroll-amount scroll-amount + {:id (:id collectible) + :scroll-amount scroll-amount :title-opacity title-opacity :page-nav-type :title-description :picture preview-uri diff --git a/src/status_im/contexts/wallet/home/tabs/view.cljs b/src/status_im/contexts/wallet/home/tabs/view.cljs index 1871381ea98..7ef4dcffe60 100644 --- a/src/status_im/contexts/wallet/home/tabs/view.cljs +++ b/src/status_im/contexts/wallet/home/tabs/view.cljs @@ -9,16 +9,13 @@ [utils.re-frame :as rf])) (defn- on-collectible-long-press - [{:keys [preview-url collectible-details id]}] - (let [chain-id (get-in id [:contract-id :chain-id]) - address (get-in id [:contract-id :address])] - (rf/dispatch [:show-bottom-sheet - {:content (fn [] - [options-drawer/view - {:chain-id chain-id - :address address - :name (:name collectible-details) - :image (:uri preview-url)}])}]))) + [{:keys [preview-url :collectible-data id]}] + (rf/dispatch [:show-bottom-sheet + {:content (fn [] + [options-drawer/view + {:id id + :name (:name collectible-data) + :image (:uri preview-url)}])}])) (defn- on-collectible-press [{:keys [id]}]