Fix crash when selecting avatar in context tags (#13923)
This commit is contained in:
parent
da62e0c533
commit
d4b7e5c8b6
|
@ -1,7 +1,6 @@
|
||||||
(ns quo2.components.context-tags
|
(ns quo2.components.context-tags
|
||||||
(:require [quo2.foundations.colors :as colors]
|
(:require [quo2.foundations.colors :as colors]
|
||||||
[quo.theme :as quo.theme]
|
[quo.theme :as quo.theme]
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[quo2.components.text :as text]
|
[quo2.components.text :as text]
|
||||||
[quo2.components.group-avatar :as group-avatar]
|
[quo2.components.group-avatar :as group-avatar]
|
||||||
[quo.react-native :as rn]))
|
[quo.react-native :as rn]))
|
||||||
|
@ -46,16 +45,15 @@
|
||||||
:size :paragraph-2}
|
:size :paragraph-2}
|
||||||
(trim-public-key public-key)]]))
|
(trim-public-key public-key)]]))
|
||||||
|
|
||||||
(defn user-avatar-tag [_ _]
|
(defn user-avatar-tag []
|
||||||
(fn [params public-key]
|
(fn [params username photo]
|
||||||
(let [{:keys [name photo]} @(re-frame/subscribe [:contacts/name-and-photo public-key])]
|
[base-tag (assoc-in params [:style :padding-left] 3)
|
||||||
[base-tag (assoc-in params [:style :padding-left] 3)
|
[rn/image {:style {:width 20
|
||||||
[rn/image {:style {:width 20
|
:border-radius 10
|
||||||
:border-radius 10
|
:background-color :white
|
||||||
:background-color :white
|
:height 20}
|
||||||
:height 20}
|
:source {:uri photo}}]
|
||||||
:source {:uri photo}}]
|
[text/text {:weight :medium
|
||||||
[text/text {:weight :medium
|
:size :paragraph-2}
|
||||||
:size :paragraph-2}
|
|
||||||
|
|
||||||
(str " " name)]])))
|
(str " " username)]]))
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
(ns quo2.screens.context-tags
|
(ns quo2.screens.context-tags
|
||||||
(:require [reagent.core :as reagent]
|
(:require [reagent.core :as reagent]
|
||||||
[re-frame.core :as re-frame]
|
|
||||||
[status-im.multiaccounts.core :as multiaccounts]
|
[status-im.multiaccounts.core :as multiaccounts]
|
||||||
[quo.react-native :as rn]
|
[quo.react-native :as rn]
|
||||||
[quo.previews.preview :as preview]
|
[quo.previews.preview :as preview]
|
||||||
|
@ -12,38 +11,53 @@
|
||||||
:color :purple})
|
:color :purple})
|
||||||
|
|
||||||
(def example-pk "0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917")
|
(def example-pk "0x04fcf40c526b09ff9fb22f4a5dbd08490ef9b64af700870f8a0ba2133f4251d5607ed83cd9047b8c2796576bc83fa0de23a13a4dced07654b8ff137fe744047917")
|
||||||
|
(def example-pk2 "0x04c178513eb741e8c4e50326b22baefa7d60a2f4eb81e328c4bbe0b441f87b2a014a5907a419f5897fc3c0493a0ff9db689a1999d6ca7fdc63119dd1981d0c7ccf")
|
||||||
|
(def example-photo "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAIAQMAAAD+wSzIAAAABlBMVEX///+/v7+jQ3Y5AAAADklEQVQI12P4AIX8EAgALgAD/aNpbtEAAAAASUVORK5CYII")
|
||||||
|
(def example-photo2 "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAAApgAAAKYB3X3/OAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAANCSURBVEiJtZZPbBtFFMZ/M7ubXdtdb1xSFyeilBapySVU8h8OoFaooFSqiihIVIpQBKci6KEg9Q6H9kovIHoCIVQJJCKE1ENFjnAgcaSGC6rEnxBwA04Tx43t2FnvDAfjkNibxgHxnWb2e/u992bee7tCa00YFsffekFY+nUzFtjW0LrvjRXrCDIAaPLlW0nHL0SsZtVoaF98mLrx3pdhOqLtYPHChahZcYYO7KvPFxvRl5XPp1sN3adWiD1ZAqD6XYK1b/dvE5IWryTt2udLFedwc1+9kLp+vbbpoDh+6TklxBeAi9TL0taeWpdmZzQDry0AcO+jQ12RyohqqoYoo8RDwJrU+qXkjWtfi8Xxt58BdQuwQs9qC/afLwCw8tnQbqYAPsgxE1S6F3EAIXux2oQFKm0ihMsOF71dHYx+f3NND68ghCu1YIoePPQN1pGRABkJ6Bus96CutRZMydTl+TvuiRW1m3n0eDl0vRPcEysqdXn+jsQPsrHMquGeXEaY4Yk4wxWcY5V/9scqOMOVUFthatyTy8QyqwZ+kDURKoMWxNKr2EeqVKcTNOajqKoBgOE28U4tdQl5p5bwCw7BWquaZSzAPlwjlithJtp3pTImSqQRrb2Z8PHGigD4RZuNX6JYj6wj7O4TFLbCO/Mn/m8R+h6rYSUb3ekokRY6f/YukArN979jcW+V/S8g0eT/N3VN3kTqWbQ428m9/8k0P/1aIhF36PccEl6EhOcAUCrXKZXXWS3XKd2vc/TRBG9O5ELC17MmWubD2nKhUKZa26Ba2+D3P+4/MNCFwg59oWVeYhkzgN/JDR8deKBoD7Y+ljEjGZ0sosXVTvbc6RHirr2reNy1OXd6pJsQ+gqjk8VWFYmHrwBzW/n+uMPFiRwHB2I7ih8ciHFxIkd/3Omk5tCDV1t+2nNu5sxxpDFNx+huNhVT3/zMDz8usXC3ddaHBj1GHj/As08fwTS7Kt1HBTmyN29vdwAw+/wbwLVOJ3uAD1wi/dUH7Qei66PfyuRj4Ik9is+hglfbkbfR3cnZm7chlUWLdwmprtCohX4HUtlOcQjLYCu+fzGJH2QRKvP3UNz8bWk1qMxjGTOMThZ3kvgLI5AzFfo379UAAAAASUVORK5CYII=")
|
||||||
|
|
||||||
(def descriptor [{:label "Type"
|
(def main-descriptor [{:label "Type"
|
||||||
:key :type
|
:key :type
|
||||||
:type :select
|
:type :select
|
||||||
:options [{:key :public-key
|
:options [{:key :public-key
|
||||||
:value "Public key"}
|
:value "Public key"}
|
||||||
{:key :avatar
|
{:key :avatar
|
||||||
:value "Avatar"}
|
:value "Avatar"}
|
||||||
{:key :group-avatar
|
{:key :group-avatar
|
||||||
:value "Group avatar"}]}])
|
:value "Group avatar"}]}])
|
||||||
|
|
||||||
(defn cool-preview []
|
(defn cool-preview []
|
||||||
(let [state (reagent/atom {:label "Name"
|
(let [state (reagent/atom {:label "Name"
|
||||||
:type :group-avatar})]
|
:type :group-avatar})]
|
||||||
(fn []
|
(fn []
|
||||||
(let [contacts @(re-frame/subscribe [:contacts/contacts])
|
(let [contacts {example-pk {:public-key example-pk
|
||||||
|
:names {:three-words-name "Automatic incompatible Coati"}
|
||||||
|
:photo example-photo}
|
||||||
|
example-pk2 {:public-key example-pk2
|
||||||
|
:names {:three-words-name "Clearcut Flickering Rattlesnake"}
|
||||||
|
:photo example-photo2}}
|
||||||
|
contacts-public-keys (map (fn [{:keys [public-key]}]
|
||||||
|
{:key public-key
|
||||||
|
:value (multiaccounts/displayed-name
|
||||||
|
(get contacts public-key))})
|
||||||
|
(vals contacts))
|
||||||
|
current-username (if (seq (:contact @state))
|
||||||
|
(->> @state :contact contacts multiaccounts/displayed-name)
|
||||||
|
"Please select a user")
|
||||||
descriptor
|
descriptor
|
||||||
(cond-> descriptor
|
(cond
|
||||||
(= (:type @state) :group-avatar)
|
(= (:type @state) :group-avatar) (conj main-descriptor {:label "Label"
|
||||||
(conj {:label "Label"
|
:key :label
|
||||||
:key :label
|
:type :text})
|
||||||
:type :text})
|
(= (:type @state) :avatar) (let [photo (-> @state :contact contacts :photo)]
|
||||||
(= (:type @state) :avatar)
|
(when-not (contains? @state :contacts)
|
||||||
(conj {:label "Contacts"
|
(swap! state assoc :contacts contacts-public-keys))
|
||||||
:key :contact
|
(when-not (= (:photo @state)
|
||||||
:type :select
|
photo)
|
||||||
:options
|
(swap! state assoc :photo photo))
|
||||||
(map (fn [{:keys [public-key]}]
|
(conj main-descriptor {:label "Contacts"
|
||||||
{:key public-key
|
:key :contact
|
||||||
:value (multiaccounts/displayed-name
|
:type :select
|
||||||
(get contacts public-key))})
|
:options contacts-public-keys})))]
|
||||||
(vals contacts))}))]
|
|
||||||
[rn/view {:margin-bottom 50
|
[rn/view {:margin-bottom 50
|
||||||
:padding 16}
|
:padding 16}
|
||||||
[rn/view {:flex 1}
|
[rn/view {:flex 1}
|
||||||
|
@ -56,9 +70,8 @@
|
||||||
[quo2/group-avatar-tag (:label @state) group-avatar-default-params]
|
[quo2/group-avatar-tag (:label @state) group-avatar-default-params]
|
||||||
:public-key
|
:public-key
|
||||||
[quo2/public-key-tag {} example-pk]
|
[quo2/public-key-tag {} example-pk]
|
||||||
|
|
||||||
:avatar
|
:avatar
|
||||||
[quo2/user-avatar-tag {} (:contact @state)])]]))))
|
[quo2/user-avatar-tag {} current-username (:photo @state)])]]))))
|
||||||
|
|
||||||
(defn preview-context-tags []
|
(defn preview-context-tags []
|
||||||
[rn/view {:background-color (colors/theme-colors colors/white
|
[rn/view {:background-color (colors/theme-colors colors/white
|
||||||
|
|
Loading…
Reference in New Issue