From 7334938d96dd989a51c10a1eda70f0c5c1b6651c Mon Sep 17 00:00:00 2001 From: pacamara Date: Fri, 11 May 2018 09:54:18 +0100 Subject: [PATCH] Fixes #3944: Improve metrics opt-in screen Signed-off-by: Julien Eluard --- resources/images/ui/analytics-image.png | Bin 6014 -> 27036 bytes src/status_im/translations/en.cljs | 10 ++- .../ui/components/common/common.cljs | 6 +- .../ui/screens/usage_data/styles.cljs | 75 ++++++++++++------ .../ui/screens/usage_data/views.cljs | 32 +++++--- src/status_im/utils/utils.cljs | 4 +- 6 files changed, 83 insertions(+), 44 deletions(-) diff --git a/resources/images/ui/analytics-image.png b/resources/images/ui/analytics-image.png index 61b06b97dd8b054f24b8a765085e356daf0ac2bb..7e8590c8988c775e0f0ab380ea4636ed09714082 100644 GIT binary patch literal 27036 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 diff --git a/src/status_im/translations/en.cljs b/src/status_im/translations/en.cljs index 724328b76b..22506731a3 100644 --- a/src/status_im/translations/en.cljs +++ b/src/status_im/translations/en.cljs @@ -50,9 +50,13 @@ :help-improve "Help improve Status\nby sharing usage patterns" :help-improve? "Help improve Status?" - :help-improve-description "We collect anonymous data to help improve Status." - :share-usage-data "Share usage" - :dont-want-to-share "No, I don't want to share" + :help-improve-description "We collect anonymous data to understand how Status is used and inform future development. Whilst we appreciate your help to make Status better, this is an optional choice and can be changed at any time." + :learn-what-we-collect-link "Learn more about what we collect" + :share-usage-data "Share data" + :dont-want-to-share "Do not share" + :confirmation-title "Share data with Status?" + :confirmation-text "Are you sure you want to share anonymous data with Status?" + :confirmation-action "Share" ;;drawer :switch-users "Switch users" diff --git a/src/status_im/ui/components/common/common.cljs b/src/status_im/ui/components/common/common.cljs index 056b3d00b7..4b0fc39bb0 100644 --- a/src/status_im/ui/components/common/common.cljs +++ b/src/status_im/ui/components/common/common.cljs @@ -72,10 +72,10 @@ (when forward? [icons/icon :icons/forward {:color colors/blue}])]]) -(defn button [{:keys [on-press label background? button-style label-style] :or {background? true}}] +(defn button [{:keys [on-press label background? uppercase? button-style label-style] :or {background? true uppercase? true}}] [react/touchable-highlight {:on-press on-press} [react/view {:style (styles/button button-style background?)} - [react/text {:uppercase? true + [react/text {:uppercase? uppercase? :style (merge styles/button-label label-style)} label]]]) @@ -99,4 +99,4 @@ :resize-mode :contain :style (merge style {:width @content-width - :height (/ (* @content-width height) width)})}]])}))) \ No newline at end of file + :height (/ (* @content-width height) width)})}]])}))) diff --git a/src/status_im/ui/screens/usage_data/styles.cljs b/src/status_im/ui/screens/usage_data/styles.cljs index cfae954927..dcf854265b 100644 --- a/src/status_im/ui/screens/usage_data/styles.cljs +++ b/src/status_im/ui/screens/usage_data/styles.cljs @@ -1,48 +1,71 @@ (ns status-im.ui.screens.usage-data.styles (:require-macros [status-im.utils.styles :refer [defnstyle defstyle]]) - (:require [status-im.ui.components.colors :as colors])) + (:require [status-im.ui.components.colors :as colors] + [status-im.ui.components.react :as react] + [status-im.utils.platform :as platform])) + +(def window-width (:width (react/get-dimensions "window"))) +(def window-height (:height (react/get-dimensions "window"))) +(defn scaled-x [n] (* (/ window-width 375) n)) +(defn scaled-y [n] (* (/ window-height 667) n)) (def usage-data-view {:flex 1 - :padding-horizontal 30 - :background-color colors/white}) + :background-color colors/white + :align-items :center}) -(def logo-container +(def image-container {:flex 1 :align-items :center - :justify-content :center}) - -(def logo - {:size 82 - :icon-size 34}) + :justify-content :center + :margin-top (scaled-y 90) + :margin-bottom (scaled-y 90)}) (def usage-data-image - {:width 138 - :height 208 - :margin-top 10}) + {:width (* (/ 390 432) (scaled-y 138)) + :height (scaled-y 138)}) (defstyle help-improve-text - {:text-align :center - :color colors/black - :ios {:line-height 28 - :font-size 22 - :font-weight :bold - :letter-spacing -0.3} - :android {:font-size 24 - :line-height 30}}) + {:text-align :center + :color colors/black + :margin-bottom (scaled-y 8) + :margin-left 46 + :margin-right 46 + :ios {:line-height 28 + :font-size 22 + :font-weight :bold + :letter-spacing -0.3} + :android {:font-size 24 + :line-height 30}}) (def help-improve-text-description {:line-height 21 - :margin-top 8 - :margin-bottom 16 + :margin-bottom (scaled-y 26) + :margin-left 34 + :margin-right 34 :font-size 14 :letter-spacing -0.2 :text-align :center :color colors/gray}) -(def buttons-container - {:align-items :center}) +(def learn-what-we-collect-link + {:text-align :center + :color colors/blue + :margin-bottom (scaled-y 109) + :margin-left 61 + :margin-right 63}) (def bottom-button-container - {:margin-bottom 6 - :margin-top 38}) \ No newline at end of file + {:flex-direction :row + :margin-bottom (scaled-y (if platform/ios? 96 48)) + :margin-left 41 + :margin-right 42}) + +(def share-button + {:padding-horizontal 18 + :width (scaled-x 138) + :margin-right 16}) + +(def dont-share-button + {:padding-horizontal 18 + :width (scaled-x 138)}) diff --git a/src/status_im/ui/screens/usage_data/views.cljs b/src/status_im/ui/screens/usage_data/views.cljs index 69d0360040..57b7efd5e4 100644 --- a/src/status_im/ui/screens/usage_data/views.cljs +++ b/src/status_im/ui/screens/usage_data/views.cljs @@ -6,14 +6,14 @@ [status-im.ui.components.common.common :as components.common] [status-im.ui.components.react :as react] [status-im.ui.components.status-bar.view :as status-bar] - [status-im.ui.screens.usage-data.styles :as styles])) + [status-im.ui.screens.usage-data.styles :as styles] + [status-im.utils.utils :as utils])) (views/defview usage-data [] (views/letsubs [next [:get-screen-params]] [react/view {:style styles/usage-data-view} [status-bar/status-bar {:flat? true}] - [react/view {:style styles/logo-container} - [components.common/logo styles/logo] + [react/view {:style styles/image-container} [react/image {:source (:analytics-image resources/ui) :style styles/usage-data-image}]] [react/text {:style styles/help-improve-text} @@ -21,11 +21,21 @@ [react/view [react/text {:style styles/help-improve-text-description} (i18n/label :t/help-improve-description)]] - [react/view styles/buttons-container - [components.common/button {:button-style {:flex-direction :row} - :on-press #(re-frame/dispatch [:help-improve-handler true next]) - :label (i18n/label :t/share-usage-data)}] - [react/view styles/bottom-button-container - [components.common/button {:on-press #(re-frame/dispatch [:help-improve-handler false next]) - :label (i18n/label :t/dont-want-to-share) - :background? false}]]]])) + [react/text {:style styles/learn-what-we-collect-link + :on-press #(.openURL react/linking "https://wiki.status.im/Help_Improve_Status#Help_Improve_Status")} + (i18n/label :t/learn-what-we-collect-link)] + [react/view styles/bottom-button-container + [components.common/button {:button-style styles/share-button + :uppercase? false + :on-press #(utils/show-confirmation {:ios-confirm-style "default"} + (i18n/label :t/confirmation-title) + (i18n/label :t/confirmation-text) + (i18n/label :t/confirmation-action) + (fn [] (re-frame/dispatch [:help-improve-handler true next])) + nil) + :label (i18n/label :t/share-usage-data)}] + [components.common/button {:button-style styles/dont-share-button + :uppercase? false + :on-press #(re-frame/dispatch [:help-improve-handler false next]) + :label (i18n/label :t/dont-want-to-share)}]]])) + diff --git a/src/status_im/utils/utils.cljs b/src/status_im/utils/utils.cljs index b2c1e180a6..5afe41909e 100644 --- a/src/status_im/utils/utils.cljs +++ b/src/status_im/utils/utils.cljs @@ -23,6 +23,8 @@ ([title content confirm-button-text on-accept] (show-confirmation title content confirm-button-text on-accept nil)) ([title content confirm-button-text on-accept on-cancel] + (show-confirmation nil title content confirm-button-text on-accept on-cancel)) + ([{:keys [ios-confirm-style] :or {ios-confirm-style "destructive"}} title content confirm-button-text on-accept on-cancel] (.alert (.-Alert rn-dependencies/react-native) title content @@ -34,7 +36,7 @@ (when on-cancel {:onPress on-cancel})) {:text (or confirm-button-text "OK") :onPress on-accept - :style "destructive" + :style ios-confirm-style :accessibility-label :confirm-button}))))) (defn show-question