diff --git a/src/status_im2/common/confirmation_drawer/view.cljs b/src/status_im2/common/confirmation_drawer/view.cljs index b971ffda0f..4be00a08d8 100644 --- a/src/status_im2/common/confirmation_drawer/view.cljs +++ b/src/status_im2/common/confirmation_drawer/view.cljs @@ -26,7 +26,7 @@ [quo/text {:style {:margin-left 10}} extra-text]])) (defn confirmation-drawer - [{:keys [title description context button-text on-press extra-action extra-text]}] + [{:keys [title description context button-text on-press extra-action extra-text accessibility-label]}] (let [extra-action-selected? (reagent/atom false)] (fn [] (let [{:keys [group-chat chat-id public-key color name]} context @@ -38,7 +38,9 @@ id])) photo-path (when-not (empty? (:images contact)) (rf/sub [:chats/photo-path id]))] - [rn/view {:style {:margin-horizontal 20}} + [rn/view + {:style {:margin-horizontal 20} + :accessibility-label accessibility-label} [quo/text {:weight :semi-bold :size :heading-1} title] diff --git a/src/status_im2/common/home/actions/view.cljs b/src/status_im2/common/home/actions/view.cljs index 592eb01643..e0dca46683 100644 --- a/src/status_im2/common/home/actions/view.cljs +++ b/src/status_im2/common/home/actions/view.cljs @@ -8,19 +8,20 @@ [utils.re-frame :as rf])) (defn- entry - [{:keys [icon label on-press danger? sub-label chevron? add-divider?]}] + [{:keys [icon label on-press danger? sub-label chevron? add-divider? accessibility-label]}] {:pre [(keyword? icon) (string? label) (fn? on-press) (boolean? danger?) (boolean? chevron?)]} - {:icon icon - :label label - :on-press on-press - :danger? danger? - :sub-label sub-label - :right-icon (when chevron? :i/chevron-right) - :add-divider? add-divider?}) + {:icon icon + :label label + :on-press on-press + :danger? danger? + :sub-label sub-label + :right-icon (when chevron? :i/chevron-right) + :add-divider? add-divider? + :accessibility-label accessibility-label}) (defn hide-sheet-and-dispatch [event] @@ -54,11 +55,12 @@ [:bottom-sheet/show-sheet {:content (fn [] (confirmation-drawer/confirmation-drawer - {:title (i18n/label :t/clear-history?) - :description (i18n/label :t/clear-history-confirmation-content) - :context item - :button-text (i18n/label :t/clear-history) - :on-press #(hide-sheet-and-dispatch [:chat.ui/clear-history chat-id])}))}])) + {:title (i18n/label :t/clear-history?) + :description (i18n/label :t/clear-history-confirmation-content) + :context item + :accessibility-label :clear-history-confirm + :button-text (i18n/label :t/clear-history) + :on-press #(hide-sheet-and-dispatch [:chat.ui/clear-history chat-id])}))}])) (defn delete-chat-action [{:keys [chat-id] :as item}] @@ -66,11 +68,12 @@ [:bottom-sheet/show-sheet {:content (fn [] (confirmation-drawer/confirmation-drawer - {:title (i18n/label :t/delete-chat?) - :description (i18n/label :t/delete-chat-confirmation) - :context item - :button-text (i18n/label :t/delete-chat) - :on-press #(hide-sheet-and-dispatch [:chat.ui/remove-chat chat-id])}))}])) + {:title (i18n/label :t/delete-chat?) + :description (i18n/label :t/delete-chat-confirmation) + :context item + :accessibility-label :delete-chat-confirm + :button-text (i18n/label :t/delete-chat) + :on-press #(hide-sheet-and-dispatch [:chat.ui/remove-chat chat-id])}))}])) (defn leave-group-action [item chat-id] @@ -78,14 +81,15 @@ [:bottom-sheet/show-sheet {:content (fn [] (confirmation-drawer/confirmation-drawer - {:title (i18n/label :t/leave-group?) - :description (i18n/label :t/leave-chat-confirmation) - :context item - :button-text (i18n/label :t/leave-group) - :on-press #(do - (rf/dispatch [:navigate-back]) - (hide-sheet-and-dispatch [:group-chats.ui/leave-chat-confirmed - chat-id]))}))}])) + {:title (i18n/label :t/leave-group?) + :description (i18n/label :t/leave-chat-confirmation) + :context item + :accessibility-label :leave-group + :button-text (i18n/label :t/leave-group) + :on-press #(do + (rf/dispatch [:navigate-back]) + (hide-sheet-and-dispatch [:group-chats.ui/leave-chat-confirmed + chat-id]))}))}])) (defn block-user-action [{:keys [public-key] :as item}] @@ -93,255 +97,281 @@ [:bottom-sheet/show-sheet {:content (fn [] (confirmation-drawer/confirmation-drawer - {:title (i18n/label :t/block-user?) - :description (i18n/label :t/block-contact-details) - :context item - :button-text (i18n/label :t/block-user) - :on-press #(hide-sheet-and-dispatch [:contact.ui/block-contact-confirmed - public-key])}))}])) + {:title (i18n/label :t/block-user?) + :description (i18n/label :t/block-contact-details) + :context item + :accessibility-label :block-user + :button-text (i18n/label :t/block-user) + :on-press #(hide-sheet-and-dispatch [:contact.ui/block-contact-confirmed + public-key])}))}])) (defn mute-chat-entry [chat-id] (let [muted? (rf/sub [:chats/muted chat-id])] - (entry {:icon (if muted? :i/muted :i/activity-center) - :label (i18n/label - (if muted? - :unmute-chat - :mute-chat)) - :on-press (if muted? - #(unmute-chat-action chat-id) - #(mute-chat-action chat-id)) - :danger? false - :sub-label nil - :chevron? true}))) + (entry {:icon (if muted? :i/muted :i/activity-center) + :label (i18n/label + (if muted? + :unmute-chat + :mute-chat)) + :on-press (if muted? + #(unmute-chat-action chat-id) + #(mute-chat-action chat-id)) + :danger? false + :accessibility-label :mute-chat + :sub-label nil + :chevron? true}))) (defn mark-as-read-entry [chat-id] - (entry {:icon :i/correct - :label (i18n/label :t/mark-as-read) - :on-press #(mark-all-read-action chat-id) - :danger? false - :sub-label nil - :chevron? false - :add-divider? true})) + (entry {:icon :i/correct + :label (i18n/label :t/mark-as-read) + :on-press #(mark-all-read-action chat-id) + :danger? false + :accessibility-label :mark-as-read + :sub-label nil + :chevron? false + :add-divider? true})) (defn clear-history-entry [chat-id] - (entry {:icon :i/delete - :label (i18n/label :t/clear-history) - :on-press #(clear-history-action chat-id) - :danger? true - :sub-label nil - :chevron? false - :add-divider? true})) + (entry {:icon :i/delete + :label (i18n/label :t/clear-history) + :on-press #(clear-history-action chat-id) + :danger? true + :sub-label nil + :accessibility-label :clear-history + :chevron? false + :add-divider? true})) (defn delete-chat-entry [item] - (entry {:icon :i/delete - :label (i18n/label :t/delete-chat) - :on-press #(delete-chat-action item) - :danger? true - :sub-label nil - :chevron? false})) + (entry {:icon :i/delete + :label (i18n/label :t/delete-chat) + :on-press #(delete-chat-action item) + :danger? true + :accessibility-label :delete-chat + :sub-label nil + :chevron? false})) (defn leave-group-entry [item extra-data] - (entry {:icon :i/log-out - :label (i18n/label :t/leave-group) - :on-press #(leave-group-action item (if extra-data (:chat-id extra-data) (:chat-id item))) - :danger? true - :sub-label nil - :chevron? false - :add-divider? extra-data})) + (entry + {:icon :i/log-out + :label (i18n/label :t/leave-group) + :on-press #(leave-group-action item (if extra-data (:chat-id extra-data) (:chat-id item))) + :danger? true + :accessibility-label :leave-group + :sub-label nil + :chevron? false + :add-divider? extra-data})) (defn view-profile-entry [chat-id] - (entry {:icon :i/friend - :label (i18n/label :t/view-profile) - :on-press #(show-profile-action chat-id) - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/friend + :label (i18n/label :t/view-profile) + :on-press #(show-profile-action chat-id) + :danger? false + :accessibility-label :view-profile + :sub-label nil + :chevron? false})) (defn edit-nickname-entry [chat-id] - (entry {:icon :i/edit - :label (i18n/label :t/edit-nickname) - :on-press #(edit-nickname-action chat-id) - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/edit + :label (i18n/label :t/edit-nickname) + :on-press #(edit-nickname-action chat-id) + :danger? false + :accessibility-label :edit-nickname + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): Requires design input. (defn edit-name-image-entry [] - (entry {:icon :i/edit - :label (i18n/label :t/edit-name-and-image) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/edit + :label (i18n/label :t/edit-name-and-image) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :accessibility-label :edit-name-and-image + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): Requires design input. (defn notifications-entry [add-divider?] - (entry {:icon :i/notifications - :label (i18n/label :t/notifications) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label "All messages" ; TODO: placeholder - :chevron? true - :add-divider? add-divider?})) + (entry {:icon :i/notifications + :label (i18n/label :t/notifications) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :sub-label "All messages" ; TODO: placeholder + :accessibility-label :manage-notifications + :chevron? true + :add-divider? add-divider?})) ;; TODO(OmarBasem): Requires design input. (defn fetch-messages-entry [] - (entry {:icon :i/save - :label (i18n/label :t/fetch-messages) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label nil - :chevron? true})) + (entry {:icon :i/save + :label (i18n/label :t/fetch-messages) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :accessibility-label :fetch-messages + :sub-label nil + :chevron? true})) ;; TODO(OmarBasem): Requires design input. (defn pinned-messages-entry [] - (entry {:icon :i/pin - :label (i18n/label :t/pinned-messages) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label nil - :chevron? true})) + (entry {:icon :i/pin + :label (i18n/label :t/pinned-messages) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :accessibility-label :pinned-messages + :sub-label nil + :chevron? true})) (defn remove-from-contacts-entry [contact] - (entry {:icon :i/remove-user - :label (i18n/label :t/remove-from-contacts) - :on-press #(hide-sheet-and-dispatch [:contact.ui/remove-contact-pressed contact]) - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/remove-user + :label (i18n/label :t/remove-from-contacts) + :on-press #(hide-sheet-and-dispatch [:contact.ui/remove-contact-pressed contact]) + :danger? false + :accessibility-label :remove-from-contacts + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): Requires design input. (defn rename-entry [] - (entry {:icon :i/edit - :label (i18n/label :t/rename) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/edit + :label (i18n/label :t/rename) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :accessibility-label :rename-contact + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): Requires design input. (defn show-qr-entry [] - (entry {:icon :i/qr-code - :label (i18n/label :t/show-qr) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/qr-code + :label (i18n/label :t/show-qr) + :on-press #(js/alert "TODO: to be implemented, requires design input") + :danger? false + :accessibility-label :show-qr-code + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn share-profile-entry [] - (entry {:icon :i/share - :label (i18n/label :t/share-profile) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/share + :label (i18n/label :t/share-profile) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :share-profile + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn share-group-entry [] - (entry {:icon :i/share - :label (i18n/label :t/share) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/share + :label (i18n/label :t/share) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :share-group + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): Requires status-go impl. (defn mark-untrustworthy-entry [] - (entry {:icon :i/alert - :label (i18n/label :t/mark-untrustworthy) - :on-press #(js/alert "TODO: to be implemented, requires status-go impl.") - :danger? true - :sub-label nil - :chevron? false - :add-divider? true})) + (entry {:icon :i/alert + :label (i18n/label :t/mark-untrustworthy) + :on-press #(js/alert "TODO: to be implemented, requires status-go impl.") + :danger? true + :accessibility-label :mark-untrustworthy + :sub-label nil + :chevron? false + :add-divider? true})) (defn block-user-entry [item] - (entry {:icon :i/block - :label (i18n/label :t/block-user) - :on-press #(block-user-action item) - :danger? true - :sub-label nil - :chevron? false})) + (entry {:icon :i/block + :label (i18n/label :t/block-user) + :on-press #(block-user-action item) + :danger? true + :accessibility-label :block-user + :sub-label nil + :chevron? false})) (defn remove-from-group-entry [{:keys [public-key]} chat-id] (let [username (first (rf/sub [:contacts/contact-two-names-by-identity public-key]))] - (entry {:icon :i/placeholder - :label (i18n/label :t/remove-user-from-group {:username username}) - :on-press #(hide-sheet-and-dispatch [:group-chats.ui/remove-member-pressed chat-id - public-key true]) - :danger? true - :sub-label nil - :chevron? false - :add-divider? true}))) + (entry {:icon :i/placeholder + :label (i18n/label :t/remove-user-from-group {:username username}) + :on-press #(hide-sheet-and-dispatch [:group-chats.ui/remove-member-pressed chat-id + public-key true]) + :danger? true + :accessibility-label :remove-from-group + :sub-label nil + :chevron? false + :add-divider? true}))) (defn group-details-entry [chat-id] - (entry {:icon :i/members - :label (i18n/label :t/group-details) - :on-press #(hide-sheet-and-dispatch [:show-group-chat-profile chat-id]) - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/members + :label (i18n/label :t/group-details) + :on-press #(hide-sheet-and-dispatch [:show-group-chat-profile chat-id]) + :danger? false + :accessibility-label :group-details + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn add-members-entry [] - (entry {:icon :i/add-user - :label (i18n/label :t/add-members) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/add-user + :label (i18n/label :t/add-members) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :add-members + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn manage-members-entry [] - (entry {:icon :i/add-user - :label (i18n/label :t/manage-members) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/add-user + :label (i18n/label :t/manage-members) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :manage-members + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn edit-group-entry [] - (entry {:icon :i/edit - :label (i18n/label :t/edit-name-and-image) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/edit + :label (i18n/label :t/edit-name-and-image) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :edit-group + :sub-label nil + :chevron? false})) ;; TODO(OmarBasem): to be implemented. (defn group-privacy-entry [] - (entry {:icon :i/privacy - :label (i18n/label :t/change-group-privacy) - :on-press #(js/alert "TODO: to be implemented") - :danger? false - :sub-label nil - :chevron? false})) + (entry {:icon :i/privacy + :label (i18n/label :t/change-group-privacy) + :on-press #(js/alert "TODO: to be implemented") + :danger? false + :accessibility-label :group-privacy + :sub-label nil + :chevron? false})) (defn destructive-actions [{:keys [group-chat] :as item}]