Compare commits
1
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b8ed31d98c |
@@ -64,6 +64,7 @@
|
||||
assoc
|
||||
:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0
|
||||
:highlight false))
|
||||
|
||||
(rf/defn handle-mark-all-read-successful
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
{:keys [chat-id
|
||||
unviewed-messages-count
|
||||
unviewed-mentions-count
|
||||
unviewed-replies-count
|
||||
last-message]}]
|
||||
(let [removed-messages-ids (keep
|
||||
(fn [[message-id {:keys [from]}]]
|
||||
@@ -29,6 +30,7 @@
|
||||
assoc
|
||||
:unviewed-messages-count unviewed-messages-count
|
||||
:unviewed-mentions-count unviewed-mentions-count
|
||||
:unviewed-replies-count unviewed-replies-count
|
||||
:last-message last-message))]
|
||||
{:db (assoc-in db
|
||||
[:message-lists chat-id]
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
:chatType :chat-type
|
||||
:unviewedMessagesCount :unviewed-messages-count
|
||||
:unviewedMentionsCount :unviewed-mentions-count
|
||||
:unviewedRepliesCount :unviewed-replies-count
|
||||
:lastMessage :last-message
|
||||
:lastClockValue :last-clock-value
|
||||
:invitationAdmin :invitation-admin
|
||||
@@ -96,6 +97,7 @@
|
||||
:chat-type (.-chatType chat)
|
||||
:unviewed-messages-count (.-unviewedMessagesCount chat)
|
||||
:unviewed-mentions-count (.-unviewedMentionsCount chat)
|
||||
:unviewed-replies-count (.-unviewedRepliesCount chat)
|
||||
:last-message {:content {:text (.-text chat)
|
||||
:parsed-text (types/js->clj (.-parsedText chat))}
|
||||
:content-type (.-contentType chat)
|
||||
|
||||
@@ -200,6 +200,7 @@
|
||||
message-type (.-messageType message-js)
|
||||
from (.-from message-js)
|
||||
mentioned (.-mentioned message-js)
|
||||
replied (.-replied message-js)
|
||||
new (.-new message-js)
|
||||
current (= current-chat-id chat-id)
|
||||
should-update-unviewed? (and (not current)
|
||||
@@ -221,6 +222,10 @@
|
||||
mentioned)
|
||||
(update-in [:db :chats chat-id :unviewed-mentions-count] inc)
|
||||
|
||||
(and should-update-unviewed?
|
||||
replied)
|
||||
(update-in [:db :chats chat-id :unviewed-replies-count] inc)
|
||||
|
||||
;;conj incoming transaction for :watch-tx
|
||||
(not (string/blank? tx-hash))
|
||||
(update :transactions conj tx-hash)
|
||||
|
||||
@@ -22,11 +22,14 @@
|
||||
|
||||
(defn community-unviewed-count
|
||||
[id]
|
||||
(let [{:keys [unviewed-messages-count unviewed-mentions-count]} (rf/sub [:communities/unviewed-counts
|
||||
id])]
|
||||
(let [{:keys [unviewed-messages-count
|
||||
unviewed-mentions-count
|
||||
unviewed-replies-count]}
|
||||
(rf/sub [:communities/unviewed-counts id])
|
||||
unviewed-count (+ unviewed-mentions-count unviewed-replies-count)]
|
||||
(cond
|
||||
(pos? unviewed-mentions-count)
|
||||
[badge/message-counter unviewed-mentions-count]
|
||||
(pos? unviewed-count)
|
||||
[badge/message-counter unviewed-count]
|
||||
|
||||
(pos? unviewed-messages-count)
|
||||
[react/view
|
||||
|
||||
@@ -127,39 +127,43 @@
|
||||
|
||||
(defn unviewed-indicator
|
||||
[{:keys [unviewed-mentions-count
|
||||
unviewed-replies-count
|
||||
unviewed-messages-count
|
||||
public?]}]
|
||||
(when (pos? unviewed-messages-count)
|
||||
[react/view {:position :absolute :right 16}
|
||||
(cond
|
||||
(and public? (not (pos? unviewed-mentions-count)))
|
||||
[react/view
|
||||
{:style styles/public-unread
|
||||
:accessibility-label :unviewed-messages-public}]
|
||||
(let [unviewed-count (+ unviewed-mentions-count unviewed-replies-count)]
|
||||
(when (pos? unviewed-count)
|
||||
[react/view {:position :absolute :right 16}
|
||||
(cond
|
||||
(and public? (not (pos? unviewed-count)))
|
||||
[react/view
|
||||
{:style styles/public-unread
|
||||
:accessibility-label :unviewed-messages-public}]
|
||||
|
||||
(and public? (pos? unviewed-mentions-count))
|
||||
[badge/message-counter unviewed-mentions-count]
|
||||
(and public? (pos? unviewed-count))
|
||||
[badge/message-counter unviewed-count]
|
||||
|
||||
:else
|
||||
[badge/message-counter unviewed-messages-count])]))
|
||||
:else
|
||||
[badge/message-counter unviewed-messages-count])])))
|
||||
|
||||
(defn unviewed-indicator-old
|
||||
[{:keys [unviewed-mentions-count
|
||||
unviewed-messages-count
|
||||
unviewed-replies-count
|
||||
public?]}]
|
||||
(when (pos? unviewed-messages-count)
|
||||
[react/view {:position :absolute :right 16 :bottom 12}
|
||||
(cond
|
||||
(and public? (not (pos? unviewed-mentions-count)))
|
||||
[react/view
|
||||
{:style styles/public-unread
|
||||
:accessibility-label :unviewed-messages-public}]
|
||||
(let [unviewed-count (+ unviewed-mentions-count unviewed-replies-count)]
|
||||
(when (pos? unviewed-messages-count)
|
||||
[react/view {:position :absolute :right 16 :bottom 12}
|
||||
(cond
|
||||
(and public? (not (pos? unviewed-count)))
|
||||
[react/view
|
||||
{:style styles/public-unread
|
||||
:accessibility-label :unviewed-messages-public}]
|
||||
|
||||
(and public? (pos? unviewed-mentions-count))
|
||||
[badge/message-counter unviewed-mentions-count]
|
||||
(and public? (pos? unviewed-count))
|
||||
[badge/message-counter unviewed-count]
|
||||
|
||||
:else
|
||||
[badge/message-counter unviewed-messages-count])]))
|
||||
:else
|
||||
[badge/message-counter unviewed-messages-count])])))
|
||||
|
||||
(defn icon-style
|
||||
[]
|
||||
|
||||
@@ -130,6 +130,7 @@
|
||||
{:last-message nil
|
||||
:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0
|
||||
:deleted-at-clock-value last-message-clock-value})
|
||||
chats))))}))
|
||||
|
||||
@@ -236,7 +237,7 @@
|
||||
|
||||
(rf/defn decrease-unviewed-count
|
||||
{:events [:chat/decrease-unviewed-count]}
|
||||
[{:keys [db]} chat-id {:keys [count countWithMentions]}]
|
||||
[{:keys [db]} chat-id {:keys [count countWithMentions countWithReplies]}]
|
||||
{:db (-> db
|
||||
;; There might be some other requests being fired,
|
||||
;; so we need to make sure the count has not been set to
|
||||
@@ -244,7 +245,9 @@
|
||||
(update-in [:chats chat-id :unviewed-messages-count]
|
||||
#(max (- % count) 0))
|
||||
(update-in [:chats chat-id :unviewed-mentions-count]
|
||||
#(max (- % countWithMentions) 0)))})
|
||||
#(max (- % countWithMentions) 0))
|
||||
(update-in [:chats chat-id :unviewed-replies-count]
|
||||
#(max (- % countWithReplies) 0)))})
|
||||
|
||||
;;;; UI
|
||||
|
||||
|
||||
@@ -116,9 +116,17 @@
|
||||
|
||||
(defn chat-list-item
|
||||
[item]
|
||||
(let [{:keys [chat-id color group-chat last-message timestamp name unviewed-mentions-count
|
||||
(let [{:keys [chat-id
|
||||
color
|
||||
group-chat
|
||||
last-message
|
||||
timestamp
|
||||
name
|
||||
unviewed-mentions-count
|
||||
unviewed-replies-count
|
||||
unviewed-messages-count]}
|
||||
item
|
||||
unviewed-count (+ unviewed-mentions-count unviewed-replies-count)
|
||||
display-name
|
||||
(if group-chat name (first (rf/sub [:contacts/contact-two-names-by-identity chat-id])))
|
||||
contact (when-not group-chat (rf/sub [:contacts/contact-by-address chat-id]))
|
||||
@@ -137,8 +145,8 @@
|
||||
:style {:color (colors/theme-colors colors/neutral-50 colors/neutral-40)}}
|
||||
(get-in last-message [:content :text])]
|
||||
[render-subheader (get-in last-message [:content :parsed-text])])]
|
||||
(if (> unviewed-mentions-count 0)
|
||||
(if (> unviewed-count 0)
|
||||
[quo/info-count {:style {:top 16}}
|
||||
unviewed-mentions-count]
|
||||
unviewed-count]
|
||||
(when (> unviewed-messages-count 0)
|
||||
[rn/view {:style (style/count-container)}]))]))
|
||||
|
||||
@@ -138,6 +138,7 @@
|
||||
:muted? (:muted community)
|
||||
:unread-messages? (pos? (:unviewed-messages-count counts))
|
||||
:unread-mentions-count (:unviewed-mentions-count counts)
|
||||
:unread-replies-count (:unviewed-replies-count counts)
|
||||
:community-icon (:images community)})
|
||||
|
||||
(re-frame/reg-sub
|
||||
@@ -176,11 +177,13 @@
|
||||
|
||||
(defn calculate-unviewed-counts
|
||||
[chats]
|
||||
(reduce (fn [acc {:keys [unviewed-mentions-count unviewed-messages-count]}]
|
||||
(reduce (fn [acc {:keys [unviewed-mentions-count unviewed-replies-count unviewed-messages-count]}]
|
||||
{:unviewed-messages-count (+ (:unviewed-messages-count acc) (or unviewed-messages-count 0))
|
||||
:unviewed-mentions-count (+ (:unviewed-mentions-count acc) (or unviewed-mentions-count 0))})
|
||||
:unviewed-mentions-count (+ (:unviewed-mentions-count acc) (or unviewed-mentions-count 0))
|
||||
:unviewed-replies-count (+ (:unviewed-replies-count acc) (or unviewed-replies-count 0))})
|
||||
{:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0}
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0}
|
||||
chats))
|
||||
|
||||
(re-frame/reg-sub
|
||||
|
||||
@@ -62,15 +62,19 @@
|
||||
:chats
|
||||
{"0x100" {:community-id community-id
|
||||
:unviewed-mentions-count 3
|
||||
:unviewed-replies-count 3
|
||||
:unviewed-messages-count 2}
|
||||
"0x101" {:community-id "0x2"
|
||||
:unviewed-mentions-count 7
|
||||
:unviewed-replies-count 2
|
||||
:unviewed-messages-count 9}
|
||||
"0x102" {:community-id community-id
|
||||
:unviewed-mentions-count 5
|
||||
:unviewed-replies-count 7
|
||||
:unviewed-messages-count 1}})
|
||||
(is (= {:unviewed-messages-count 3
|
||||
:unviewed-mentions-count 8}
|
||||
:unviewed-mentions-count 8
|
||||
:unviewed-replies-count 10}
|
||||
(rf/sub [sub-name community-id]))))
|
||||
|
||||
(testing "defaults to zero when count keys are not present"
|
||||
@@ -78,7 +82,8 @@
|
||||
:chats
|
||||
{"0x100" {:community-id community-id}})
|
||||
(is (= {:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0}
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0}
|
||||
(rf/sub [sub-name community-id])))))
|
||||
|
||||
(h/deftest-sub :communities/community-ids-by-user-involvement
|
||||
|
||||
@@ -15,8 +15,12 @@
|
||||
(first images)))}))))
|
||||
|
||||
(defn get-card-content
|
||||
[chat communities]
|
||||
(let [last-message (:last-message chat)]
|
||||
[{:keys [last-message
|
||||
unviewed-messages-count
|
||||
unviewed-mentions-count
|
||||
unviewed-replies-count]
|
||||
:as chat} communities]
|
||||
(let [unviewed-count (+ unviewed-mentions-count unviewed-replies-count)]
|
||||
(merge
|
||||
(when last-message
|
||||
(case (:content-type last-message)
|
||||
@@ -53,11 +57,11 @@
|
||||
:community-name (:name community)}})
|
||||
|
||||
nil))
|
||||
{:new-notifications? (pos? (:unviewed-messages-count chat))
|
||||
:notification-indicator (if (pos? (:unviewed-mentions-count chat))
|
||||
{:new-notifications? (pos? unviewed-messages-count)
|
||||
:notification-indicator (if (pos? unviewed-count)
|
||||
:counter
|
||||
:unread-dot)
|
||||
:counter-label (:unviewed-mentions-count chat)})))
|
||||
:counter-label unviewed-count})))
|
||||
|
||||
(defn one-to-one-chat-card
|
||||
[contact names chat id communities]
|
||||
@@ -159,29 +163,47 @@
|
||||
(fn [chats]
|
||||
(let [{:keys [chats-stack community-stack]}
|
||||
(reduce
|
||||
(fn [acc [_ {:keys [unviewed-messages-count unviewed-mentions-count chat-type]}]]
|
||||
(fn
|
||||
[acc
|
||||
[_
|
||||
{:keys [unviewed-messages-count
|
||||
unviewed-mentions-count
|
||||
unviewed-replies-count
|
||||
chat-type]}]]
|
||||
(case chat-type
|
||||
constants/community-chat-type
|
||||
(-> acc
|
||||
(update-in [:community-stack :unviewed-messages-count] + unviewed-messages-count)
|
||||
(update-in [:community-stack :unviewed-mentions-count] + unviewed-mentions-count))
|
||||
(update-in [:community-stack :unviewed-mentions-count] + unviewed-mentions-count)
|
||||
(update-in [:community-stack :unviewed-replies-count] + unviewed-replies-count))
|
||||
|
||||
(constants/private-group-chat-type constants/one-to-one-chat-type)
|
||||
(-> acc
|
||||
(update-in [:chats-stack :unviewed-messages-count] + unviewed-messages-count)
|
||||
(update-in [:chats-stack :unviewed-mentions-count] + unviewed-mentions-count))
|
||||
(update-in [:chats-stack :unviewed-mentions-count] + unviewed-mentions-count)
|
||||
(update-in [:chats-stack :unviewed-replies-count] + unviewed-replies-count))
|
||||
|
||||
acc))
|
||||
{:chats-stack {:unviewed-messages-count 0 :unviewed-mentions-count 0}
|
||||
:community-stack {:unviewed-messages-count 0 :unviewed-mentions-count 0}}
|
||||
chats)]
|
||||
{:chats-stack {:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0}
|
||||
:community-stack {:unviewed-messages-count 0
|
||||
:unviewed-mentions-count 0
|
||||
:unviewed-replies-count 0}}
|
||||
chats)
|
||||
community-unviewed-count (+ (:unviewed-mentions-count community-stack)
|
||||
(:unviewed-replies-count community-stack))
|
||||
chats-unviewed-count (+ (:unviewed-mentions-count chats-stack)
|
||||
(:unviewed-replies-count chats-stack))]
|
||||
{:communities-stack
|
||||
{:new-notifications? (pos? (:unviewed-messages-count community-stack))
|
||||
:notification-indicator (if (pos? (:unviewed-mentions-count community-stack))
|
||||
:notification-indicator (if (pos? community-unviewed-count)
|
||||
:counter
|
||||
:unread-dot)
|
||||
:counter-label (:unviewed-mentions-count community-stack)}
|
||||
:counter-label community-unviewed-count}
|
||||
:chats-stack
|
||||
{:new-notifications? (pos? (:unviewed-messages-count chats-stack))
|
||||
:notification-indicator (if (pos? (:unviewed-mentions-count chats-stack)) :counter :unread-dot)
|
||||
:counter-label (:unviewed-mentions-count chats-stack)}})))
|
||||
:notification-indicator (if (pos? chats-unviewed-count)
|
||||
:counter
|
||||
:unread-dot)
|
||||
:counter-label chats-unviewed-count}})))
|
||||
|
||||
Reference in New Issue
Block a user