[#8854] Finish "Show my ENS name in chat" setting in user profile
This commit is contained in:
parent
ad80d4b0fd
commit
ec04709495
|
@ -1,6 +1,6 @@
|
|||
(ns status-im.group-chats.db
|
||||
(:require [status-im.chat.models :as models.chat]
|
||||
[status-im.utils.gfycat.core :as gfycat]))
|
||||
[status-im.multiaccounts.core :as multiaccounts]))
|
||||
|
||||
(defn unwrap-events
|
||||
"Flatten all events, denormalizing from field"
|
||||
|
@ -36,15 +36,12 @@
|
|||
(invited? my-public-key chat)
|
||||
(not (joined? my-public-key chat)))
|
||||
(let [inviter-pk (get-inviter-pk my-public-key chat)]
|
||||
(get-in contacts [inviter-pk :name]
|
||||
(gfycat/generate-gfy inviter-pk)))))
|
||||
(multiaccounts/displayed-name (or (get contacts inviter-pk) {:public-key inviter-pk})))))
|
||||
|
||||
(defn get-inviter-name
|
||||
"when the chat is a private group chat in which the user has been
|
||||
invited and didn't accept the invitation yet, return inviter-name"
|
||||
[contacts chat my-public-key]
|
||||
(when (and (models.chat/group-chat? chat)
|
||||
(joined? my-public-key chat))
|
||||
(when (models.chat/group-chat? chat)
|
||||
(let [inviter-pk (get-inviter-pk my-public-key chat)]
|
||||
(get-in contacts [inviter-pk :name]
|
||||
(gfycat/generate-gfy inviter-pk)))))
|
||||
(multiaccounts/displayed-name (or (get contacts inviter-pk) {:public-key inviter-pk})))))
|
||||
|
|
|
@ -15,20 +15,13 @@
|
|||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.utils :as utils]))
|
||||
|
||||
; Whether we should be strict about verifying ens, currently disabled as
|
||||
; status-go can't be upgrade because of geth 1.9 incompatibility
|
||||
(def only-verified-ens false)
|
||||
(defn displayed-name
|
||||
"Use preferred name, name or alias in that order"
|
||||
[{:keys [name preferred-name alias public-key ens-verified]}]
|
||||
(let [ens-name (or preferred-name
|
||||
name)]
|
||||
;; Preferred name is our own
|
||||
;; otherwise we make sure is verified
|
||||
(if (or preferred-name
|
||||
(and only-verified-ens
|
||||
ens-verified
|
||||
name))
|
||||
;; Preferred name is our own otherwise we make sure it's verified
|
||||
(if (or preferred-name (and ens-verified name))
|
||||
(let [username (stateofus/username ens-name)]
|
||||
(str "@" (or username ens-name)))
|
||||
(or alias (gfycat/generate-gfy public-key)))))
|
||||
|
|
|
@ -1657,7 +1657,8 @@
|
|||
:<- [:contacts/contacts]
|
||||
:<- [:multiaccount]
|
||||
(fn [[{:keys [contacts admins]} all-contacts current-multiaccount]]
|
||||
(contact.db/get-all-contacts-in-group-chat contacts admins all-contacts current-multiaccount)))
|
||||
(map #(assoc % :name (multiaccounts/displayed-name %))
|
||||
(contact.db/get-all-contacts-in-group-chat contacts admins all-contacts current-multiaccount))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:contacts/contacts-by-chat
|
||||
|
|
|
@ -192,7 +192,7 @@
|
|||
|
||||
(defview message-author-name [from alias]
|
||||
(letsubs [{:keys [ens-name]} [:contacts/contact-name-by-identity from]]
|
||||
(chat.utils/format-author alias style/message-author-name ens-name)))
|
||||
(chat.utils/format-author alias style/message-author-name-container ens-name)))
|
||||
|
||||
(defn message-body
|
||||
[{:keys [alias
|
||||
|
|
|
@ -180,6 +180,13 @@
|
|||
:margin-right 12
|
||||
:text-align-vertical :center})
|
||||
|
||||
(def message-author-name-container
|
||||
{:padding-top 6
|
||||
:padding-left 12
|
||||
:padding-right 16
|
||||
:margin-right 12
|
||||
:text-align-vertical :center})
|
||||
|
||||
(defn quoted-message-container [outgoing]
|
||||
{:margin-bottom 6
|
||||
:padding-bottom 6
|
||||
|
|
|
@ -19,7 +19,10 @@
|
|||
[status-im.ui.components.toolbar.view :as toolbar]
|
||||
[status-im.ui.screens.chat.message.message :as message]
|
||||
[status-im.ui.screens.profile.components.views :as profile.components]
|
||||
[status-im.utils.navigation :as navigation])
|
||||
[status-im.utils.navigation :as navigation]
|
||||
[status-im.ui.components.list-item.views :as list-item]
|
||||
[status-im.ui.screens.chat.photos :as photos]
|
||||
[status-im.multiaccounts.core :as multiaccounts])
|
||||
(:require-macros [status-im.utils.views :as views]))
|
||||
|
||||
(defn- button
|
||||
|
@ -582,14 +585,15 @@
|
|||
[button {:on-press #(re-frame/dispatch [::ens/get-started-pressed])
|
||||
:label (i18n/label :t/get-started)}]]])
|
||||
|
||||
(defn- name-item [{:keys [name action hide-chevron?]}]
|
||||
(defn- name-item [{:keys [name action]}]
|
||||
(let [stateofus-username (stateofus/username name)
|
||||
s (or stateofus-username name)]
|
||||
[list/big-list-item {:text s
|
||||
:subtext (when stateofus-username stateofus/domain)
|
||||
:action-fn action
|
||||
:icon :main-icons/username
|
||||
:hide-chevron? hide-chevron?}]))
|
||||
[list-item/list-item
|
||||
{:title s
|
||||
:subtitle (when stateofus-username stateofus/domain)
|
||||
:on-press action
|
||||
:icon :main-icons/username
|
||||
:accessories [:chevron]}]))
|
||||
|
||||
(defn- name-list [names preferred-name]
|
||||
[react/view {:style {:flex 1 :margin-top 16}}
|
||||
|
@ -612,13 +616,15 @@
|
|||
[name-item {:name name :hide-chevron? true :action action}]]
|
||||
[radio/radio (= name preferred-name)]]]))]]]])
|
||||
|
||||
(defn- registered [names {:keys [preferred-name address public-key name]} show?]
|
||||
(defn- registered [names {:keys [preferred-name public-key name] :as account} show?]
|
||||
[react/view {:style {:flex 1}}
|
||||
[react/scroll-view
|
||||
[react/view {:style {:margin-top 8}}
|
||||
[list/big-list-item {:text (i18n/label :t/ens-add-username)
|
||||
:action-fn #(re-frame/dispatch [::ens/add-username-pressed])
|
||||
:icon :main-icons/add}]]
|
||||
[list-item/list-item
|
||||
{:title (i18n/label :t/ens-add-username)
|
||||
:theme :action
|
||||
:on-press #(re-frame/dispatch [::ens/add-username-pressed])
|
||||
:icon :main-icons/add}]]
|
||||
[react/view {:style {:margin-top 22 :margin-bottom 8}}
|
||||
[react/text {:style {:color colors/gray :margin-horizontal 16}}
|
||||
(i18n/label :t/ens-your-usernames)]
|
||||
|
@ -645,22 +651,23 @@
|
|||
{:label-kw :ens-show-username
|
||||
:action-fn #(re-frame/dispatch [::ens/switch-show-username])
|
||||
:value show?}]]
|
||||
(let [message (merge {:from public-key
|
||||
:last-in-group? true
|
||||
:display-username? true
|
||||
:display-photo? true
|
||||
:alias name
|
||||
:content {:text (i18n/label :t/ens-test-message)
|
||||
:name (when show? preferred-name)}
|
||||
(let [message (merge {:content {:text (i18n/label :t/ens-test-message)}
|
||||
:content-type "text/plain"
|
||||
:timestamp-str "9:41 AM"}
|
||||
(when show?
|
||||
{:name preferred-name}))]
|
||||
[message/message-body message
|
||||
[message/text-message message]])]])
|
||||
:timestamp-str "9:41 AM"})]
|
||||
[react/view
|
||||
[react/view {:padding-left 60}
|
||||
(if show?
|
||||
^{:key "ens-name"}
|
||||
[message/message-author-name public-key]
|
||||
^{:key "generated"}
|
||||
[message/message-author-name nil name])]
|
||||
[react/view {:flex-direction :row}
|
||||
[react/view {:padding-left 16 :padding-right 8 :padding-top 4}
|
||||
[photos/photo (multiaccounts/displayed-photo account) {:size 36}]]
|
||||
[message/text-message message]]])]])
|
||||
|
||||
(views/defview main []
|
||||
(views/letsubs [{:keys [names multiaccount preferred-name show?]} [:ens.main/screen]]
|
||||
(views/letsubs [{:keys [names multiaccount show?]} [:ens.main/screen]]
|
||||
[react/keyboard-avoiding-view {:style {:flex 1}}
|
||||
[status-bar/status-bar {:type :main}]
|
||||
[toolbar/simple-toolbar
|
||||
|
|
|
@ -44,6 +44,13 @@
|
|||
:number-of-lines 1}
|
||||
generated-name])]))
|
||||
|
||||
(defn- group-name [name]
|
||||
[react/view styles/profile-header-name-container
|
||||
[react/text {:style styles/profile-name-text
|
||||
:number-of-lines 2
|
||||
:ellipsize-mode :tail}
|
||||
name]])
|
||||
|
||||
(defn- profile-header-display [{:keys [name public-key] :as contact}
|
||||
allow-icon-change? include-remove-action?]
|
||||
[react/view (merge styles/profile-header-display {:padding-horizontal 16})
|
||||
|
@ -85,6 +92,11 @@
|
|||
:edit? false}])
|
||||
[names contact]])
|
||||
|
||||
(defn group-header-display [{:keys [chat-name color]}]
|
||||
[react/view (merge styles/profile-header-display {:padding-horizontal 16})
|
||||
[chat-icon.screen/profile-icon-view nil chat-name color nil 64 nil]
|
||||
[group-name chat-name]])
|
||||
|
||||
(defn profile-header
|
||||
[{:keys [contact allow-icon-change? include-remove-action?]}]
|
||||
[profile-header-display contact allow-icon-change? include-remove-action?])
|
||||
|
|
|
@ -54,9 +54,9 @@
|
|||
; :content-height 150}
|
||||
; contact])
|
||||
|
||||
(defn render-detail [{:keys [name public-key] :as detail}]
|
||||
(defn render-detail [{:keys [alias public-key] :as detail}]
|
||||
[list-item/list-item
|
||||
{:title name
|
||||
{:title alias
|
||||
:subtitle (utils/get-shortened-address public-key)
|
||||
:icon [chat-icon/contact-icon-contacts-tab detail]
|
||||
:accessibility-label :profile-public-key
|
||||
|
@ -118,10 +118,12 @@
|
|||
;;TO-DO Rework generate-view to use 3 functions from large-toolbar
|
||||
(views/defview profile []
|
||||
(views/letsubs [list-ref (reagent/atom nil)
|
||||
contact [:contacts/current-contact]]
|
||||
{:keys [ens-verified name] :as contact} [:contacts/current-contact]]
|
||||
(when contact
|
||||
(let [header-in-toolbar (header-in-toolbar contact)
|
||||
header (header contact)
|
||||
header (header (cond-> contact
|
||||
(and ens-verified name)
|
||||
(assoc :usernames [name])))
|
||||
content
|
||||
[[list/action-list (actions contact)
|
||||
{:container-style styles/action-container
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
[re-frame.core :as re-frame]
|
||||
[status-im.ui.components.common.styles :as common.styles]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.utils.utils :as utils]))
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.ui.components.list-item.views :as list-item]))
|
||||
|
||||
(defn group-chat-profile-toolbar [admin?]
|
||||
[toolbar/toolbar {}
|
||||
|
@ -33,21 +34,6 @@
|
|||
:accessibility-label :done-button}
|
||||
(i18n/label :t/done)]])
|
||||
|
||||
(defn actions [allow-adding-members? chat-id]
|
||||
(concat
|
||||
(when allow-adding-members?
|
||||
[{:label (i18n/label :add-members)
|
||||
:icon :main-icons/add
|
||||
:action #(re-frame/dispatch [:navigate-to :add-participants-toggle-list])}])
|
||||
[{:label (i18n/label :t/clear-history)
|
||||
:icon :main-icons/close
|
||||
:action #(re-frame/dispatch [:chat.ui/clear-history-pressed])
|
||||
:accessibility-label :clear-history-button}
|
||||
{:label (i18n/label :t/delete-chat)
|
||||
:icon :main-icons/arrow-left
|
||||
:action #(re-frame/dispatch [:group-chats.ui/remove-chat-pressed chat-id])
|
||||
:accessibility-label :delete-chat-button}]))
|
||||
|
||||
(defn member-actions [chat-id member us-admin?]
|
||||
(concat
|
||||
[{:action #(re-frame/dispatch [(if platform/desktop? :show-profile-desktop :chat.ui/show-profile) (:public-key member)])
|
||||
|
@ -61,7 +47,7 @@
|
|||
:label (i18n/label :t/make-admin)}])))
|
||||
|
||||
(defn render-member [chat-id {:keys [name public-key] :as member} admin? current-user-identity]
|
||||
[react/view
|
||||
[react/view {:padding-vertical 10}
|
||||
[contact/contact-view
|
||||
{:contact member
|
||||
:extend-options (member-actions chat-id member admin?)
|
||||
|
@ -78,15 +64,13 @@
|
|||
(defview chat-group-members-view [chat-id admin? current-user-identity]
|
||||
(letsubs [members [:contacts/current-chat-contacts]]
|
||||
(when (seq members)
|
||||
[react/view
|
||||
[list/flat-list {:data members
|
||||
:separator list/default-separator
|
||||
:key-fn :address
|
||||
:render-fn #(render-member chat-id % admin? current-user-identity)}]])))
|
||||
[list/flat-list {:data members
|
||||
:key-fn :address
|
||||
:render-fn #(render-member chat-id % admin? current-user-identity)}])))
|
||||
|
||||
(defn members-list [chat-id admin? current-user-identity]
|
||||
[react/view
|
||||
[profile.components/settings-title (i18n/label :t/members-title)]
|
||||
[list-item/list-item {:title :t/members-title :type :section-header}]
|
||||
[chat-group-members-view chat-id admin? current-user-identity]])
|
||||
|
||||
(defview group-chat-profile []
|
||||
|
@ -102,20 +86,30 @@
|
|||
(< (count members) constants/max-group-chat-participants))]
|
||||
[react/view profile.components.styles/profile
|
||||
[status-bar/status-bar]
|
||||
(if editing?
|
||||
[group-chat-profile-edit-toolbar]
|
||||
[group-chat-profile-toolbar admin?])
|
||||
;;TODO doesn't work, needs to be fixed
|
||||
;(if editing?
|
||||
;[group-chat-profile-edit-toolbar]
|
||||
[group-chat-profile-toolbar false];admin?]
|
||||
[react/scroll-view
|
||||
[react/view profile.components.styles/profile-form
|
||||
[profile.components/profile-header
|
||||
{:contact shown-chat
|
||||
:editing? editing?
|
||||
:allow-icon-change? false
|
||||
:on-change-text-event :group-chats.ui/name-changed}]
|
||||
[list/action-list (actions allow-adding-members? chat-id)
|
||||
{:container-style styles/action-container
|
||||
:action-style styles/action
|
||||
:action-label-style styles/action-label
|
||||
:action-separator-style styles/action-separator
|
||||
:icon-opts styles/action-icon-opts}]
|
||||
[profile.components/group-header-display shown-chat]
|
||||
[react/view {:height 20}]
|
||||
(when allow-adding-members?
|
||||
[list-item/list-item
|
||||
{:title :t/add-members
|
||||
:icon :main-icons/add
|
||||
:theme :action
|
||||
:on-press #(re-frame/dispatch [:navigate-to :add-participants-toggle-list])}])
|
||||
[list-item/list-item
|
||||
{:title :t/clear-history
|
||||
:icon :main-icons/close
|
||||
:theme :action
|
||||
:on-press #(re-frame/dispatch [:chat.ui/clear-history-pressed])
|
||||
:accessibility-label :clear-history-button}]
|
||||
[list-item/list-item
|
||||
{:title :t/delete-chat
|
||||
:icon :main-icons/arrow-left
|
||||
:theme :action
|
||||
:on-press #(re-frame/dispatch [:group-chats.ui/remove-chat-pressed chat-id])
|
||||
:accessibility-label :delete-chat-button}]
|
||||
[members-list chat-id admin? (first admins) current-pk]]]]))))
|
||||
|
|
Loading…
Reference in New Issue