mirror of
https://github.com/status-im/status-mobile.git
synced 2025-02-11 08:07:07 +00:00
* tweak: use support blur colors for action drawer icons * tweak: support blur colors for drawer-top icon * tweak: support blur colors for account list inside keypair component * tweak: use blur colors for missing-keypair bottom sheet actions * feat: remove feature-flag for key-pairs and accounts inside wallet settings * fix: ensure key-pairs-and-accounts settings are visible * tweak: display key-pair rename screen as full-screen modal * tweak: animate key-pair scanning screen as modal * fix: do not allow user to rename key-pair to an existing key-pair name * fix: ensure we visualise the validation error for key-pair name that is too long * fix: ensure we can see the recovery-phrase suggestions when testnet-mode is active * tweak: show recovery-phrase errors when keyboard is hidden * fix: ensure we do not re-hash password * fix: ensure we call `on-close` function when successfully handling biometrics auth * fix: ensure we clear error states when editing the recovery-phrase input * fix: use blur styles for standard authentication password input * chore: add labels for qr validation * tweak: handle display import-qr error and allow for re-scanning * tweak: update blur background for all bottom-sheets * chore: add feature-flag for import-all key-pairs button for missing key-pairs * tidy: remove unused variable * fix: ensure layout for android is correct when entering seed-phrase in testnet-mode * fix: ensure we return the updated db when updating the db with backup key-pair * tweak: coerce nil to empty string * tweak: change validation error message for short key-pair name * tweak: hide the options icon for the default key-pair inside key-pairs and accounts settings
77 lines
2.7 KiB
Clojure
77 lines
2.7 KiB
Clojure
(ns status-im.feature-flags
|
|
(:require
|
|
[clojure.string :as string]
|
|
[react-native.async-storage :as async-storage]
|
|
[react-native.config :as config]
|
|
[reagent.core :as reagent]))
|
|
|
|
(defn- enabled-in-env?
|
|
[k]
|
|
(= "1" (config/get-config k)))
|
|
|
|
(def ^:private initial-flags
|
|
{::community.edit-account-selection (enabled-in-env? :FLAG_EDIT_ACCOUNT_SELECTION_ENABLED)
|
|
::settings.saved-addresses (enabled-in-env?
|
|
:FLAG_WALLET_SETTINGS_SAVED_ADDRESSES_ENABLED)
|
|
::settings.import-all-keypairs (enabled-in-env?
|
|
:FLAG_WALLET_SETTINGS_IMPORT_ALL_KEYPAIRS)
|
|
::shell.jump-to (enabled-in-env? :ENABLE_JUMP_TO)
|
|
::wallet.advanced-sending (enabled-in-env? :FLAG_ADVANCED_SENDING)
|
|
::wallet.assets-modal-hide (enabled-in-env? :FLAG_ASSETS_MODAL_HIDE)
|
|
::wallet.assets-modal-manage-tokens (enabled-in-env? :FLAG_ASSETS_MODAL_MANAGE_TOKENS)
|
|
::wallet.bridge-token (enabled-in-env? :FLAG_BRIDGE_TOKEN_ENABLED)
|
|
::wallet.contacts (enabled-in-env? :FLAG_CONTACTS_ENABLED)
|
|
::wallet.edit-derivation-path (enabled-in-env? :FLAG_EDIT_DERIVATION_PATH)
|
|
::wallet.graph (enabled-in-env? :FLAG_GRAPH_ENABLED)
|
|
::wallet.import-private-key (enabled-in-env? :FLAG_IMPORT_PRIVATE_KEY_ENABLED)
|
|
::wallet.long-press-watch-only-asset (enabled-in-env? :FLAG_LONG_PRESS_WATCH_ONLY_ASSET_ENABLED)
|
|
::wallet.saved-addresses (enabled-in-env? :WALLET_SAVED_ADDRESSES)
|
|
::wallet.swap (enabled-in-env? :FLAG_SWAP_ENABLED)
|
|
::wallet.wallet-connect (enabled-in-env? :FLAG_WALLET_CONNECT_ENABLED)})
|
|
|
|
(defonce ^:private feature-flags-config
|
|
(reagent/atom initial-flags))
|
|
|
|
(defn feature-flags [] @feature-flags-config)
|
|
|
|
(def feature-flags-categories
|
|
(set (map
|
|
(fn [k]
|
|
(first (string/split (str (name k)) ".")))
|
|
(keys @feature-flags-config))))
|
|
|
|
(defn enabled?
|
|
[flag]
|
|
(get (feature-flags) flag))
|
|
|
|
(defn toggle
|
|
[flag]
|
|
(let [new-flags (update @feature-flags-config flag not)]
|
|
(async-storage/set-item!
|
|
:feature-flags
|
|
new-flags
|
|
(fn []
|
|
(reset! feature-flags-config new-flags)))))
|
|
|
|
(defn load-flags
|
|
[]
|
|
(async-storage/get-item
|
|
:feature-flags
|
|
(fn [flags]
|
|
(when flags
|
|
(reset! feature-flags-config flags)))))
|
|
|
|
(defn reset-flags
|
|
[]
|
|
(async-storage/set-item!
|
|
:feature-flags
|
|
initial-flags
|
|
(fn []
|
|
(reset! feature-flags-config initial-flags))))
|
|
|
|
(defn alert
|
|
[flag action]
|
|
(if (enabled? flag)
|
|
(action)
|
|
(js/alert (str flag " is currently feature flagged off"))))
|