[#21708] [Android] Login with Keycard stucks on Preparing screen from time to time (#21811)

This commit is contained in:
flexsurfer 2024-12-13 19:57:26 +01:00 committed by GitHub
parent 55ee800e18
commit 9ced0e4131
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 22 additions and 17 deletions

View File

@ -66,7 +66,7 @@
"react-native-shake": "^3.3.1", "react-native-shake": "^3.3.1",
"react-native-share": "10.0.2", "react-native-share": "10.0.2",
"react-native-static-safe-area-insets": "^2.2.0", "react-native-static-safe-area-insets": "^2.2.0",
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.3", "react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.4",
"react-native-svg": "13.10.0", "react-native-svg": "13.10.0",
"react-native-webview": "13.6.3", "react-native-webview": "13.6.3",
"react-syntax-highlighter": "^15.5.0" "react-syntax-highlighter": "^15.5.0"

View File

@ -71,6 +71,10 @@
[callback] [callback]
(.addListener ^js event-emitter "keyCardOnDisconnected" callback)) (.addListener ^js event-emitter "keyCardOnDisconnected" callback))
(defn on-card-new-pairing
[callback]
(.addListener ^js event-emitter "keyCardNewPairing" callback))
(defn on-nfc-user-cancelled (defn on-nfc-user-cancelled
[callback] [callback]
(.addListener ^js event-emitter "keyCardOnNFCUserCancelled" callback)) (.addListener ^js event-emitter "keyCardOnNFCUserCancelled" callback))

View File

@ -8,7 +8,8 @@
[status-im.contexts.keycard.utils :as keycard.utils] [status-im.contexts.keycard.utils :as keycard.utils]
[status-im.contexts.profile.config :as profile.config] [status-im.contexts.profile.config :as profile.config]
[utils.hex :as hex] [utils.hex :as hex]
[utils.re-frame :as rf])) [utils.re-frame :as rf]
[utils.transforms :as transforms]))
(defonce ^:private active-listeners (atom [])) (defonce ^:private active-listeners (atom []))
@ -24,6 +25,7 @@
(reset! active-listeners (reset! active-listeners
[(keycard/on-card-connected #(rf/dispatch [:keycard/on-card-connected])) [(keycard/on-card-connected #(rf/dispatch [:keycard/on-card-connected]))
(keycard/on-card-disconnected #(rf/dispatch [:keycard/on-card-disconnected])) (keycard/on-card-disconnected #(rf/dispatch [:keycard/on-card-disconnected]))
(keycard/on-card-new-pairing #(rf/dispatch [:keycard/on-card-new-pairing (transforms/js->clj %)]))
(when platform/ios? (when platform/ios?
(keycard/on-nfc-user-cancelled #(rf/dispatch [:keycard.ios/on-nfc-user-cancelled]))) (keycard/on-nfc-user-cancelled #(rf/dispatch [:keycard.ios/on-nfc-user-cancelled])))
(when platform/ios? (when platform/ios?

View File

@ -25,21 +25,22 @@
:fx [(when-let [event (get-in db [:keycard :on-card-disconnected-event-vector])] :fx [(when-let [event (get-in db [:keycard :on-card-disconnected-event-vector])]
[:dispatch event])]})) [:dispatch event])]}))
(rf/reg-event-fx :keycard/on-card-new-pairing
(fn [{:keys [db]} [{:keys [pairing instanceUID]}]]
(when (and instanceUID pairing)
(let [pairings (get-in db [:keycard :pairings])
new-pairings (assoc pairings
instanceUID
{:pairing pairing
:paired-on (utils.datetime/timestamp)})]
{:db (assoc-in db [:keycard :pairings] new-pairings)
:keycard/persist-pairings new-pairings}))))
(rf/reg-event-fx :keycard/on-retrieve-pairings-success (rf/reg-event-fx :keycard/on-retrieve-pairings-success
(fn [{:keys [db]} [pairings]] (fn [{:keys [db]} [pairings]]
{:db (assoc-in db [:keycard :pairings] pairings) {:db (assoc-in db [:keycard :pairings] pairings)
:fx [[:effects.keycard/set-pairing-to-keycard pairings]]})) :fx [[:effects.keycard/set-pairing-to-keycard pairings]]}))
(rf/reg-event-fx :keycard/update-pairings
(fn [{:keys [db]} [instance-uid pairing]]
(let [pairings (get-in db [:keycard :pairings])
new-pairings (assoc pairings
instance-uid
{:pairing pairing
:paired-on (utils.datetime/timestamp)})]
{:db (assoc-in db [:keycard :pairings] new-pairings)
:keycard/persist-pairings new-pairings})))
(rf/reg-event-fx :keycard/on-action-with-pin-error (rf/reg-event-fx :keycard/on-action-with-pin-error
(fn [{:keys [db]} [error]] (fn [{:keys [db]} [error]]
(let [tag-was-lost? (keycard.utils/tag-lost? (:error error)) (let [tag-was-lost? (keycard.utils/tag-lost? (:error error))
@ -126,10 +127,8 @@
(rf/reg-event-fx :keycard/get-application-info (rf/reg-event-fx :keycard/get-application-info
(fn [_ [{:keys [key-uid on-success on-error]}]] (fn [_ [{:keys [key-uid on-success on-error]}]]
{:effects.keycard/get-application-info {:effects.keycard/get-application-info
{:on-success (fn [{:keys [instance-uid new-pairing] :as app-info}] {:on-success (fn [app-info]
(rf/dispatch [:keycard/update-application-info app-info]) (rf/dispatch [:keycard/update-application-info app-info])
(when (and instance-uid new-pairing)
(rf/dispatch [:keycard/update-pairings instance-uid new-pairing]))
(if-let [error (keycard.utils/validate-application-info key-uid app-info)] (if-let [error (keycard.utils/validate-application-info key-uid app-info)]
(if on-error (if on-error
(on-error error) (on-error error)

View File

@ -9584,9 +9584,9 @@ react-native-static-safe-area-insets@^2.2.0:
resolved "https://registry.yarnpkg.com/react-native-static-safe-area-insets/-/react-native-static-safe-area-insets-2.2.0.tgz#dd86b6a38f43964fac8df8c0e6bc8e062527786c" resolved "https://registry.yarnpkg.com/react-native-static-safe-area-insets/-/react-native-static-safe-area-insets-2.2.0.tgz#dd86b6a38f43964fac8df8c0e6bc8e062527786c"
integrity sha512-TLTW2e2kRK3COSK8gMZzwp4wHguFCtcO18itDLn5av/xQblXt9ylu84o+qD9aKJCBfvtNzGOvqqTKqC5GJRZ/g== integrity sha512-TLTW2e2kRK3COSK8gMZzwp4wHguFCtcO18itDLn5av/xQblXt9ylu84o+qD9aKJCBfvtNzGOvqqTKqC5GJRZ/g==
"react-native-status-keycard@git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.3": "react-native-status-keycard@git+https://github.com/status-im/react-native-status-keycard.git#refs/tags/v2.6.4":
version "2.6.2" version "2.6.2"
resolved "git+https://github.com/status-im/react-native-status-keycard.git#735bed7f9838b87712f1fd2978208186d28ea61c" resolved "git+https://github.com/status-im/react-native-status-keycard.git#e78f46de10d65cfef2df2f62b6f41e64e0c332b9"
react-native-svg@13.10.0: react-native-svg@13.10.0:
version "13.10.0" version "13.10.0"