UI in place
Do not need account-info for password reset Update status go version Java API PR Fixes and hide behind a feature flag Reset status go version to HEAD Disable reset password in DEV Enable reset password in DEV Signed-off-by: Shivek Khurana <shivek@status.im>
This commit is contained in:
parent
e7887d4fca
commit
a1204d0c80
3
.env
3
.env
|
@ -28,4 +28,5 @@ MAX_IMAGES_BATCH=5
|
|||
APN_TOPIC=im.status.ethereum.pr
|
||||
COMMUNITIES_ENABLED=1
|
||||
DATABASE_MANAGEMENT_ENABLED=1
|
||||
METRICS_ENABLED=0
|
||||
METRICS_ENABLED=0
|
||||
RESET_PASSWORD_ENABLED=1
|
|
@ -22,4 +22,4 @@ MAX_IMAGES_BATCH=5
|
|||
BLANK_PREVIEW=0
|
||||
COMMUNITIES_ENABLED=1
|
||||
DATABASE_MANAGEMENT_ENABLED=1
|
||||
METRICS_ENABLED=0
|
||||
METRICS_ENABLED=0
|
||||
|
|
|
@ -596,7 +596,7 @@ SPEC CHECKSUMS:
|
|||
FBLazyVector: 3bb422f41b18121b71783a905c10e58606f7dc3e
|
||||
FBReactNativeSpec: f2c97f2529dd79c083355182cc158c9f98f4bd6e
|
||||
Folly: b73c3869541e86821df3c387eb0af5f65addfab4
|
||||
glog: 40a13f7840415b9a77023fbcae0f1e6f43192af3
|
||||
glog: 060ff9f5bfc2e5fc0ef1a3961cdf58307ce2086d
|
||||
Keycard: dd96182888da0aacf4de821b641103143bbb26cc
|
||||
Permission-Camera: afad27bf90337684d4a86f3825112d648c8c4d3b
|
||||
Permission-Microphone: 0ffabc3fe1c75cfb260525ee3f529383c9f4368c
|
||||
|
@ -660,4 +660,4 @@ SPEC CHECKSUMS:
|
|||
|
||||
PODFILE CHECKSUM: 27b3929c4d7f0b5afd76276d0bd4ae289ec11f18
|
||||
|
||||
COCOAPODS: 1.10.0
|
||||
COCOAPODS: 1.10.1
|
||||
|
|
|
@ -1481,5 +1481,23 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL
|
|||
}
|
||||
});
|
||||
}
|
||||
|
||||
@ReactMethod
|
||||
public void reEncryptDbAndKeyStore(final String keyUID, final String password, final String newPassword, final Callback callback) {
|
||||
Log.d(TAG, "reEncryptDbAndKeyStore");
|
||||
|
||||
Runnable r = new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
// changes db password and re-encrypts keystore
|
||||
String result = Statusgo.changeDatabasePassword(keyUID, password, newPassword);
|
||||
callback.invoke(result);
|
||||
}
|
||||
};
|
||||
|
||||
StatusThreadPoolExecutor.getInstance().execute(r);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -583,14 +583,27 @@ RCT_EXPORT_METHOD(verify:(NSString *)address
|
|||
#endif
|
||||
NSFileManager *fileManager = [NSFileManager defaultManager];
|
||||
NSURL *rootUrl =[[fileManager
|
||||
URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask]
|
||||
lastObject];
|
||||
URLsForDirectory:NSLibraryDirectory inDomains:NSUserDomainMask]
|
||||
lastObject];
|
||||
NSURL *absKeystoreUrl = [rootUrl URLByAppendingPathComponent:@"keystore"];
|
||||
|
||||
NSString *result = StatusgoVerifyAccountPassword(absKeystoreUrl.path, address, password);
|
||||
callback(@[result]);
|
||||
}
|
||||
|
||||
//////////////////////////////////////////////////////////////////// changeDatabasePassword
|
||||
RCT_EXPORT_METHOD(reEncryptDbAndKeystore:(NSString *)keyUID
|
||||
currentPassword:(NSString *)currentPassword
|
||||
newPassword:(NSString *)newPassword
|
||||
callback:(RCTResponseSenderBlock)callback) {
|
||||
#if DEBUG
|
||||
NSLog(@"reEncryptDbAndKeystore() method called");
|
||||
#endif
|
||||
// changes password and re-encrypts keystore
|
||||
NSString *result = StatusgoChangeDatabasePassword(keyUID, currentPassword, newPassword);
|
||||
callback(@[result]);
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////
|
||||
#pragma mark - SendTransaction
|
||||
//////////////////////////////////////////////////////////////////// sendTransaction
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
(ns status-im.multiaccounts.reset-password.core
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.utils.fx :as fx]
|
||||
[status-im.utils.types :as types]
|
||||
[clojure.string :as string]
|
||||
[status-im.utils.security :as security]
|
||||
[status-im.popover.core :as popover]
|
||||
[status-im.native-module.core :as status]
|
||||
[status-im.ethereum.core :as ethereum]))
|
||||
|
||||
(fx/defn on-input-change
|
||||
{:events [::handle-input-change]}
|
||||
[{:keys [db]} input-id value]
|
||||
(let [new-password (get-in db [:multiaccount/reset-password-form-vals :new-password])
|
||||
error (when (and (= input-id :confirm-new-password)
|
||||
(pos? (count new-password))
|
||||
(pos? (count value))
|
||||
(not= value new-password))
|
||||
:t/password-mismatch)]
|
||||
{:db (-> db
|
||||
(assoc-in [:multiaccount/reset-password-form-vals input-id] value)
|
||||
(assoc-in [:multiaccount/reset-password-errors input-id] error))}))
|
||||
|
||||
(fx/defn clear-form-vals
|
||||
{:events [::clear-form-vals]}
|
||||
[{:keys [db]}]
|
||||
{:db (dissoc db :multiaccount/reset-password-form-vals :multiaccount/reset-password-errors)})
|
||||
|
||||
(fx/defn set-current-password-error
|
||||
{:events [::handle-verification-error ::password-reset-error]}
|
||||
[{:keys [db]} error]
|
||||
{:db (assoc-in db [:multiaccount/reset-password-errors :current-password] error)})
|
||||
|
||||
(fx/defn password-reset-success
|
||||
{:events [::password-reset-success]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (dissoc
|
||||
db
|
||||
:multiaccount/reset-password-form-vals
|
||||
:multiaccount/reset-password-errors
|
||||
:multiaccount/reset-password-next-enabled?)}
|
||||
(popover/show-popover {:view :password-reset-success})))
|
||||
|
||||
(defn change-db-password-cb [res]
|
||||
(let [{:keys [error]} (types/json->clj res)]
|
||||
(if (not (string/blank? error))
|
||||
(re-frame/dispatch [::password-reset-error error])
|
||||
(re-frame/dispatch [::password-reset-success]))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::change-db-password
|
||||
(fn [[key-uid {:keys [current-password new-password]}]]
|
||||
(status/reset-password
|
||||
key-uid
|
||||
(ethereum/sha3 (security/safe-unmask-data current-password))
|
||||
(ethereum/sha3 (security/safe-unmask-data new-password))
|
||||
change-db-password-cb)))
|
||||
|
||||
(fx/defn handle-verification-success
|
||||
{:events [::handle-verification-success]}
|
||||
[{:keys [db]} form-vals]
|
||||
(let [{:keys [key-uid name]} (:multiaccount db)]
|
||||
{::change-db-password [key-uid form-vals]}))
|
||||
|
||||
(defn handle-verification [form-vals result]
|
||||
(let [{:keys [error]} (types/json->clj result)]
|
||||
(if (not (string/blank? error))
|
||||
(re-frame/dispatch [::handle-verification-error :t/wrong-password])
|
||||
(re-frame/dispatch [::handle-verification-success form-vals]))))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::validate-current-password-and-reset
|
||||
(fn [{:keys [address current-password] :as form-vals}]
|
||||
(let [hashed-pass (ethereum/sha3 (security/safe-unmask-data current-password))]
|
||||
(status/verify address hashed-pass
|
||||
(partial handle-verification form-vals)))))
|
||||
|
||||
(fx/defn reset
|
||||
{:events [::reset]}
|
||||
[{:keys [db]} form-vals]
|
||||
{::validate-current-password-and-reset
|
||||
(assoc form-vals
|
||||
:address
|
||||
(get-in db [:multiaccount :wallet-root-address]))})
|
|
@ -407,3 +407,11 @@
|
|||
(log/debug "[native-module] resetKeyboardInput")
|
||||
(when platform/android?
|
||||
(.resetKeyboardInputCursor ^js (status) input selection)))
|
||||
|
||||
;; passwords are hashed
|
||||
(defn reset-password
|
||||
[key-uid current-password# new-password# callback]
|
||||
(log/debug "[native-module] change-database-password")
|
||||
(init-keystore
|
||||
key-uid
|
||||
#(.reEncryptDbAndKeystore ^js (status) key-uid current-password# new-password# callback)))
|
||||
|
|
|
@ -98,6 +98,8 @@
|
|||
(reg-root-key-sub :multiaccount/accounts :multiaccount/accounts)
|
||||
(reg-root-key-sub :get-recover-multiaccount :multiaccounts/recover)
|
||||
(reg-root-key-sub :multiaccounts/key-storage :multiaccounts/key-storage)
|
||||
(reg-root-key-sub :multiaccount/reset-password-form-vals :multiaccount/reset-password-form-vals)
|
||||
(reg-root-key-sub :multiaccount/reset-password-errors :multiaccount/reset-password-errors)
|
||||
|
||||
;;chat
|
||||
(reg-root-key-sub ::cooldown-enabled? :chat/cooldown-enabled?)
|
||||
|
@ -2614,3 +2616,20 @@
|
|||
(and
|
||||
(= network-type "cellular")
|
||||
syncing-on-mobile-network?))))
|
||||
|
||||
;; RESET PASSWORD
|
||||
(re-frame/reg-sub
|
||||
:multiaccount/reset-password-form-vals-and-errors
|
||||
:<- [:multiaccount/reset-password-form-vals]
|
||||
:<- [:multiaccount/reset-password-errors]
|
||||
(fn [[form-vals errors]]
|
||||
(let [{:keys [current-password new-password confirm-new-password]} form-vals]
|
||||
{:form-vals form-vals
|
||||
:errors errors
|
||||
:next-enabled?
|
||||
(and (pos? (count current-password))
|
||||
(pos? (count new-password))
|
||||
(pos? (count confirm-new-password))
|
||||
(>= (count new-password) 6)
|
||||
(>= (count current-password) 6)
|
||||
(= new-password confirm-new-password))})))
|
||||
|
|
|
@ -11,6 +11,7 @@
|
|||
[status-im.ui.screens.profile.user.views :as profile.user]
|
||||
["react-native" :refer (BackHandler)]
|
||||
[status-im.ui.components.invite.advertiser :as advertiser.invite]
|
||||
[status-im.ui.screens.reset-password.views :as reset-password.views]
|
||||
[status-im.ui.components.invite.dapp :as dapp.invite]
|
||||
[status-im.ui.screens.multiaccounts.recover.views :as multiaccounts.recover]
|
||||
[status-im.ui.screens.multiaccounts.key-storage.views :as multiaccounts.key-storage]
|
||||
|
@ -169,6 +170,9 @@
|
|||
(= :transfer-multiaccount-unknown-error view)
|
||||
[multiaccounts.key-storage/unknown-error-popover]
|
||||
|
||||
(= :password-reset-success view)
|
||||
[reset-password.views/reset-success-popover]
|
||||
|
||||
:else
|
||||
[view])]]]]])))})))
|
||||
|
||||
|
|
|
@ -69,4 +69,4 @@
|
|||
(fx/defn keep-keys-on-keycard
|
||||
{:events [::keep-keys-on-keycard]}
|
||||
[{:keys [db] :as cofx} checked?]
|
||||
{:db (assoc-in db [:delete-profile/keep-keys-on-keycard?] checked?)})
|
||||
{:db (assoc-in db [:delete-profile/keep-keys-on-keycard?] checked?)})
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[quo.core :as quo]
|
||||
[status-im.multiaccounts.reset-password.core :as reset-password]
|
||||
[status-im.ui.components.common.common :as components.common]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.config :as config]
|
||||
|
@ -38,14 +39,6 @@
|
|||
:on-press #(re-frame/dispatch [:multiaccounts.ui/biometric-auth-switched
|
||||
((complement boolean) (= auth-method "biometric"))])}])
|
||||
[separator]
|
||||
;; TODO - uncomment when implemented
|
||||
;; {:size :small
|
||||
;; :title (i18n/label :t/change-password)
|
||||
;; :chevron true}
|
||||
;; {:size :small
|
||||
;; :title (i18n/label :t/change-passcode)
|
||||
;; :chevron true}
|
||||
|
||||
[quo/list-header (i18n/label :t/privacy)]
|
||||
[quo/list-item {:size :small
|
||||
:title (i18n/label :t/set-dapp-access-permissions)
|
||||
|
@ -76,6 +69,15 @@
|
|||
:t/anyone))
|
||||
:on-press #(re-frame/dispatch [:navigate-to :messages-from-contacts-only])
|
||||
:accessibility-label :accept-new-chats-from}]
|
||||
(when config/reset-password-enabled?
|
||||
[quo/list-item {:size :small
|
||||
:title (i18n/label :t/reset-password)
|
||||
:chevron true
|
||||
:accessory :text
|
||||
:on-press #(do
|
||||
(re-frame/dispatch [::reset-password/clear-form-vals])
|
||||
(re-frame/dispatch [:navigate-to :reset-password]))
|
||||
:accessibility-label :reset-password}])
|
||||
(when config/metrics-enabled?
|
||||
[quo/list-item {:size :small
|
||||
:title (i18n/label :t/anonymous-usage-data)
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
(ns status-im.ui.screens.reset-password.views
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.i18n.i18n :as i18n]
|
||||
[quo.core :as quo]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.icons.icons :as icons]
|
||||
[status-im.multiaccounts.reset-password.core :as reset-password]
|
||||
[status-im.utils.security :as security]
|
||||
[status-im.ui.components.toolbar :as toolbar])
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]]))
|
||||
|
||||
(defn input-field
|
||||
([id errors on-submit] (input-field id errors on-submit false))
|
||||
([id errors on-submit focus?]
|
||||
[quo/text-input
|
||||
{:placeholder (i18n/label id)
|
||||
:default-value ""
|
||||
:auto-focus focus?
|
||||
:accessibility-label id
|
||||
:show-cancel false
|
||||
:style {:margin-bottom 32}
|
||||
:on-submit-editing on-submit
|
||||
:on-change-text #(re-frame/dispatch [::reset-password/handle-input-change
|
||||
id
|
||||
(security/mask-data %)])
|
||||
:secure-text-entry true
|
||||
:error (when-let [error (get errors id)]
|
||||
(if (keyword? error)
|
||||
(i18n/label error)
|
||||
error))}]))
|
||||
|
||||
(defview reset-password []
|
||||
(letsubs [{:keys [form-vals errors next-enabled?]}
|
||||
[:multiaccount/reset-password-form-vals-and-errors]]
|
||||
(let [on-submit #(re-frame/dispatch [::reset-password/reset form-vals])]
|
||||
[react/keyboard-avoiding-view {:flex 1}
|
||||
[react/view {:style {:flex 1
|
||||
:justify-content :space-between}}
|
||||
[react/view {:style {:padding-horizontal 16
|
||||
:padding-vertical 16}}
|
||||
[input-field :current-password errors on-submit true]
|
||||
[input-field :new-password errors on-submit]
|
||||
[input-field :confirm-new-password errors on-submit]]
|
||||
[quo/text {:color :secondary :align :center :size :small
|
||||
:style {:padding-horizontal 16}}
|
||||
(i18n/label :t/password-description)]
|
||||
[toolbar/toolbar
|
||||
{:show-border? true
|
||||
:right
|
||||
[quo/button
|
||||
{:on-press on-submit
|
||||
:accessibility-label :next-button
|
||||
:disabled (not next-enabled?)
|
||||
:type :secondary
|
||||
:after :main-icons/next}
|
||||
(i18n/label :t/next)]}]]])))
|
||||
|
||||
(defview reset-success-popover []
|
||||
[react/view {:padding-vertical 24
|
||||
:padding-horizontal 48
|
||||
:align-items :center}
|
||||
[react/view {:width 32
|
||||
:height 32
|
||||
:background-color colors/green-transparent-10
|
||||
:border-radius 32
|
||||
:align-items :center
|
||||
:justify-content :center}
|
||||
[icons/icon :main-icons/check {:color colors/green}]]
|
||||
[quo/text {:size :x-large
|
||||
:weight :bold
|
||||
:style {:typography :title-bold
|
||||
:margin-top 16
|
||||
:margin-bottom 24}}
|
||||
(i18n/label :t/password-reset-success)]
|
||||
[react/view {:align-items :center}
|
||||
[quo/button {:on-press #(re-frame/dispatch [:hide-popover])}
|
||||
(i18n/label :t/ok-got-it)]]])
|
|
@ -85,6 +85,7 @@
|
|||
[status-im.ui.screens.mobile-network-settings.view
|
||||
:as
|
||||
mobile-network-settings]
|
||||
[status-im.ui.screens.reset-password.views :as reset-password]
|
||||
[status-im.ui.screens.network.edit-network.views :as edit-network]
|
||||
[status-im.ui.screens.network.views :as network]
|
||||
[status-im.ui.screens.network.network-details.views :as network-details]
|
||||
|
@ -221,7 +222,7 @@
|
|||
:component profile.group-chat/group-chat-invite}
|
||||
|
||||
{:name :stickers
|
||||
:options {:topBar {:title {:text (i18n/label :t/sticker-market)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/sticker-market)}}}
|
||||
:component stickers/packs}
|
||||
|
||||
{:name :stickers-pack
|
||||
|
@ -233,40 +234,40 @@
|
|||
:component notifications-center/center}
|
||||
;; Community
|
||||
{:name :community
|
||||
;TODO custom
|
||||
;;TODO custom
|
||||
:options {:topBar {:visible false}}
|
||||
:component community/community}
|
||||
{:name :community-management
|
||||
:insets {:top false}
|
||||
;TODO animated-header
|
||||
;;TODO animated-header
|
||||
:options {:topBar {:visible false}}
|
||||
:component community.profile/management-container}
|
||||
{:name :community-members
|
||||
;TODO custom subtitle
|
||||
;;TODO custom subtitle
|
||||
:options {:topBar {:visible false}}
|
||||
:component members/members-container}
|
||||
{:name :community-requests-to-join
|
||||
;TODO custom subtitle
|
||||
;;TODO custom subtitle
|
||||
:options {:topBar {:visible false}}
|
||||
:component requests-to-join/requests-to-join-container}
|
||||
{:name :create-community-channel
|
||||
;TODO custom
|
||||
;;TODO custom
|
||||
:options {:topBar {:visible false}}
|
||||
:component create-channel/view}
|
||||
{:name :community-channel-details
|
||||
;TODO custom
|
||||
{:name :community-channel-details
|
||||
;;TODO custom
|
||||
:options {:topBar {:visible false}}
|
||||
:component communities.channel-details/view}
|
||||
{:name :edit-community-channel
|
||||
:insets {:bottom true}
|
||||
:component edit-channel/view}
|
||||
{:name :contact-toggle-list
|
||||
;TODO custom subtitle
|
||||
;;TODO custom subtitle
|
||||
:options {:topBar {:visible false}}
|
||||
:component group-chat/contact-toggle-list}
|
||||
{:name :new-group
|
||||
:options {:topBar {:visible false}}
|
||||
;TODO custom subtitle
|
||||
;;TODO custom subtitle
|
||||
:component group-chat/new-group}
|
||||
{:name :referral-enclav
|
||||
;;TODO custom content
|
||||
|
@ -277,16 +278,16 @@
|
|||
:options {:topBar {:visible false}}
|
||||
:component communities/communities}
|
||||
{:name :community-import
|
||||
:options {:topBar {:title {:text (i18n/label :t/import-community-title)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/import-community-title)}}}
|
||||
:component communities.import/view}
|
||||
{:name :community-edit
|
||||
:options {:topBar {:title {:text (i18n/label :t/community-edit-title)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/community-edit-title)}}}
|
||||
:component community.edit/edit}
|
||||
{:name :community-create
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-community-title)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-community-title)}}}
|
||||
:component communities.create/view}
|
||||
{:name :community-membership
|
||||
:options {:topBar {:title {:text (i18n/label :t/membership-title)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/membership-title)}}}
|
||||
:component membership/membership}
|
||||
|
||||
;;BROWSER
|
||||
|
@ -340,14 +341,14 @@
|
|||
:component wallet-settings/manage-assets}
|
||||
{:name :wallet-add-custom-token
|
||||
:on-focus [:wallet/wallet-add-custom-token]
|
||||
:options {:topBar {:title {:text (i18n/label :t/add-custom-token)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/add-custom-token)}}}
|
||||
:component custom-tokens/add-custom-token}
|
||||
{:name :wallet-custom-token-details
|
||||
;;TODO dynamic title
|
||||
:options {:topBar {:visible false}}
|
||||
:component custom-tokens/custom-token-details}
|
||||
{:name :currency-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/main-currency)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/main-currency)}}}
|
||||
:component currency-settings/currency-settings}
|
||||
|
||||
;;MY STATUS
|
||||
|
@ -363,36 +364,36 @@
|
|||
:insets {:top false}
|
||||
:component profile.user/my-profile}
|
||||
{:name :contacts-list
|
||||
:options {:topBar {:title {:text (i18n/label :t/contacts)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/contacts)}}}
|
||||
:component contacts-list/contacts-list}
|
||||
{:name :ens-main
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-usernames)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-usernames)}}}
|
||||
:component ens/main}
|
||||
{:name :ens-search
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:component ens/search}
|
||||
{:name :ens-checkout
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:component ens/checkout}
|
||||
{:name :ens-confirmation
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-your-username)}}}
|
||||
:component ens/confirmation}
|
||||
{:name :ens-terms
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-terms-registration)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/ens-terms-registration)}}}
|
||||
:component ens/terms}
|
||||
{:name :ens-name-details
|
||||
;;TODO dynamic title
|
||||
:options {:topBar {:visible false}}
|
||||
:component ens/name-details}
|
||||
{:name :blocked-users-list
|
||||
:options {:topBar {:title {:text (i18n/label :t/blocked-users)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/blocked-users)}}}
|
||||
:component contacts-list/blocked-users-list}
|
||||
{:name :bootnodes-settings
|
||||
;;TODO dynamic title
|
||||
:options {:topBar {:visible false}}
|
||||
:component bootnodes-settings/bootnodes-settings}
|
||||
{:name :installations
|
||||
:options {:topBar {:title {:text (i18n/label :t/devices)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/devices)}}}
|
||||
:component pairing/installations}
|
||||
{:name :edit-bootnode
|
||||
;;TODO dynamic title
|
||||
|
@ -407,43 +408,43 @@
|
|||
:options {:topBar {:visible false}}
|
||||
:component edit-mailserver/edit-mailserver}
|
||||
{:name :dapps-permissions
|
||||
:options {:topBar {:title {:text (i18n/label :t/dapps-permissions)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/dapps-permissions)}}}
|
||||
:component dapps-permissions/dapps-permissions}
|
||||
{:name :link-previews-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
|
||||
:component link-previews-settings/link-previews-settings}
|
||||
{:name :privacy-and-security
|
||||
:options {:topBar {:title {:text (i18n/label :t/privacy-and-security)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/privacy-and-security)}}}
|
||||
:component privacy-and-security/privacy-and-security}
|
||||
{:name :messages-from-contacts-only
|
||||
:options {:topBar {:title {:text (i18n/label :t/accept-new-chats-from)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/accept-new-chats-from)}}}
|
||||
:component messages-from-contacts-only/messages-from-contacts-only}
|
||||
{:name :appearance
|
||||
:options {:topBar {:title {:text (i18n/label :t/appearance)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/appearance)}}}
|
||||
:component appearance/appearance}
|
||||
{:name :appearance-profile-pic
|
||||
:options {:topBar {:title {:text (i18n/label :t/show-profile-pictures)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/show-profile-pictures)}}}
|
||||
:component appearance/profile-pic}
|
||||
{:name :notifications
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}}
|
||||
:component notifications-settings/notifications-settings}
|
||||
{:name :notifications-servers
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-servers)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-servers)}}}
|
||||
:component notifications-settings/notifications-servers}
|
||||
{:name :sync-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/sync-settings)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/sync-settings)}}}
|
||||
:component sync-settings/sync-settings}
|
||||
{:name :advanced-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/advanced)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/advanced)}}}
|
||||
:component advanced-settings/advanced-settings}
|
||||
{:name :help-center
|
||||
:options {:topBar {:title {:text (i18n/label :t/need-help)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/need-help)}}}
|
||||
:component help-center/help-center}
|
||||
{:name :glossary
|
||||
:options {:topBar {:title {:text (i18n/label :t/glossary)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/glossary)}}}
|
||||
:component glossary/glossary}
|
||||
{:name :about-app
|
||||
:options {:topBar {:title {:text (i18n/label :t/about-app)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/about-app)}}}
|
||||
:component about-app/about-app}
|
||||
{:name :manage-dapps-permissions
|
||||
;;TODO dynamic title
|
||||
|
@ -454,41 +455,44 @@
|
|||
:options {:topBar {:visible false}}
|
||||
:component network/network-settings}
|
||||
{:name :network-details
|
||||
:options {:topBar {:title {:text (i18n/label :t/network-details)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/network-details)}}}
|
||||
:component network-details/network-details}
|
||||
{:name :network-info
|
||||
:options {:topBar {:title {:text (i18n/label :t/network-info)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/network-info)}}}
|
||||
:component network-info/network-info}
|
||||
{:name :rpc-usage-info
|
||||
:options {:topBar {:title {:text (i18n/label :t/rpc-usage-info)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/rpc-usage-info)}}}
|
||||
:component rpc-usage-info/usage-info}
|
||||
{:name :edit-network
|
||||
:options {:topBar {:title {:text (i18n/label :t/add-network)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/add-network)}}}
|
||||
:component edit-network/edit-network}
|
||||
{:name :log-level-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/log-level-settings)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/log-level-settings)}}}
|
||||
:component log-level-settings/log-level-settings}
|
||||
{:name :fleet-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/fleet-settings)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/fleet-settings)}}}
|
||||
:component fleet-settings/fleet-settings}
|
||||
{:name :mobile-network-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/mobile-network-settings)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/mobile-network-settings)}}}
|
||||
:component mobile-network-settings/mobile-network-settings}
|
||||
{:name :backup-seed
|
||||
;;TODO dynamic navigation
|
||||
:options {:topBar {:visible false}}
|
||||
:component profile.seed/backup-seed}
|
||||
{:name :delete-profile
|
||||
:insets {:bottom true}
|
||||
:component delete-profile/delete-profile}
|
||||
{:name :reset-password
|
||||
:options {:topBar {:title {:text (i18n/label :t/reset-password)}}}
|
||||
:component reset-password/reset-password}
|
||||
{:name :delete-profile
|
||||
:insets {:bottom true}
|
||||
:component delete-profile/delete-profile}
|
||||
{:name :default-sync-period-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/default-sync-period)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/default-sync-period)}}}
|
||||
:component default-sync-period-settings/default-sync-period-settings}
|
||||
{:name :anonymous-metrics-settings
|
||||
:component anonymous-metrics-settings/settings}
|
||||
{:name :anon-metrics-learn-more
|
||||
{:name :anon-metrics-learn-more
|
||||
:component anonymous-metrics-settings/learn-more}
|
||||
{:name :anon-metrics-view-data
|
||||
{:name :anon-metrics-view-data
|
||||
:component anonymous-metrics-settings/view-data}
|
||||
{:name :anon-metrics-opt-in
|
||||
:back-handler :noop
|
||||
|
@ -506,12 +510,12 @@
|
|||
;[Chat] New Public chat
|
||||
{:name :new-public-chat
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-public-group-chat)}}}
|
||||
:component new-public-chat/new-public-chat}
|
||||
|
||||
;[Chat] Link preview settings
|
||||
{:name :link-preview-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/chat-link-previews)}}}
|
||||
:component link-previews-settings/link-previews-settings}
|
||||
|
||||
;[Chat] Edit nickname
|
||||
|
@ -524,7 +528,7 @@
|
|||
;[Group chat] Edit group chat name
|
||||
{:name :edit-group-chat-name
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/edit-group)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/edit-group)}}}
|
||||
:component group-chat/edit-group-chat-name}
|
||||
|
||||
;[Group chat] Add participants
|
||||
|
@ -552,7 +556,7 @@
|
|||
;Refferal invite
|
||||
{:name :referral-invite
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/invite-friends)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/invite-friends)}}}
|
||||
:component invite/referral-invite}
|
||||
|
||||
;[Wallet] Recipient
|
||||
|
@ -565,7 +569,7 @@
|
|||
;[Wallet] New favourite
|
||||
{:name :new-favourite
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-favourite)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/new-favourite)}}}
|
||||
:component recipient/new-favourite}
|
||||
|
||||
;QR Scanner
|
||||
|
@ -581,7 +585,7 @@
|
|||
;;TODO WHY MODAL?
|
||||
;[Profile] Notifications settings
|
||||
{:name :notifications-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -591,7 +595,7 @@
|
|||
;;TODO WHY MODAL?
|
||||
;[Profile] Notifications Advanced settings
|
||||
{:name :notifications-advanced-settings
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/notification-settings)}}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -602,19 +606,19 @@
|
|||
{:name :prepare-send-transaction
|
||||
:insets {:bottom true}
|
||||
:on-dissmiss [:wallet/cancel-transaction-command]
|
||||
:options {:topBar {:title {:text (i18n/label :t/send-transaction)}}
|
||||
:swipeToDismiss false
|
||||
:options {:topBar {:title {:text (i18n/label :t/send-transaction)}}
|
||||
:swipeToDismiss false
|
||||
:hardwareBackButton {:dismissModalOnPress false}}
|
||||
:component wallet/prepare-send-transaction}
|
||||
|
||||
;[Wallet] Request Transaction
|
||||
{:name :request-transaction
|
||||
:insets {:bottom true}
|
||||
{:name :request-transaction
|
||||
:insets {:bottom true}
|
||||
:on-dissmiss [:wallet/cancel-transaction-command]
|
||||
:options {:topBar {:title {:text (i18n/label :t/request-transaction)}}
|
||||
:swipeToDismiss false
|
||||
:options {:topBar {:title {:text (i18n/label :t/request-transaction)}}
|
||||
:swipeToDismiss false
|
||||
:hardwareBackButton {:dismissModalOnPress false}}
|
||||
:component wallet/request-transaction}
|
||||
:component wallet/request-transaction}
|
||||
|
||||
;[Wallet] Buy crypto
|
||||
{:name :buy-crypto
|
||||
|
@ -631,7 +635,7 @@
|
|||
;My Status
|
||||
{:name :my-status
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/my-status)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/my-status)}}}
|
||||
:component status.new/my-status}
|
||||
|
||||
;[Browser] New bookmark
|
||||
|
@ -650,12 +654,12 @@
|
|||
|
||||
;KEYCARD
|
||||
{:name :keycard-onboarding-intro
|
||||
:insets {:bottom true}
|
||||
:insets {:bottom true}
|
||||
:back-handler keycard.core/onboarding-intro-back-handler
|
||||
:component keycard.onboarding/intro}
|
||||
{:name :keycard-onboarding-puk-code
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -663,7 +667,7 @@
|
|||
:component keycard.onboarding/puk-code}
|
||||
{:name :keycard-onboarding-pin
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -671,7 +675,7 @@
|
|||
:component keycard.onboarding/pin}
|
||||
{:name :keycard-recovery-pair
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/step-i-of-n {:number 2 :step 1})}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/step-i-of-n {:number 2 :step 1})}}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -698,21 +702,21 @@
|
|||
:component keycard/not-keycard}
|
||||
{:name :keycard-onboarding-recovery-phrase
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
:component keycard.onboarding/recovery-phrase}
|
||||
{:name :keycard-onboarding-recovery-phrase-confirm-word1
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
:component keycard.onboarding/recovery-phrase-confirm-word}
|
||||
{:name :keycard-onboarding-recovery-phrase-confirm-word2
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -722,14 +726,14 @@
|
|||
:component keycard.recovery/intro}
|
||||
{:name :keycard-recovery-success
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
:component keycard.recovery/success}
|
||||
{:name :keycard-recovery-no-key
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:visible false}
|
||||
:options {:topBar {:visible false}
|
||||
:popGesture false
|
||||
:hardwareBackButton {:dismissModalOnPress false
|
||||
:popStackOnPress false}}
|
||||
|
@ -752,11 +756,11 @@
|
|||
:component keycard/unpaired}
|
||||
{:name :keycard-settings
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/status-keycard)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/status-keycard)}}}
|
||||
:component keycard.settings/keycard-settings}
|
||||
{:name :reset-card
|
||||
:insets {:bottom true}
|
||||
:options {:topBar {:title {:text (i18n/label :t/reset-card)}}}
|
||||
:options {:topBar {:title {:text (i18n/label :t/reset-card)}}}
|
||||
:component keycard.settings/reset-card}
|
||||
{:name :keycard-pin
|
||||
:insets {:bottom true}
|
||||
|
@ -797,4 +801,4 @@
|
|||
(when js/goog.DEBUG
|
||||
quo.preview/screens)
|
||||
(when js/goog.DEBUG
|
||||
quo.preview/main-screens)))
|
||||
quo.preview/main-screens)))
|
||||
|
|
|
@ -49,6 +49,7 @@
|
|||
(def database-management-enabled? (enabled? (get-config :DATABASE_MANAGEMENT_ENABLED "0")))
|
||||
(def debug-webview? (enabled? (get-config :DEBUG_WEBVIEW "0")))
|
||||
(def metrics-enabled? (enabled? (get-config :METRICS_ENABLED "0")))
|
||||
(def reset-password-enabled? (enabled? (get-config :RESET_PASSWORD_ENABLED "0")))
|
||||
|
||||
;; CONFIG VALUES
|
||||
(def log-level
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"_comment": "DO NOT EDIT THIS FILE BY HAND. USE 'scripts/update-status-go.sh <tag>' instead",
|
||||
"owner": "status-im",
|
||||
"repo": "status-go",
|
||||
"version": "v0.79.11",
|
||||
"commit-sha1": "b395144704f29c9e1f4fd11714d1031a10160ad1",
|
||||
"src-sha256": "13yzac5n7w7hzispphm6g5xhw6r62qxg2hvzcrcl9jpwy0frvzi2"
|
||||
"version": "v0.80.00",
|
||||
"commit-sha1": "659ca28974d9fca08091c20c1aa4cac34e5e5f81",
|
||||
"src-sha256": "10xjfzdyayq8iw99wpr488r1l6la4zxdnmljv6pkrkkyghhf6wba"
|
||||
}
|
||||
|
|
|
@ -1570,5 +1570,12 @@
|
|||
"no-thanks": "No thanks",
|
||||
"help-improve-status": "Help improve Status",
|
||||
"thank-you": "Thank you",
|
||||
"count-metrics-collected": "{{count}} metrics collected"
|
||||
"count-metrics-collected": "{{count}} metrics collected",
|
||||
"bip39-password-placeholder": "BIP39 password",
|
||||
"current-password": "Current password",
|
||||
"reset-password": "Reset password",
|
||||
"password-reset-success": "Password reset",
|
||||
"new-password": "New password",
|
||||
"confirm-new-password": "Confirm new password",
|
||||
"password-mismatch": "New password and confirmation does not match"
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue