From 2f52cb1f0c1e9f7b29650db17f588e0c315f6ded Mon Sep 17 00:00:00 2001 From: Mohamed Javid <19339952+smohamedjavid@users.noreply.github.com> Date: Fri, 13 Jan 2023 23:44:02 +0530 Subject: [PATCH] Show Admin Notifications in Activity Center (#14748) * [Feature][#14713] Added Admin Notifications in Activity Center * [Feature][#14713] Admin Notification UI fixes * [Feature][#14713] Admin Notification PR Feedbacks * [Feature][#14713] Admin Notification PR Feedbacks * [Feature][#14713] Admin Notification accessiblity label update --- src/status_im/data_store/activities.cljs | 4 +- src/status_im2/common/constants.cljs | 5 ++ .../notification/admin/view.cljs | 55 +++++++++++++++++++ .../activity_center/notification_types.cljs | 2 +- .../contexts/activity_center/view.cljs | 4 ++ translations/en.json | 4 +- 6 files changed, 71 insertions(+), 3 deletions(-) create mode 100644 src/status_im2/contexts/activity_center/notification/admin/view.cljs diff --git a/src/status_im/data_store/activities.cljs b/src/status_im/data_store/activities.cljs index 7b12561cad..6360dc2570 100644 --- a/src/status_im/data_store/activities.cljs +++ b/src/status_im/data_store/activities.cljs @@ -40,7 +40,9 @@ (set/rename-keys {:lastMessage :last-message :replyMessage :reply-message :chatId :chat-id - :contactVerificationStatus :contact-verification-status}) + :contactVerificationStatus :contact-verification-status + :communityId :community-id + :membershipStatus :membership-status}) (update :last-message #(when % (messages/<-rpc %))) (update :message #(when % (messages/<-rpc %))) (update :reply-message #(when % (messages/<-rpc %))) diff --git a/src/status_im2/common/constants.cljs b/src/status_im2/common/constants.cljs index 61cd4ffec5..249b514814 100644 --- a/src/status_im2/common/constants.cljs +++ b/src/status_im2/common/constants.cljs @@ -31,6 +31,11 @@ (def ^:const contact-verification-status-trusted 5) (def ^:const contact-verification-status-untrustworthy 6) +(def ^:const activity-center-membership-status-idle 0) +(def ^:const activity-center-membership-status-pending 1) +(def ^:const activity-center-membership-status-accepted 2) +(def ^:const activity-center-membership-status-declined 3) + (def ^:const emoji-reaction-love 1) (def ^:const emoji-reaction-thumbs-up 2) (def ^:const emoji-reaction-thumbs-down 3) diff --git a/src/status_im2/contexts/activity_center/notification/admin/view.cljs b/src/status_im2/contexts/activity_center/notification/admin/view.cljs new file mode 100644 index 0000000000..b575bc80d5 --- /dev/null +++ b/src/status_im2/contexts/activity_center/notification/admin/view.cljs @@ -0,0 +1,55 @@ +(ns status-im2.contexts.activity-center.notification.admin.view + (:require [i18n.i18n :as i18n] + [quo2.core :as quo] + [quo2.foundations.colors :as colors] + [status-im2.common.constants :as constants] + [status-im2.contexts.activity-center.notification.common.style :as style] + [status-im2.contexts.activity-center.notification.common.view :as common] + [utils.datetime :as datetime] + [utils.re-frame :as rf])) + +(defn view + [{:keys [author community-id id membership-status read timestamp]}] + (let [community (rf/sub [:communities/community community-id]) + community-name (:name community) + community-image (get-in community [:images :thumbnail :uri])] + [quo/activity-log + (merge + {:title (i18n/label :t/join-request) + :icon :i/add-user + :timestamp (datetime/timestamp->relative timestamp) + :unread? (not read) + :context [[common/user-avatar-tag author] + (i18n/label :t/wants-to-join) + [quo/context-tag + {:size :small + :override-theme :dark + :color colors/primary-50 + :style style/user-avatar-tag + :text-style style/user-avatar-tag-text} + {:uri community-image} community-name]] + :status (case membership-status + constants/activity-center-membership-status-accepted + {:type :positive :label (i18n/label :t/accepted)} + constants/activity-center-membership-status-declined + {:type :negative :label (i18n/label :t/declined)} + nil)} + (case membership-status + constants/activity-center-membership-status-pending + {:button-1 {:label (i18n/label :t/decline) + :accessibility-label :decline-join-request + :type :danger + :on-press (fn [] + (rf/dispatch [:communities.ui/decline-request-to-join-pressed + community-id id]) + (rf/dispatch [:activity-center.notifications/mark-as-read + id]))} + :button-2 {:label (i18n/label :t/accept) + :accessibility-label :accept-join-request + :type :positive + :on-press (fn [] + (rf/dispatch [:communities.ui/accept-request-to-join-pressed + community-id id]) + (rf/dispatch [:activity-center.notifications/mark-as-read + id]))}} + nil))])) diff --git a/src/status_im2/contexts/activity_center/notification_types.cljs b/src/status_im2/contexts/activity_center/notification_types.cljs index eef259bc84..69f0b31bc2 100644 --- a/src/status_im2/contexts/activity_center/notification_types.cljs +++ b/src/status_im2/contexts/activity_center/notification_types.cljs @@ -6,10 +6,10 @@ (def ^:const mention 3) (def ^:const reply 4) (def ^:const contact-request 5) +(def ^:const admin 8) (def ^:const contact-verification 10) ;; TODO: Replace with correct enum values once status-go implements them. -(def ^:const admin 66610) (def ^:const tx 66612) (def ^:const membership 66613) (def ^:const system 66614) diff --git a/src/status_im2/contexts/activity_center/view.cljs b/src/status_im2/contexts/activity_center/view.cljs index 9b58913f60..d0a929c8d8 100644 --- a/src/status_im2/contexts/activity_center/view.cljs +++ b/src/status_im2/contexts/activity_center/view.cljs @@ -5,6 +5,7 @@ [react-native.core :as rn] [react-native.safe-area :as safe-area] [status-im2.contexts.activity-center.notification-types :as types] + [status-im2.contexts.activity-center.notification.admin.view :as admin] [status-im2.contexts.activity-center.notification.contact-request.view :as contact-request] [status-im2.contexts.activity-center.notification.contact-verification.view :as contact-verification] @@ -112,6 +113,9 @@ types/reply [reply/view notification] + types/admin + [admin/view notification] + nil)]) (defn view diff --git a/translations/en.json b/translations/en.json index 342c26f5f9..9fe229500c 100644 --- a/translations/en.json +++ b/translations/en.json @@ -1939,5 +1939,7 @@ "selected-count-from-max": "{{selected}}/{{max}}", "online": "Online", "contact-request-chat-pending": "Your contact request is pending", - "contact-request-chat-add": "Add {{name}} to send a message" + "contact-request-chat-add": "Add {{name}} to send a message", + "join-request": "Join request", + "wants-to-join": "wants to join" }