From 1b9c3b577c835ee6ed83d6d86c42c3ea63835618 Mon Sep 17 00:00:00 2001 From: Ulises Manuel <90291778+ulisesmac@users.noreply.github.com> Date: Mon, 16 Dec 2024 06:47:06 -0600 Subject: [PATCH] Hide viewing community token requirements under a feature flag (#21814) Co-authored-by: Shivek Khurana --- .../actions/accounts_selection/view.cljs | 123 +++++++++--------- .../addresses_for_permissions/view.cljs | 37 +++--- .../actions/community_options/view.cljs | 10 +- src/status_im/feature_flags.cljs | 4 +- 4 files changed, 90 insertions(+), 84 deletions(-) diff --git a/src/status_im/contexts/communities/actions/accounts_selection/view.cljs b/src/status_im/contexts/communities/actions/accounts_selection/view.cljs index 4fe3b6b1cf..0f978e8abb 100644 --- a/src/status_im/contexts/communities/actions/accounts_selection/view.cljs +++ b/src/status_im/contexts/communities/actions/accounts_selection/view.cljs @@ -10,72 +10,73 @@ [status-im.contexts.communities.actions.community-rules.view :as community-rules] [status-im.contexts.communities.actions.permissions-sheet.view :as permissions-sheet] [status-im.contexts.communities.utils :as communities.utils] + [status-im.feature-flags :as ff] [utils.i18n :as i18n] [utils.re-frame :as rf])) (defn view [] - (let [theme (quo.theme/use-theme) - {id :community-id} (rf/sub [:get-screen-params]) + (let [theme (quo.theme/use-theme) + {id :community-id} (rf/sub [:get-screen-params]) {:keys [name color images joined]} (rf/sub [:communities/community id]) - has-permissions? (rf/sub [:communities/has-permissions? id]) - airdrop-account (rf/sub [:communities/airdrop-account id]) - revealed-accounts (rf/sub [:communities/accounts-to-reveal id]) - revealed-accounts-count (count revealed-accounts) - wallet-accounts-count (count (rf/sub [:wallet/operable-accounts])) - addresses-shared-text (if (= revealed-accounts-count wallet-accounts-count) - (i18n/label :t/all-addresses) - (i18n/label-pluralize - revealed-accounts-count - :t/address-count)) - {:keys [highest-permission-role]} (rf/sub [:community/token-gated-overview id]) - highest-role-text (i18n/label (communities.utils/role->translation-key - highest-permission-role - :t/member)) - can-edit-addresses? (rf/sub [:communities/can-edit-shared-addresses? id]) - navigate-back (rn/use-callback #(rf/dispatch [:navigate-back])) - - show-addresses-for-permissions - (rn/use-callback - (fn [] - (if can-edit-addresses? - (rf/dispatch [:open-modal :addresses-for-permissions {:community-id id}]) - (rf/dispatch [:show-bottom-sheet - {:community-id id - :content (fn [] [addresses-for-permissions/view])}]))) - [can-edit-addresses?]) - - show-airdrop-addresses - (rn/use-callback - (fn [] - (if can-edit-addresses? - (rf/dispatch [:open-modal :address-for-airdrop {:community-id id}]) - (rf/dispatch [:show-bottom-sheet - {:community-id id - :content (fn [] [airdrop-addresses/view])}]))) - [can-edit-addresses?]) - - confirm-choices - (rn/use-callback - (fn [] - (rf/dispatch - [:standard-auth/authorize - {:auth-button-label (if can-edit-addresses? - (i18n/label :t/edit-shared-addresses) - (i18n/label :t/request-to-join)) - :on-auth-success (fn [password] - (rf/dispatch - [:communities/request-to-join-with-addresses - {:community-id id - :password password}]))}]) - (navigate-back)) - [can-edit-addresses?]) - - open-permission-sheet - (rn/use-callback (fn [] - (rf/dispatch [:show-bottom-sheet - {:content (fn [] [permissions-sheet/view id])}])) - [id])] + has-permissions? (rf/sub [:communities/has-permissions? id]) + airdrop-account (rf/sub [:communities/airdrop-account id]) + revealed-accounts (rf/sub [:communities/accounts-to-reveal id]) + revealed-accounts-count (count revealed-accounts) + wallet-accounts-count (count (rf/sub [:wallet/operable-accounts])) + addresses-shared-text (if (= revealed-accounts-count wallet-accounts-count) + (i18n/label :t/all-addresses) + (i18n/label-pluralize + revealed-accounts-count + :t/address-count)) + {:keys [highest-permission-role]} (rf/sub [:community/token-gated-overview id]) + highest-role-text (i18n/label (communities.utils/role->translation-key + highest-permission-role + :t/member)) + can-edit-addresses? (rf/sub [:communities/can-edit-shared-addresses? id]) + navigate-back (rn/use-callback #(rf/dispatch [:navigate-back])) + show-addresses-for-permissions (rn/use-callback + (fn [] + (if can-edit-addresses? + (rf/dispatch [:open-modal :addresses-for-permissions + {:community-id id}]) + (rf/dispatch [:show-bottom-sheet + {:community-id id + :content + addresses-for-permissions/view}]))) + [can-edit-addresses?]) + show-airdrop-addresses (rn/use-callback + (fn [] + (if can-edit-addresses? + (rf/dispatch [:open-modal :address-for-airdrop + {:community-id id}]) + (rf/dispatch [:show-bottom-sheet + {:community-id id + :content airdrop-addresses/view}]))) + [can-edit-addresses?]) + confirm-choices (rn/use-callback + (fn [] + (rf/dispatch + [:standard-auth/authorize + {:auth-button-label (if can-edit-addresses? + (i18n/label + :t/edit-shared-addresses) + (i18n/label :t/request-to-join)) + :on-auth-success + (fn [password] + (rf/dispatch + [:communities/request-to-join-with-addresses + {:community-id id + :password password}]))}]) + (navigate-back)) + [can-edit-addresses?]) + open-permission-sheet (rn/use-callback + (fn [] + (rf/dispatch + [:show-bottom-sheet + {:content (fn [] + [permissions-sheet/view id])}])) + [id])] (rn/use-mount (fn [] (rf/dispatch [:communities/initialize-permission-addresses id]))) @@ -86,7 +87,7 @@ :icon-name :i/close :on-press navigate-back :accessibility-label :back-button} - has-permissions? + (and has-permissions? (ff/enabled? ::ff/community.view-token-requirements)) (assoc :right-side [{:icon-left :i/unlocked :on-press open-permission-sheet diff --git a/src/status_im/contexts/communities/actions/addresses_for_permissions/view.cljs b/src/status_im/contexts/communities/actions/addresses_for_permissions/view.cljs index cef25d3846..15522f8995 100644 --- a/src/status_im/contexts/communities/actions/addresses_for_permissions/view.cljs +++ b/src/status_im/contexts/communities/actions/addresses_for_permissions/view.cljs @@ -7,6 +7,7 @@ [status-im.constants :as constants] [status-im.contexts.communities.actions.addresses-for-permissions.style :as style] [status-im.contexts.communities.actions.permissions-sheet.view :as permissions-sheet] + [status-im.feature-flags :as ff] [utils.i18n :as i18n] [utils.money :as money] [utils.re-frame :as rf])) @@ -122,23 +123,23 @@ (defn- page-top [{:keys [community-id identical-choices? can-edit-addresses?]}] (let [{:keys [name logo color]} (rf/sub [:communities/for-context-tag community-id]) - has-permissions? (rf/sub [:communities/has-permissions? community-id]) - confirm-discard-changes - (rn/use-callback - (fn [] - (if identical-choices? - (rf/dispatch [:dismiss-modal :addresses-for-permissions]) - (rf/dispatch [:show-bottom-sheet - {:content (fn [] [confirm-discard-drawer - community-id])}]))) - [identical-choices? community-id]) - - open-permission-sheet - (rn/use-callback (fn [] - (rf/dispatch [:show-bottom-sheet - {:content (fn [] [permissions-sheet/view - community-id])}])) - [community-id])] + has-permissions? (rf/sub [:communities/has-permissions? community-id]) + confirm-discard-changes (rn/use-callback + (fn [] + (if identical-choices? + (rf/dispatch [:dismiss-modal :addresses-for-permissions]) + (rf/dispatch [:show-bottom-sheet + {:content (fn [] + [confirm-discard-drawer + community-id])}]))) + [identical-choices? community-id]) + open-permission-sheet (rn/use-callback + (fn [] + (rf/dispatch [:show-bottom-sheet + {:content (fn [] + [permissions-sheet/view + community-id])}])) + [community-id])] [:<> (when can-edit-addresses? [quo/page-nav @@ -161,7 +162,7 @@ :community-name name :community-logo logo :customization-color color} - has-permissions? + (and has-permissions? (ff/enabled? ::ff/community.view-token-requirements)) (assoc :button-icon :i/info :button-type :grey :on-button-press open-permission-sheet))])])) diff --git a/src/status_im/contexts/communities/actions/community_options/view.cljs b/src/status_im/contexts/communities/actions/community_options/view.cljs index 2670c4daee..c3f6b5cae8 100644 --- a/src/status_im/contexts/communities/actions/community_options/view.cljs +++ b/src/status_im/contexts/communities/actions/community_options/view.cljs @@ -40,7 +40,8 @@ :right-icon :i/chevron-right :accessibility-label :view-token-gating :on-press #(rf/dispatch [:show-bottom-sheet - {:content (fn [] [permissions-sheet/view id]) + {:content (fn [] + [permissions-sheet/view id]) :padding-bottom-override 16}]) :label (i18n/label :t/view-token-gating)}) @@ -138,7 +139,9 @@ [id token-gated? intro-message test-networks-enabled?] (let [common [(show-qr id) (share-community id)] specific (cond - (and token-gated? (not test-networks-enabled?)) + (and token-gated? + (not test-networks-enabled?) + (ff/enabled? ::ff/community.view-token-requirements)) [(invite-contacts id) (view-token-gating id)] token-gated? @@ -161,7 +164,8 @@ [id token-gated? muted? muted-till color intro-message] [[(view-members id) (view-rules id intro-message) - (when token-gated? (view-token-gating id)) + (when (and token-gated? (ff/enabled? ::ff/community.view-token-requirements)) + (view-token-gating id)) (when (ff/enabled? ::ff/community.edit-account-selection) (edit-shared-addresses id)) (mark-as-read id) diff --git a/src/status_im/feature_flags.cljs b/src/status_im/feature_flags.cljs index 1a24061a8b..23cde910f0 100644 --- a/src/status_im/feature_flags.cljs +++ b/src/status_im/feature_flags.cljs @@ -11,13 +11,13 @@ (def ^:private initial-flags {::community.edit-account-selection (enabled-in-env? :FLAG_EDIT_ACCOUNT_SELECTION_ENABLED) + ::community.view-token-requirements (enabled-in-env? :FLAG_VIEW_TOKEN_REQUIREMENTS) ;; Feature toggled (off by default) because the desktop app disabled this ;; feature and we want both clients in sync. We keep the code because it ;; works and we may re-enable it by default. ::profile-pictures-visibility (enabled-in-env? :FLAG_PROFILE_PICTURES_VISIBILITY_ENABLED) - ::settings.import-all-keypairs (enabled-in-env? - :FLAG_WALLET_SETTINGS_IMPORT_ALL_KEYPAIRS) + ::settings.import-all-keypairs (enabled-in-env? :FLAG_WALLET_SETTINGS_IMPORT_ALL_KEYPAIRS) ::wallet.add-watched-address (enabled-in-env? :FLAG_ADD_WATCHED_ADDRESS) ::wallet.advanced-sending (enabled-in-env? :FLAG_ADVANCED_SENDING) ::wallet.assets-modal-hide (enabled-in-env? :FLAG_ASSETS_MODAL_HIDE)