From db41eb303d4b3e2092cfc796f7270e1f6a5332fa Mon Sep 17 00:00:00 2001 From: Parvesh Monu Date: Thu, 21 Sep 2023 17:53:38 +0530 Subject: [PATCH] fix unread badges behavior on Jump-to screen (#17363) --- .../components/switcher_cards/style.cljs | 4 +- .../components/switcher_cards/view.cljs | 13 +- src/status_im2/subs/shell.cljs | 119 ++++++++++-------- 3 files changed, 79 insertions(+), 57 deletions(-) diff --git a/src/status_im2/contexts/shell/jump_to/components/switcher_cards/style.cljs b/src/status_im2/contexts/shell/jump_to/components/switcher_cards/style.cljs index 4a74fbf2d7e..032bfaae7db 100644 --- a/src/status_im2/contexts/shell/jump_to/components/switcher_cards/style.cljs +++ b/src/status_im2/contexts/shell/jump_to/components/switcher_cards/style.cljs @@ -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 diff --git a/src/status_im2/contexts/shell/jump_to/components/switcher_cards/view.cljs b/src/status_im2/contexts/shell/jump_to/components/switcher_cards/view.cljs index af74941b07f..d67b36d4fb5 100644 --- a/src/status_im2/contexts/shell/jump_to/components/switcher_cards/view.cljs +++ b/src/status_im2/contexts/shell/jump_to/components/switcher_cards/view.cljs @@ -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} diff --git a/src/status_im2/subs/shell.cljs b/src/status_im2/subs/shell.cljs index d667c80f3f1..dd26f28af47 100644 --- a/src/status_im2/subs/shell.cljs +++ b/src/status_im2/subs/shell.cljs @@ -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