fix: password input triggers re-render of whole login view (#18728)
This commit is contained in:
parent
3c6b38aeea
commit
50f6c1ef1b
|
@ -7,6 +7,7 @@
|
|||
[react-native.core :as rn]
|
||||
[status-im.common.standard-authentication.forgot-password-doc.view :as forgot-password-doc]
|
||||
[status-im.common.standard-authentication.password-input.style :as style]
|
||||
[utils.debounce :as debounce]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]
|
||||
[utils.security.core :as security]))
|
||||
|
@ -22,9 +23,10 @@
|
|||
|
||||
(defn- on-change-password
|
||||
[entered-password]
|
||||
(rf/dispatch [:set-in [:profile/login :password]
|
||||
(security/mask-data entered-password)])
|
||||
(rf/dispatch [:set-in [:profile/login :error] ""]))
|
||||
(debounce/debounce-and-dispatch [:profile/on-password-input-changed
|
||||
{:password (security/mask-data entered-password)
|
||||
:error ""}]
|
||||
100))
|
||||
|
||||
(defn- view-internal
|
||||
[{:keys [default-password theme shell? on-press-biometrics blur?]}]
|
||||
|
|
|
@ -247,3 +247,8 @@
|
|||
#(-> %
|
||||
(dissoc :processing)
|
||||
(assoc :error "Invalid password")))}))
|
||||
|
||||
(re-frame/reg-event-fx
|
||||
:profile/on-password-input-changed
|
||||
(fn [{:keys [db]} [{:keys [password error]}]]
|
||||
{:db (update db :profile/login assoc :password password :error error)}))
|
||||
|
|
|
@ -172,13 +172,29 @@
|
|||
[props]
|
||||
[:f> f-profiles-section props])
|
||||
|
||||
(defn password-input
|
||||
[]
|
||||
(let [password (rf/sub [:profile/login-password])
|
||||
auth-method (rf/sub [:auth-method])]
|
||||
[standard-authentication/password-input
|
||||
{:shell? true
|
||||
:blur? true
|
||||
:on-press-biometrics (when (= auth-method constants/auth-method-biometric)
|
||||
(fn []
|
||||
(rf/dispatch [:biometric/authenticate
|
||||
{:on-success #(rf/dispatch
|
||||
[:profile.login/biometric-success])
|
||||
:on-fail #(rf/dispatch
|
||||
[:profile.login/biometric-auth-fail
|
||||
%])}])))
|
||||
:default-password password}]))
|
||||
|
||||
(defn login-section
|
||||
[{:keys [set-show-profiles]}]
|
||||
(let [{:keys [processing password]} (rf/sub [:profile/login])
|
||||
(let [processing (rf/sub [:profile/login-processing])
|
||||
{:keys [key-uid name customization-color]} (rf/sub [:profile/login-profile])
|
||||
sign-in-enabled? (rf/sub [:sign-in-enabled?])
|
||||
profile-picture (rf/sub [:profile/login-profiles-picture key-uid])
|
||||
auth-method (rf/sub [:auth-method])
|
||||
login-multiaccount #(rf/dispatch [:profile.login/login])]
|
||||
[rn/keyboard-avoiding-view
|
||||
{:style style/login-container
|
||||
|
@ -213,18 +229,7 @@
|
|||
:customization-color (or customization-color :primary)
|
||||
:profile-picture profile-picture
|
||||
:card-style style/login-profile-card}]
|
||||
[standard-authentication/password-input
|
||||
{:shell? true
|
||||
:blur? true
|
||||
:on-press-biometrics (when (= auth-method constants/auth-method-biometric)
|
||||
(fn []
|
||||
(rf/dispatch [:biometric/authenticate
|
||||
{:on-success #(rf/dispatch
|
||||
[:profile.login/biometric-success])
|
||||
:on-fail #(rf/dispatch
|
||||
[:profile.login/biometric-auth-fail
|
||||
%])}])))
|
||||
:default-password password}]]
|
||||
[password-input]]
|
||||
[quo/button
|
||||
{:size 40
|
||||
:type :primary
|
||||
|
|
|
@ -338,6 +338,18 @@
|
|||
(fn [[{:keys [key-uid]} profiles]]
|
||||
(get profiles key-uid)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:profile/login-processing
|
||||
:<- [:profile/login]
|
||||
(fn [{:keys [processing]}]
|
||||
processing))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:profile/login-password
|
||||
:<- [:profile/login]
|
||||
(fn [{:keys [password]}]
|
||||
password))
|
||||
|
||||
;; LINK PREVIEW
|
||||
;; ========================================================================================================
|
||||
|
||||
|
|
Loading…
Reference in New Issue