diff --git a/.env b/.env index cf9de1a595..e4d6f8e408 100644 --- a/.env +++ b/.env @@ -1,7 +1,7 @@ TESTFAIRY_ENABLED=0 STUB_STATUS_GO=0 ETHEREUM_DEV_CLUSTER=1 -MAINNET_NETWORKS_ENABLED=1 +MAINNET_WARNING_ENABLED=0 OFFLINE_INBOX_ENABLED=1 OFFLINE_INBOX_MANY_ENABLED=1 LOG_LEVEL=debug diff --git a/.env.e2e b/.env.e2e index cc1fd8c456..bfb4b93527 100644 --- a/.env.e2e +++ b/.env.e2e @@ -1,7 +1,7 @@ TESTFAIRY_ENABLED=1 STUB_STATUS_GO=0 ETHEREUM_DEV_CLUSTER=1 -MAINNET_NETWORKS_ENABLED=1 +MAINNET_WARNING_ENABLED=0 OFFLINE_INBOX_ENABLED=1 OFFLINE_INBOX_MANY_ENABLED=0 LOG_LEVEL=debug diff --git a/.env.jenkins b/.env.jenkins index f2c68ece79..47c6920180 100644 --- a/.env.jenkins +++ b/.env.jenkins @@ -1,7 +1,7 @@ TESTFAIRY_ENABLED=1 STUB_STATUS_GO=0 ETHEREUM_DEV_CLUSTER=1 -MAINNET_NETWORKS_ENABLED=1 +MAINNET_WARNING_ENABLED=0 OFFLINE_INBOX_ENABLED=1 OFFLINE_INBOX_MANY_ENABLED=0 LOG_LEVEL=debug diff --git a/.env.prod b/.env.prod index 20a84eecc8..371be592a2 100644 --- a/.env.prod +++ b/.env.prod @@ -1,7 +1,7 @@ TESTFAIRY_ENABLED=0 STUB_STATUS_GO=0 ETHEREUM_DEV_CLUSTER=0 -MAINNET_NETWORKS_ENABLED=0 +MAINNET_WARNING_ENABLED=1 OFFLINE_INBOX_ENABLED=0 OFFLINE_INBOX_MANY_ENABLED=0 LOG_LEVEL=info diff --git a/Jenkinsfile.parameters b/Jenkinsfile.parameters index fab28c2d5a..c26f7ca21b 100644 --- a/Jenkinsfile.parameters +++ b/Jenkinsfile.parameters @@ -46,6 +46,8 @@ node ('macos1') { sh 'echo MANY_WHISPER_TOPICS_ENABLED=' + MANY_WHISPER_TOPICS_ENABLED + '>>' + '.env' sh 'echo POW_TARGET=' + POW_TARGET + '>>' + '.env' sh 'echo POW_TIME=' + POW_TIME + '>>' + '.env' + sh 'echo MAINNET_WARNING_ENABLED=' + MAINNET_WARNING_ENABLED + '>>' + '.env' + sh 'echo DEFAULT_NETWORK=' + DEFAULT_NETWORK + '>>' + '.env' sh 'echo "**********************************************************************"' sh 'echo PARAMETERIZED BUILD - USING CUSTOM ENVIRONMENT' diff --git a/src/status_im/constants.cljs b/src/status_im/constants.cljs index f97b3b26c5..7e515ada7a 100644 --- a/src/status_im/constants.cljs +++ b/src/status_im/constants.cljs @@ -85,7 +85,7 @@ (def default-networks (transform-config (merge testnet-networks - (when config/mainnet-networks-enabled? mainnet-networks)))) + mainnet-networks))) (def default-wnodes {:testnet {"main" {:id "main" diff --git a/src/status_im/translations/en.cljs b/src/status_im/translations/en.cljs index 51e12f5e19..9cdab342d7 100644 --- a/src/status_im/translations/en.cljs +++ b/src/status_im/translations/en.cljs @@ -590,6 +590,10 @@ :close-app-button "Confirm" :connect-wnode-content "Connect to {{name}}?" + :mainnet-warning-title "Warning!" + :mainnet-warning-text "While we highly appreciate your contribution as a tester of Status, we’d like to point out the dangers. You’re switching to Mainnet mode which is still in Alpha. This means it is still in development and has not been audited yet. Some of the risks you may be exposed to include:\n\n- Accounts may be unrecoverable due to breaking changes\n- Loss of ETH and tokens\n- Failure to send or receive messages\n\nSwitching to Mainnet should be done for testing purposes only. By tapping \"I understand\", you confirm that you assume the full responsibility for all risks concerning your data and funds. " + :mainnet-warning-ok-text "I understand" + ;; browser :browser "Browser" :enter-dapp-url "Enter a ÐApp URL" diff --git a/src/status_im/ui/screens/events.cljs b/src/status_im/ui/screens/events.cljs index 47bde6c76a..f840819ed8 100644 --- a/src/status_im/ui/screens/events.cljs +++ b/src/status_im/ui/screens/events.cljs @@ -345,14 +345,14 @@ :fetch-web3-node-version-callback (fn [{:keys [db]} [_ resp]] (when-let [git-commit (nth (re-find #"-([0-9a-f]{7,})/" resp) 1)] - {:db (assoc db :web3-node-version git-commit)}))) + {:db (assoc db :web3-node-version git-commit)}))) (handlers/register-handler-fx :fetch-web3-node-version (fn [{{:keys [web3] :as db} :db} _] (.. web3 -version (getNode (fn [err resp] - (when-not err - (re-frame/dispatch [:fetch-web3-node-version-callback resp]))))) + (when-not err + (re-frame/dispatch [:fetch-web3-node-version-callback resp]))))) nil)) (handlers/register-handler-fx diff --git a/src/status_im/ui/screens/network_settings/views.cljs b/src/status_im/ui/screens/network_settings/views.cljs index 411a0d1946..bab968d58b 100644 --- a/src/status_im/ui/screens/network_settings/views.cljs +++ b/src/status_im/ui/screens/network_settings/views.cljs @@ -7,7 +7,9 @@ [status-im.ui.components.list.views :as list] [status-im.ui.components.status-bar.view :as status-bar] [status-im.ui.components.toolbar.view :as toolbar] - [status-im.ui.screens.network-settings.styles :as styles])) + [status-im.ui.screens.network-settings.styles :as styles] + [status-im.utils.utils :as utils] + [status-im.utils.config :as config])) (defn- network-icon [connected? size] [react/view (styles/network-icon connected? size) @@ -23,11 +25,27 @@ [react/text {:style styles/badge-connected-text} (i18n/label :t/connected)])]]) +(def mainnet? + #{"mainnet" "mainnet_rpc"}) + +(defn navigate-to-network [network] + (re-frame/dispatch [:navigate-to :network-details {:networks/selected-network network}])) + +(defn wrap-mainnet-warning [network cb] + (fn [] + (if (and config/mainnet-warning-enabled? + (mainnet? (:id network))) + (utils/show-confirmation (i18n/label :t/mainnet-warning-title) + (i18n/label :t/mainnet-warning-text) + (i18n/label :t/mainnet-warning-ok-text) + #(cb network)) + (cb network)))) + (defn render-network [current-network] (fn [{:keys [id name] :as network}] (let [connected? (= id current-network)] [react/touchable-highlight - {:on-press #(re-frame/dispatch [:navigate-to :network-details {:networks/selected-network network}]) + {:on-press (wrap-mainnet-warning network navigate-to-network) :accessibility-label :network-item} [react/view styles/network-item [network-icon connected? 40] diff --git a/src/status_im/utils/config.cljs b/src/status_im/utils/config.cljs index bfa4da7a17..994ddcfafa 100644 --- a/src/status_im/utils/config.cljs +++ b/src/status_im/utils/config.cljs @@ -20,7 +20,7 @@ (def testfairy-enabled? (enabled? (get-config :TESTFAIRY_ENABLED))) (def stub-status-go? (enabled? (get-config :STUB_STATUS_GO 0))) -(def mainnet-networks-enabled? (enabled? (get-config :MAINNET_NETWORKS_ENABLED 0))) +(def mainnet-warning-enabled? (enabled? (get-config :MAINNET_WARNING_ENABLED 0))) (def offline-inbox-enabled? (enabled? (get-config :OFFLINE_INBOX_ENABLED 0))) (def offline-inbox-many-enabled? (enabled? (get-config :OFFLINE_INBOX_MANY_ENABLED 0))) (def log-level