fix unread badges behavior on Jump-to screen (#17363)
This commit is contained in:
parent
e5ef15b531
commit
db41eb303d
|
@ -80,11 +80,11 @@
|
|||
:position :absolute})
|
||||
|
||||
(defn unread-dot
|
||||
[background-color]
|
||||
[customization-color]
|
||||
{:width 8
|
||||
:height 8
|
||||
:border-radius 4
|
||||
:background-color background-color})
|
||||
:background-color (colors/custom-color customization-color 60)})
|
||||
|
||||
(def bottom-container
|
||||
{:position :absolute
|
||||
|
|
|
@ -98,13 +98,13 @@
|
|||
nil))])
|
||||
|
||||
(defn notification-container
|
||||
[{:keys [notification-indicator counter-label customization-color]}]
|
||||
[{:keys [notification-indicator counter-label profile-customization-color]}]
|
||||
[rn/view {:style style/notification-container}
|
||||
(if (= notification-indicator :counter)
|
||||
[quo/counter
|
||||
{:customization-color customization-color}
|
||||
{:customization-color profile-customization-color}
|
||||
counter-label]
|
||||
[rn/view {:style (style/unread-dot customization-color)}])])
|
||||
[rn/view {:style (style/unread-dot profile-customization-color)}])])
|
||||
|
||||
(defn bottom-container
|
||||
[type {:keys [new-notifications?] :as content}]
|
||||
|
@ -225,7 +225,7 @@
|
|||
[]
|
||||
(let [card-ref (atom nil)]
|
||||
(fn [{:keys [avatar-params title type customization-color
|
||||
content banner id channel-id]}]
|
||||
content banner id channel-id profile-customization-color]}]
|
||||
(let [color-50 (colors/custom-color customization-color 50)]
|
||||
[rn/touchable-opacity
|
||||
{:on-press #(calculate-card-position-and-open-screen
|
||||
|
@ -255,8 +255,9 @@
|
|||
:style style/subtitle}
|
||||
(subtitle type content)]
|
||||
[bottom-container type
|
||||
(merge {:color-50 color-50
|
||||
:customization-color customization-color}
|
||||
(merge {:color-50 color-50
|
||||
:customization-color customization-color
|
||||
:profile-customization-color profile-customization-color}
|
||||
content)]]
|
||||
(when avatar-params
|
||||
[rn/view {:style style/avatar-container}
|
||||
|
|
|
@ -18,9 +18,11 @@
|
|||
(first images)))})))
|
||||
|
||||
(defn get-card-content
|
||||
[{:keys [chat communities group-chat? primary-name]}]
|
||||
[{:keys [chat communities group-chat? primary-name unviewed-messages-count unviewed-mentions-count]}]
|
||||
(let [{:keys [content-type content deleted? outgoing deleted-for-me?] :as last-message}
|
||||
(:last-message chat)]
|
||||
(:last-message chat)
|
||||
unviewed-messages-count (or unviewed-messages-count (:unviewed-messages-count chat))
|
||||
unviewed-mentions-count (or unviewed-mentions-count (:unviewed-mentions-count chat))]
|
||||
(merge
|
||||
(when last-message
|
||||
(cond
|
||||
|
@ -72,54 +74,67 @@
|
|||
content-type)
|
||||
{:content-type constants/content-type-contact-request}))
|
||||
|
||||
{:new-notifications? (pos? (:unviewed-messages-count chat))
|
||||
:notification-indicator (if (pos? (:unviewed-mentions-count chat))
|
||||
{:new-notifications? (pos? unviewed-messages-count)
|
||||
:notification-indicator (if (or
|
||||
(= (:chat-type chat) constants/one-to-one-chat-type)
|
||||
(pos? unviewed-mentions-count))
|
||||
:counter
|
||||
:unread-dot)
|
||||
:counter-label (:unviewed-mentions-count chat)})))
|
||||
:counter-label (if (= (:chat-type chat) constants/one-to-one-chat-type)
|
||||
unviewed-messages-count
|
||||
unviewed-mentions-count)})))
|
||||
|
||||
(defn one-to-one-chat-card
|
||||
[contact names profile-picture chat id communities]
|
||||
[contact names profile-picture chat id communities profile-customization-color]
|
||||
(let [display-name (first names)]
|
||||
{:title display-name
|
||||
:avatar-params {:full-name display-name
|
||||
:profile-picture profile-picture}
|
||||
:customization-color (or (:customization-color contact) :primary)
|
||||
:content (get-card-content
|
||||
{:chat chat
|
||||
:communities communities})
|
||||
:id id}))
|
||||
{:title display-name
|
||||
:avatar-params {:full-name display-name
|
||||
:profile-picture profile-picture}
|
||||
:customization-color (or (:customization-color contact) :primary)
|
||||
:content (get-card-content
|
||||
{:chat chat
|
||||
:communities communities})
|
||||
:id id
|
||||
:profile-customization-color profile-customization-color}))
|
||||
|
||||
(defn private-group-chat-card
|
||||
[chat id communities primary-name]
|
||||
{:title (:chat-name chat)
|
||||
:avatar-params {}
|
||||
:customization-color (or (:color chat) :primary)
|
||||
:content (get-card-content
|
||||
{:chat chat
|
||||
:communities communities
|
||||
:group-chat? true
|
||||
:primary-name primary-name})
|
||||
:id id})
|
||||
[chat id communities primary-name profile-customization-color]
|
||||
{:title (:chat-name chat)
|
||||
:avatar-params {}
|
||||
:customization-color (or (:color chat) :primary)
|
||||
:content (get-card-content
|
||||
{:chat chat
|
||||
:communities communities
|
||||
:group-chat? true
|
||||
:primary-name primary-name})
|
||||
:id id
|
||||
:profile-customization-color profile-customization-color})
|
||||
|
||||
(defn community-card
|
||||
[community id]
|
||||
[community id profile-customization-color]
|
||||
(let [profile-picture (community-avatar community)]
|
||||
{:title (:name community)
|
||||
:banner {:uri (get-in (:images community) [:banner :uri])}
|
||||
:avatar-params (if profile-picture
|
||||
{:source profile-picture}
|
||||
{:name (:name community)})
|
||||
:customization-color (or (:color community) :primary)
|
||||
:content {:community-info {:type :permission}}
|
||||
:id id}))
|
||||
{:title (:name community)
|
||||
:banner {:uri (get-in (:images community) [:banner :uri])}
|
||||
:avatar-params (if profile-picture
|
||||
{:source profile-picture}
|
||||
{:name (:name community)})
|
||||
:customization-color (or (:color community) :primary)
|
||||
:content (merge
|
||||
{:community-info {:type :permission}}
|
||||
(get-card-content
|
||||
{:unviewed-messages-count (:unviewed-messages-count community)
|
||||
:unviewed-mentions-count (:unviewed-mentions-count community)}))
|
||||
:id id
|
||||
:profile-customization-color profile-customization-color}))
|
||||
|
||||
(defn community-channel-card
|
||||
[community community-id channel channel-id]
|
||||
[community community-id channel channel-id profile-customization-color]
|
||||
(merge
|
||||
(community-card community community-id)
|
||||
{:content {:community-channel {:emoji (:emoji channel)
|
||||
:channel-name (str "# " (:name channel))}}
|
||||
(community-card community community-id profile-customization-color)
|
||||
{:content (merge
|
||||
{:community-channel {:emoji (:emoji channel)
|
||||
:channel-name (str "# " (:name channel))}}
|
||||
(get-card-content {:chat channel}))
|
||||
:customization-color (or (:color channel) :primary)
|
||||
:channel-id channel-id}))
|
||||
|
||||
|
@ -151,14 +166,16 @@
|
|||
(re-frame/subscribe [:contacts/contact-two-names-by-identity id])
|
||||
(re-frame/subscribe [:chats/photo-path id])
|
||||
(re-frame/subscribe [:chats/chat id])
|
||||
(re-frame/subscribe [:communities])])
|
||||
(fn [[contact names profile-picture chat communities] [_ id]]
|
||||
(re-frame/subscribe [:communities])
|
||||
(re-frame/subscribe [:profile/customization-color])])
|
||||
(fn [[contact names profile-picture chat communities profile-customization-color] [_ id]]
|
||||
(one-to-one-chat-card contact
|
||||
names
|
||||
profile-picture
|
||||
chat
|
||||
id
|
||||
communities)))
|
||||
communities
|
||||
profile-customization-color)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:shell/private-group-chat-card
|
||||
|
@ -166,8 +183,9 @@
|
|||
[(re-frame/subscribe [:chats/chat id])
|
||||
(re-frame/subscribe [:communities])
|
||||
(re-frame/subscribe [:contacts/contacts])
|
||||
(re-frame/subscribe [:profile/profile])])
|
||||
(fn [[chat communities contacts current-multiaccount] [_ id]]
|
||||
(re-frame/subscribe [:profile/profile])
|
||||
(re-frame/subscribe [:profile/customization-color])])
|
||||
(fn [[chat communities contacts current-multiaccount profile-customization-color] [_ id]]
|
||||
(let [from (get-in chat [:last-message :from])
|
||||
contact (when from (multiaccounts/contact-by-identity contacts from))
|
||||
primary-name (when from
|
||||
|
@ -175,24 +193,27 @@
|
|||
contact
|
||||
current-multiaccount
|
||||
from)))]
|
||||
(private-group-chat-card chat id communities primary-name))))
|
||||
(private-group-chat-card chat id communities primary-name profile-customization-color))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:shell/community-card
|
||||
(fn [[_ id] _]
|
||||
[(re-frame/subscribe [:communities/community id])])
|
||||
(fn [[community] [_ id]]
|
||||
(community-card community id)))
|
||||
[(re-frame/subscribe [:communities/community id])
|
||||
(re-frame/subscribe [:communities/unviewed-counts id])
|
||||
(re-frame/subscribe [:profile/customization-color])])
|
||||
(fn [[community unviewed-counts profile-customization-color] [_ id]]
|
||||
(community-card (merge community unviewed-counts) id profile-customization-color)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:shell/community-channel-card
|
||||
(fn [[_ channel-id] _]
|
||||
[(re-frame/subscribe [:chats/chat channel-id])
|
||||
(re-frame/subscribe [:communities])])
|
||||
(fn [[channel communities] [_ channel-id]]
|
||||
(re-frame/subscribe [:communities])
|
||||
(re-frame/subscribe [:profile/customization-color])])
|
||||
(fn [[channel communities profile-customization-color] [_ channel-id]]
|
||||
(let [community-id (:community-id channel)
|
||||
community (get communities (:community-id channel))]
|
||||
(community-channel-card community community-id channel channel-id))))
|
||||
(community-channel-card community community-id channel channel-id profile-customization-color))))
|
||||
|
||||
;; Bottom tabs
|
||||
(re-frame/reg-sub
|
||||
|
|
Loading…
Reference in New Issue