mirror of
https://github.com/status-im/status-react.git
synced 2025-02-17 13:28:04 +00:00
feat: add ident ring for login profile picture (#15942)
This commit is contained in:
parent
d1941fe002
commit
2191f68883
@ -73,11 +73,10 @@
|
|||||||
:shell? true}]))
|
:shell? true}]))
|
||||||
|
|
||||||
(defn profile-card
|
(defn profile-card
|
||||||
[{:keys [name key-uid customization-color keycard-pairing last-index set-hide-profiles]
|
[{:keys [name key-uid customization-color keycard-pairing last-index set-hide-profiles]}
|
||||||
:as multiaccount}
|
|
||||||
index]
|
index]
|
||||||
(let [last-item? (= last-index index)
|
(let [last-item? (= last-index index)
|
||||||
profile-picture (:uri (first (:images multiaccount)))]
|
profile-picture (rf/sub [:multiaccounts/login-profiles-picture key-uid])]
|
||||||
[quo/profile-card
|
[quo/profile-card
|
||||||
{:name name
|
{:name name
|
||||||
:login-card? true
|
:login-card? true
|
||||||
@ -176,10 +175,10 @@
|
|||||||
|
|
||||||
(defn login-section
|
(defn login-section
|
||||||
[{:keys [set-show-profiles]}]
|
[{:keys [set-show-profiles]}]
|
||||||
(let [{:keys [name customization-color error processing password]
|
(let [{:keys [key-uid name customization-color error
|
||||||
:as multiaccount} (rf/sub [:multiaccounts/login])
|
processing password]} (rf/sub [:multiaccounts/login])
|
||||||
sign-in-enabled? (rf/sub [:sign-in-enabled?])
|
sign-in-enabled? (rf/sub [:sign-in-enabled?])
|
||||||
profile-picture (:uri (first (:images multiaccount)))]
|
profile-picture (rf/sub [:multiaccounts/login-profiles-picture key-uid])]
|
||||||
[rn/keyboard-avoiding-view
|
[rn/keyboard-avoiding-view
|
||||||
{:style style/login-container
|
{:style style/login-container
|
||||||
:keyboardVerticalOffset (- (safe-area/get-bottom))}
|
:keyboardVerticalOffset (- (safe-area/get-bottom))}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
(ns status-im2.subs.multiaccount
|
(ns status-im2.subs.multiaccount
|
||||||
(:require [cljs.spec.alpha :as spec]
|
(:require [cljs.spec.alpha :as spec]
|
||||||
[clojure.string :as string]
|
[clojure.string :as string]
|
||||||
|
[quo2.theme :as theme]
|
||||||
[re-frame.core :as re-frame]
|
[re-frame.core :as re-frame]
|
||||||
[status-im.ethereum.core :as ethereum]
|
[status-im.ethereum.core :as ethereum]
|
||||||
[status-im.fleet.core :as fleet]
|
[status-im.fleet.core :as fleet]
|
||||||
[status-im.multiaccounts.db :as multiaccounts.db]
|
[status-im.multiaccounts.db :as multiaccounts.db]
|
||||||
[utils.image-server :as image-server]
|
[utils.image-server :as image-server]
|
||||||
[utils.security.core :as security]
|
[utils.security.core :as security]))
|
||||||
[quo2.theme :as theme]))
|
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:multiaccount/public-key
|
:multiaccount/public-key
|
||||||
@ -214,11 +214,12 @@
|
|||||||
images (reduce (fn [acc current]
|
images (reduce (fn [acc current]
|
||||||
(let [key-uid (:keyUid current)
|
(let [key-uid (:keyUid current)
|
||||||
image-name (:type current)
|
image-name (:type current)
|
||||||
uri (image-server/get-account-image-uri port
|
uri (image-server/get-account-image-uri {:port port
|
||||||
public-key
|
:public-key public-key
|
||||||
image-name
|
:image-name image-name
|
||||||
key-uid
|
:key-uid key-uid
|
||||||
theme)]
|
:theme theme
|
||||||
|
:ring? true})]
|
||||||
(conj acc (assoc current :uri uri))))
|
(conj acc (assoc current :uri uri))))
|
||||||
[]
|
[]
|
||||||
images)]
|
images)]
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
(ns status-im2.subs.onboarding
|
(ns status-im2.subs.onboarding
|
||||||
(:require [re-frame.core :as re-frame]
|
(:require [quo2.theme :as theme]
|
||||||
|
[re-frame.core :as re-frame]
|
||||||
[status-im.multiaccounts.recover.core :as recover]
|
[status-im.multiaccounts.recover.core :as recover]
|
||||||
[status-im2.constants :as constants]))
|
[status-im2.constants :as constants]
|
||||||
|
[utils.image-server :as image-server]))
|
||||||
|
|
||||||
(re-frame/reg-sub
|
(re-frame/reg-sub
|
||||||
:intro-wizard
|
:intro-wizard
|
||||||
@ -48,6 +50,22 @@
|
|||||||
(fn [[intro-wizard multiaccounts]]
|
(fn [[intro-wizard multiaccounts]]
|
||||||
(recover/existing-account? (:root-key intro-wizard) multiaccounts)))
|
(recover/existing-account? (:root-key intro-wizard) multiaccounts)))
|
||||||
|
|
||||||
|
(re-frame/reg-sub
|
||||||
|
:multiaccounts/login-profiles-picture
|
||||||
|
:<- [:multiaccounts/multiaccounts]
|
||||||
|
:<- [:mediaserver/port]
|
||||||
|
(fn [[multiaccounts port] [_ target-key-uid]]
|
||||||
|
(let [image-name (-> multiaccounts
|
||||||
|
(get-in [target-key-uid :images])
|
||||||
|
first
|
||||||
|
:type)]
|
||||||
|
(when image-name
|
||||||
|
(image-server/get-account-image-uri {:port port
|
||||||
|
:image-name image-name
|
||||||
|
:key-uid target-key-uid
|
||||||
|
:theme (theme/get-theme)
|
||||||
|
:ring? true})))))
|
||||||
|
|
||||||
(defn login-ma-keycard-pairing
|
(defn login-ma-keycard-pairing
|
||||||
"Compute the keycard-pairing value of the multiaccount selected for login"
|
"Compute the keycard-pairing value of the multiaccount selected for login"
|
||||||
[db _]
|
[db _]
|
||||||
|
38
src/status_im2/subs/onboarding_test.cljs
Normal file
38
src/status_im2/subs/onboarding_test.cljs
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
(ns status-im2.subs.onboarding-test
|
||||||
|
(:require [cljs.test :as t]
|
||||||
|
[quo2.theme :as theme]
|
||||||
|
[re-frame.db :as rf-db]
|
||||||
|
status-im2.subs.onboarding
|
||||||
|
[test-helpers.unit :as h]
|
||||||
|
[utils.image-server :as image-server]
|
||||||
|
[utils.re-frame :as rf]))
|
||||||
|
|
||||||
|
(def key-uid "0x1")
|
||||||
|
(def port "mediaserver-port")
|
||||||
|
(def cur-theme :current-theme)
|
||||||
|
|
||||||
|
(h/deftest-sub :multiaccounts/login-profiles-picture
|
||||||
|
[sub-name]
|
||||||
|
(with-redefs [image-server/get-account-image-uri identity
|
||||||
|
theme/get-theme (constantly cur-theme)]
|
||||||
|
(t/testing "nil when no images"
|
||||||
|
(swap! rf-db/app-db assoc :multiaccounts/multiaccounts {key-uid {}})
|
||||||
|
(t/is (nil? (rf/sub [sub-name key-uid]))))
|
||||||
|
|
||||||
|
(t/testing "nil when no key-uid"
|
||||||
|
(swap! rf-db/app-db assoc :multiaccounts/multiaccounts {key-uid {}})
|
||||||
|
(t/is (nil? (rf/sub [sub-name "0x2"]))))
|
||||||
|
|
||||||
|
(t/testing "result from image-server/get-account-image-uri"
|
||||||
|
(swap!
|
||||||
|
rf-db/app-db
|
||||||
|
assoc
|
||||||
|
:multiaccounts/multiaccounts {key-uid {:images [{:type "large"}
|
||||||
|
{:type "thumbnail"}]}}
|
||||||
|
:mediaserver/port port)
|
||||||
|
(t/is (= (rf/sub [sub-name key-uid])
|
||||||
|
{:port port
|
||||||
|
:image-name "large"
|
||||||
|
:key-uid key-uid
|
||||||
|
:theme cur-theme
|
||||||
|
:ring? true})))))
|
@ -26,7 +26,7 @@
|
|||||||
4))
|
4))
|
||||||
|
|
||||||
(defn get-account-image-uri
|
(defn get-account-image-uri
|
||||||
[port public-key image-name key-uid theme]
|
[{:keys [port public-key image-name key-uid theme ring?]}]
|
||||||
(str image-server-uri-prefix
|
(str image-server-uri-prefix
|
||||||
port
|
port
|
||||||
account-images-action
|
account-images-action
|
||||||
@ -40,7 +40,8 @@
|
|||||||
(current-theme-index theme)
|
(current-theme-index theme)
|
||||||
"&clock="
|
"&clock="
|
||||||
(timestamp)
|
(timestamp)
|
||||||
"&addRing=1"))
|
"&addRing="
|
||||||
|
(if ring? 1 0)))
|
||||||
|
|
||||||
(defn get-contact-image-uri
|
(defn get-contact-image-uri
|
||||||
[port public-key image-name clock theme]
|
[port public-key image-name clock theme]
|
||||||
|
17
src/utils/image_server_test.cljs
Normal file
17
src/utils/image_server_test.cljs
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
(ns utils.image-server-test
|
||||||
|
(:require [cljs.test :as t]
|
||||||
|
[utils.image-server :as sut]))
|
||||||
|
|
||||||
|
(t/deftest get-account-image-uri
|
||||||
|
(with-redefs
|
||||||
|
[sut/current-theme-index identity
|
||||||
|
sut/timestamp (constantly "timestamp")]
|
||||||
|
(t/is
|
||||||
|
(=
|
||||||
|
(sut/get-account-image-uri {:port "port"
|
||||||
|
:public-key "public-key"
|
||||||
|
:image-name "image-name"
|
||||||
|
:key-uid "key-uid"
|
||||||
|
:theme "theme"
|
||||||
|
:ring? true})
|
||||||
|
"https://localhost:port/accountImages?publicKey=public-key&keyUid=key-uid&imageName=image-name&theme=theme&clock=timestamp&addRing=1"))))
|
Loading…
x
Reference in New Issue
Block a user