From e44d4c83c04a102468a2199f17fa4ce4d9dfbd20 Mon Sep 17 00:00:00 2001 From: John Ngei Date: Wed, 16 Nov 2022 17:48:18 +0300 Subject: [PATCH] communites home screen context actions (#14371) --- src/status_im/communities/core.cljs | 4 +- .../ui/screens/communities/community.cljs | 4 +- .../community_options_bottom_sheet.cljs | 136 ++++++++++-------- .../ui/screens/communities/members.cljs | 2 +- .../ui/screens/communities/profile.cljs | 2 +- .../contexts/communities/home/view.cljs | 7 +- translations/en.json | 2 + 7 files changed, 89 insertions(+), 68 deletions(-) diff --git a/src/status_im/communities/core.cljs b/src/status_im/communities/core.cljs index aed1cbc3ef..59d9603286 100644 --- a/src/status_im/communities/core.cljs +++ b/src/status_im/communities/core.cljs @@ -325,7 +325,7 @@ {:db (assoc db :communities/create-channel {})}) (fx/defn invite-people-pressed - {:events [::invite-people-pressed]} + {:events [:communities/invite-people-pressed]} [cofx id] (fx/merge cofx (reset-community-id-input id) @@ -333,7 +333,7 @@ (navigation/open-modal :invite-people-community {:invite? true}))) (fx/defn share-community-pressed - {:events [::share-community-pressed]} + {:events [:communities/share-community-pressed]} [cofx id] (fx/merge cofx (reset-community-id-input id) diff --git a/src/status_im/ui/screens/communities/community.cljs b/src/status_im/ui/screens/communities/community.cljs index d8ae765dd1..7c3e687c68 100644 --- a/src/status_im/ui/screens/communities/community.cljs +++ b/src/status_im/ui/screens/communities/community.cljs @@ -87,14 +87,14 @@ :title (i18n/label :t/invite-people) :icon :main-icons/share :accessibility-label :community-invite-people - :on-press #(>evt [::communities/invite-people-pressed id])}]) + :on-press #(>evt [:communities/invite-people-pressed id])}]) (when (and can-share? (not can-invite?)) [quo/list-item {:theme :accent :title (i18n/label :t/invite-people) :icon :main-icons/share :accessibility-label :community-share - :on-press #(>evt [::communities/share-community-pressed id])}])])) + :on-press #(>evt [:communities/share-community-pressed id])}])])) (defn community-actions [{:keys [id name images color can-manage-users?]}] (let [thumbnail-image (get-in images [:thumbnail :uri])] diff --git a/src/status_im/ui/screens/communities/community_options_bottom_sheet.cljs b/src/status_im/ui/screens/communities/community_options_bottom_sheet.cljs index dfaf99bb01..d834469841 100644 --- a/src/status_im/ui/screens/communities/community_options_bottom_sheet.cljs +++ b/src/status_im/ui/screens/communities/community_options_bottom_sheet.cljs @@ -1,44 +1,63 @@ (ns status-im.ui.screens.communities.community-options-bottom-sheet (:require [status-im.i18n.i18n :as i18n] - [quo.react-native :as rn] [quo2.components.markdown.text :as text] + [quo.react-native :as rn] + [quo2.components.markdown.text :as text] [quo2.components.buttons.button :as button] [quo2.components.drawers.action-drawers :as action-drawers] [quo2.components.tags.context-tags :as context-tags] [status-im.react-native.resources :as resources] - [status-im.utils.handlers :refer [evt]] + [utils.re-frame :as rf] [status-im.communities.core :as communities])) -(def not-joined-options [{:icon :i/members - :label (i18n/label :t/view-members)} - {:icon :i/bullet-list - :right-icon :i/chevron-right - :label (i18n/label :t/view-community-rules)} - {:icon :i/add-user - :label (i18n/label :t/invite-contacts)} - {:icon :i/qr-code - :label (i18n/label :t/show-qr)} - {:icon :i/share - :label (i18n/label :t/share-community)}]) +(defn hide-sheet-and-dispatch [event] + (rf/dispatch [:bottom-sheet/hide]) + (rf/dispatch event)) -(def joined-options [{:icon :i/members - :label (i18n/label :t/view-members)} - {:icon :i/bullet-list - :right-icon :i/chevron-right - :label (i18n/label :t/view-community-rules)} - {:icon :i/up-to-date - :label (i18n/label :t/mark-as-read)} - {:icon :i/muted - :label (i18n/label :t/mute-community) - :right-icon :i/chevron-right} - {:icon :i/notifications - :label (i18n/label :t/community-notification-settings) - :right-icon :i/chevron-right} - {:icon :i/add-user - :label (i18n/label :t/invite-contacts)} - {:icon :i/qr-code - :label (i18n/label :t/show-qr)} - {:icon :i/share - :label (i18n/label :t/share-community)}]) +(def not-joined-options + {:actions [{:icon :i/members + :label (i18n/label :t/view-members)} + {:icon :i/bullet-list + :right-icon :i/chevron-right + :label (i18n/label :t/view-community-rules)} + {:icon :i/add-user + :label (i18n/label :t/invite-contacts)} + {:icon :i/qr-code + :label (i18n/label :t/show-qr)} + {:icon :i/share + :label (i18n/label :t/share-community)}]}) + +(defn joined-options [id] + {:actions [{:icon :i/members + :accessibility-label :i/view-members + :label (i18n/label :t/view-members) + :on-press #(hide-sheet-and-dispatch [:navigate-to :community-members {:community-id id}])} + {:icon :i/bullet-list + :right-icon :i/chevron-right + :accessibility-label :view-community-rules + :label (i18n/label :t/view-community-rules)} + {:icon :i/up-to-date + :accessibility-label :mark-as-read + :label (i18n/label :t/mark-as-read) + :on-press #(hide-sheet-and-dispatch [:chat.ui/mark-all-read-in-community-pressed id])} + {:icon :i/muted + :accessibility-label :mute-community + :label (i18n/label :t/mute-community) + :right-icon :i/chevron-right} + {:icon :i/notifications + :accessibility-label :community-notification-settings + :label (i18n/label :t/community-notification-settings) + :right-icon :i/chevron-right} + {:icon :i/add-user + :accessibility-label :invite-people-from-contacts + :label (i18n/label :t/invite-people-from-contacts) + :on-press #(hide-sheet-and-dispatch [:communities/invite-people-pressed id])} + {:icon :i/qr-code + :accessibility-label :show-qr + :label (i18n/label :t/show-qr)} + {:icon :i/share + :accessibility-label :share-community + :label (i18n/label :t/share-community) + :on-press #(hide-sheet-and-dispatch [:communities/share-community-pressed id])}]}) (defn leave-sheet [community] [rn/view {:style {:flex 1 :margin-left 20 :margin-right 20 :margin-bottom 20}} @@ -52,38 +71,41 @@ [context-tags/context-tag {:style {:margin-right :auto - :margin-top 8}} + :margin-top 8}} (resources/get-image :status-logo) (:name community)] [text/text {:accessibility-label :communities-join-community :size :paragraph-1 - :style {:margin-top 16}} + :style {:margin-top 16}} (i18n/label :t/leave-community-message)] - [rn/view {:style {:width "100%" - :margin-top 16 :margin-bottom 16 - :flex 1 - :flex-direction :row - :align-items :center + [rn/view {:style {:width "100%" + :margin-top 16 + :margin-bottom 16 + :flex 1 + :flex-direction :row + :align-items :center :justify-content :space-evenly}} - [button/button {:on-press #(>evt [:bottom-sheet/hide]) - :type :grey :style {:flex 1 :margin-right 12}} (i18n/label :t/cancel)] - [button/button - {:on-press (fn [] - (>evt [::communities/leave (:id community)]) - (>evt [:bottom-sheet/hide])) - :style {:flex 1}} (i18n/label :t/leave-community)]]]) + [button/button {:on-press #(rf/dispatch [:bottom-sheet/hide]) + :type :grey + :style {:flex 1 + :margin-right 12}} + (i18n/label :t/cancel)] + [button/button {:on-press (fn [] + #(rf/dispatch [::communities/leave (:id community)]) + #(rf/dispatch [:bottom-sheet/hide])) + :style {:flex 1}} + (i18n/label :t/leave-community)]]]) (defn options-menu [] - (let [community-mock (evt [:bottom-sheet/show-sheet - {:content (constantly [leave-sheet community]) - :content-height 300}])}])}])) + [{:icon :i/log-out + :label (i18n/label :t/leave-community) + :on-press #(rf/dispatch [:bottom-sheet/show-sheet + {:content (constantly [leave-sheet community]) + :content-height 300}])}])]])) diff --git a/src/status_im/ui/screens/communities/members.cljs b/src/status_im/ui/screens/communities/members.cljs index faf5b7a587..0d8e00d481 100644 --- a/src/status_im/ui/screens/communities/members.cljs +++ b/src/status_im/ui/screens/communities/members.cljs @@ -70,7 +70,7 @@ :title (i18n/label :t/invite-people) :accessibility-label :community-invite-people :theme :accent - :on-press #(>evt [::communities/invite-people-pressed community-id])}] + :on-press #(>evt [:communities/invite-people-pressed community-id])}] [quo/separator {:style {:margin-vertical 8}}]]) (defn requests-to-join [community-id] diff --git a/src/status_im/ui/screens/communities/profile.cljs b/src/status_im/ui/screens/communities/profile.cljs index 8e58da7b1d..3eb7501445 100644 --- a/src/status_im/ui/screens/communities/profile.cljs +++ b/src/status_im/ui/screens/communities/profile.cljs @@ -31,7 +31,7 @@ :on-press #(>evt [:navigate-back])}] :right-accessories [{:icon :main-icons/share :accessibility-label :invite-button - :on-press #(>evt [::communities/share-community-pressed community-id])}] + :on-press #(>evt [:communities/share-community-pressed community-id])}] :extended-header (profile-header/extended-header {:title name :color (or color (rand-nth colors/chat-colors)) diff --git a/src/status_im2/contexts/communities/home/view.cljs b/src/status_im2/contexts/communities/home/view.cljs index aea96919d3..8586276c3e 100644 --- a/src/status_im2/contexts/communities/home/view.cljs +++ b/src/status_im2/contexts/communities/home/view.cljs @@ -12,9 +12,7 @@ [utils.re-frame :as rf] [i18n.i18n :as i18n] [quo2.core :as quo] - - ;; TODO move to status-im2 - [status-im.ui.screens.communities.community :as community])) + [status-im.ui.screens.communities.community-options-bottom-sheet :as home-actions])) (defn plus-button [] (let [logging-in? (rf/sub [:multiaccounts/login])] @@ -33,8 +31,7 @@ (rf/dispatch [:navigate-to :community {:community-id id}])) :on-long-press #(rf/dispatch [:bottom-sheet/show-sheet {:content (fn [] - ;; TODO implement with quo2 - [community/community-actions community-item])}])} + [home-actions/options-menu community-item])}])} community-item])) (defn get-item-layout-js [_ index] diff --git a/translations/en.json b/translations/en.json index 1225a812c1..5faabc7fe8 100644 --- a/translations/en.json +++ b/translations/en.json @@ -694,6 +694,7 @@ "sign-request-failed": "Could not sign message", "invite-friends": "Invite friends", "invite-people": "Invite people", + "invite-people-from-contacts": "Invite people from contact list", "invite-reward": "Earn crypto for every friend you invite!", "invite-select-account": "Select an account to receive your referral bonus", "invited": "invited", @@ -1710,6 +1711,7 @@ "sort-communities": "Sort communities", "alphabetically": "Alphabetically", "active-members": "Active members", + "only-mentions": "Only @mentions", "total-members": "Total members", "mutal-contacts": "Mutual contacts", "suggested-price-limit": "Suggested price limit",