Compare commits
15
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d4c59eaf3f | ||
|
|
8ecb2a468a | ||
|
|
e1bd82dcea | ||
|
|
374ca3546b | ||
|
|
40e23a856f | ||
|
|
02ad1e59a8 | ||
|
|
fdac057c9a | ||
|
|
5d2143409c | ||
|
|
89be9fa70d | ||
|
|
d238767456 | ||
|
|
ee2adc80a5 | ||
|
|
902d9868fc | ||
|
|
19a24d10bf | ||
|
|
3213437f6f | ||
|
|
3b33199ded |
@@ -15,19 +15,14 @@
|
||||
(when on-auth-success (on-auth-success ""))))
|
||||
|
||||
(defn authorize
|
||||
[{:keys [db]} [{:keys [on-auth-success keycard-supported?] :as args}]]
|
||||
[{:keys [db]} [{:keys [on-auth-success keycard-supported? theme] :as args}]]
|
||||
(let [key-uid (get-in db [:profile/profile :key-uid])
|
||||
keycard? (get-in db [:profile/profile :keycard-pairing])]
|
||||
{:fx
|
||||
[(if keycard?
|
||||
(if keycard-supported?
|
||||
[:effects.keycard/call-on-auth-success on-auth-success]
|
||||
[:effects.utils/show-popup
|
||||
{:title "This feature is not supported yet "
|
||||
:content
|
||||
"Keycard support is limited to logging in
|
||||
and signing the sending transaction.
|
||||
Use Status Desktop to access all functions."}])
|
||||
[:dispatch [:keycard/feature-unavailable-show {:theme theme}]])
|
||||
[:effects.biometric/check-if-available
|
||||
{:key-uid key-uid
|
||||
:on-success #(rf/dispatch [:standard-auth/authorize-with-biometric args])
|
||||
|
||||
@@ -334,6 +334,7 @@
|
||||
(def ^:const privacy-policy-link "https://status.im/privacy-policy/")
|
||||
(def ^:const terms-of-service-link "https://status.im/terms-of-use")
|
||||
(def ^:const create-account-link "https://status.app/help/wallet/create-wallet-accounts")
|
||||
(def ^:const mobile-upvote-link "https://status-mobile.featureupvote.com")
|
||||
|
||||
(def ^:const visibility-status-unknown 0)
|
||||
(def ^:const visibility-status-automatic 1)
|
||||
|
||||
@@ -105,13 +105,19 @@
|
||||
[]
|
||||
[quo/text (i18n/label :t/network-not-supported)])
|
||||
|
||||
(defn- show-feature-unavailable
|
||||
[]
|
||||
(rf/dispatch [:keycard/feature-unavailable-show]))
|
||||
|
||||
(defn- request-access-button
|
||||
[id color]
|
||||
[id color keycard?]
|
||||
[quo/button
|
||||
{:on-press (if config/community-accounts-selection-enabled?
|
||||
#(rf/dispatch [:open-modal :community-account-selection-sheet
|
||||
{:community-id id}])
|
||||
#(rf/dispatch [:open-modal :community-requests-to-join {:id id}]))
|
||||
{:on-press (if keycard?
|
||||
show-feature-unavailable
|
||||
(if config/community-accounts-selection-enabled?
|
||||
#(rf/dispatch [:open-modal :community-account-selection-sheet
|
||||
{:community-id id}])
|
||||
#(rf/dispatch [:open-modal :community-requests-to-join {:id id}])))
|
||||
:accessibility-label :show-request-to-join-screen-button
|
||||
:customization-color color
|
||||
:container-style {:margin-bottom 12}
|
||||
@@ -140,13 +146,14 @@
|
||||
{:id id}])))
|
||||
[id])
|
||||
on-press-info #(rf/dispatch
|
||||
[:show-bottom-sheet {:content token-gated-communities-info}])]
|
||||
[:show-bottom-sheet {:content token-gated-communities-info}])
|
||||
keycard? (rf/sub [:keycard/keycard-profile?])]
|
||||
(cond
|
||||
networks-not-supported?
|
||||
[network-not-supported]
|
||||
|
||||
(or (not role-permissions?) no-member-permission?)
|
||||
[request-access-button id color]
|
||||
[request-access-button id color keycard?]
|
||||
|
||||
:else
|
||||
[quo/community-token-gating
|
||||
@@ -154,7 +161,7 @@
|
||||
:tokens tokens
|
||||
:community-color color
|
||||
:satisfied? can-request-access?
|
||||
:on-press on-press
|
||||
:on-press (if keycard? show-feature-unavailable on-press)
|
||||
:on-press-info on-press-info}])))
|
||||
|
||||
(defn- join-community
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
(ns status-im.contexts.keycard.feature-unavailable.events
|
||||
(:require
|
||||
[status-im.contexts.keycard.feature-unavailable.view :as feature-unavailable]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(rf/reg-event-fx
|
||||
:keycard/feature-unavailable-show
|
||||
(fn [_ [options]]
|
||||
{:fx [[:dispatch
|
||||
[:show-bottom-sheet
|
||||
{:theme (:theme options)
|
||||
:content feature-unavailable/view}]]]}))
|
||||
@@ -0,0 +1,28 @@
|
||||
(ns status-im.contexts.keycard.feature-unavailable.view
|
||||
(:require
|
||||
[quo.core :as quo]
|
||||
[status-im.constants :as constants]
|
||||
[utils.i18n :as i18n]
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn on-upvote
|
||||
[]
|
||||
(rf/dispatch [:open-url constants/mobile-upvote-link]))
|
||||
|
||||
(defn view
|
||||
[]
|
||||
[:<>
|
||||
[quo/drawer-top
|
||||
{:title (i18n/label :t/feature-unavailable)
|
||||
:description (i18n/label :t/feature-unavailable-for-keycard-description)}]
|
||||
[quo/information-box
|
||||
{:type :default
|
||||
:icon :i/info
|
||||
:style {:margin-top 8 :margin-horizontal 20}}
|
||||
[:<>
|
||||
(i18n/label :t/feature-unavailable-info)
|
||||
[quo/text
|
||||
{:style {:text-decoration-line :underline}
|
||||
:size :paragraph-2
|
||||
:on-press on-upvote}
|
||||
(i18n/label :t/upvote-it)]]]])
|
||||
@@ -7,33 +7,37 @@
|
||||
[utils.re-frame :as rf]))
|
||||
|
||||
(defn- on-press-biometric-enable
|
||||
[button-label theme]
|
||||
[button-label theme keycard-profile?]
|
||||
(fn []
|
||||
(rf/dispatch
|
||||
[:standard-auth/authorize-with-password
|
||||
{:blur? true
|
||||
:theme theme
|
||||
:auth-button-label (i18n/label :t/biometric-enable-button {:bio-type-label button-label})
|
||||
:on-auth-success (fn [password]
|
||||
(rf/dispatch [:hide-bottom-sheet])
|
||||
(rf/dispatch
|
||||
[:biometric/authenticate
|
||||
{:on-success #(rf/dispatch [:biometric/enable password])
|
||||
:on-fail #(rf/dispatch [:biometric/show-message (ex-cause %)])}]))}])))
|
||||
(if keycard-profile?
|
||||
(rf/dispatch [:keycard/feature-unavailable-show {:theme :dark}])
|
||||
(rf/dispatch
|
||||
[:standard-auth/authorize-with-password
|
||||
{:blur? true
|
||||
:theme theme
|
||||
:auth-button-label (i18n/label :t/biometric-enable-button {:bio-type-label button-label})
|
||||
:on-auth-success (fn [password]
|
||||
(rf/dispatch [:hide-bottom-sheet])
|
||||
(rf/dispatch
|
||||
[:biometric/authenticate
|
||||
{:on-success #(rf/dispatch [:biometric/enable password])
|
||||
:on-fail #(rf/dispatch [:biometric/show-message
|
||||
(ex-cause %)])}]))}]))))
|
||||
|
||||
(defn- get-biometric-item
|
||||
[theme]
|
||||
(let [auth-method (rf/sub [:auth-method])
|
||||
biometric-type (rf/sub [:biometrics/supported-type])
|
||||
label (biometric/get-label-by-type biometric-type)
|
||||
icon (biometric/get-icon-by-type biometric-type)
|
||||
supported? (boolean biometric-type)
|
||||
enabled? (= auth-method constants/auth-method-biometric)
|
||||
biometric-on? (and supported? enabled?)
|
||||
press-handler (when supported?
|
||||
(if biometric-on?
|
||||
(fn [] (rf/dispatch [:biometric/disable]))
|
||||
(on-press-biometric-enable label theme)))]
|
||||
(let [auth-method (rf/sub [:auth-method])
|
||||
biometric-type (rf/sub [:biometrics/supported-type])
|
||||
keycard-profile? (rf/sub [:keycard/keycard-profile?])
|
||||
label (biometric/get-label-by-type biometric-type)
|
||||
icon (biometric/get-icon-by-type biometric-type)
|
||||
supported? (boolean biometric-type)
|
||||
enabled? (= auth-method constants/auth-method-biometric)
|
||||
biometric-on? (and supported? enabled?)
|
||||
press-handler (when supported?
|
||||
(if biometric-on?
|
||||
(fn [] (rf/dispatch [:biometric/disable]))
|
||||
(on-press-biometric-enable label theme keycard-profile?)))]
|
||||
{:title label
|
||||
:image-props icon
|
||||
:image :icon
|
||||
@@ -58,7 +62,8 @@
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [theme (quo.theme/use-theme)]
|
||||
(let [theme (quo.theme/use-theme)
|
||||
keycard-profile? (rf/sub [:keycard/keycard-profile?])]
|
||||
[quo/overlay {:type :shell :top-inset? true}
|
||||
[quo/page-nav
|
||||
{:background :blur
|
||||
@@ -68,6 +73,7 @@
|
||||
[quo/category
|
||||
{:key :category
|
||||
:data [(get-biometric-item theme)
|
||||
(get-change-password-item)]
|
||||
(when-not keycard-profile?
|
||||
(get-change-password-item))]
|
||||
:blur? true
|
||||
:list-type :settings}]]))
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
(:require
|
||||
[quo.core :as quo]
|
||||
[quo.foundations.colors :as colors]
|
||||
[quo.theme]
|
||||
[react-native.core :as rn]
|
||||
[status-im.common.check-before-syncing.view :as check-before-syncing]
|
||||
[status-im.contexts.syncing.device.view :as device]
|
||||
@@ -13,6 +14,10 @@
|
||||
[]
|
||||
(rf/dispatch [:navigate-back]))
|
||||
|
||||
(defn- show-feature-unavailable
|
||||
[theme]
|
||||
(rf/dispatch [:keycard/feature-unavailable-show {:theme theme}]))
|
||||
|
||||
(defn open-setup-syncing
|
||||
[customization-color]
|
||||
(rf/dispatch
|
||||
@@ -26,19 +31,22 @@
|
||||
|
||||
(defn view
|
||||
[]
|
||||
(let [devices (rf/sub [:pairing/installations])
|
||||
(let [theme (quo.theme/use-theme)
|
||||
devices (rf/sub [:pairing/installations])
|
||||
devices-with-button (map #(assoc % :show-button? true) devices)
|
||||
user-device (first devices-with-button)
|
||||
other-devices (rest devices-with-button)
|
||||
profile-color (rf/sub [:profile/customization-color])
|
||||
open-setup-syncing-with-customization-color (rn/use-callback (partial open-setup-syncing
|
||||
profile-color)
|
||||
open-setup-syncing-with-customization-color (rn/use-callback #(open-setup-syncing profile-color)
|
||||
[profile-color])
|
||||
show-feature-unavailable-with-theme (rn/use-callback #(show-feature-unavailable theme)
|
||||
[theme])
|
||||
{:keys [paired-devices unpaired-devices]} (group-by
|
||||
#(if (:enabled? %)
|
||||
:paired-devices
|
||||
:unpaired-devices)
|
||||
other-devices)]
|
||||
other-devices)
|
||||
keycard? (rf/sub [:keycard/keycard-profile?])]
|
||||
[quo/overlay {:type :shell :top-inset? true}
|
||||
[quo/page-nav
|
||||
{:type :no-title
|
||||
@@ -60,7 +68,9 @@
|
||||
:type :primary
|
||||
:customization-color profile-color
|
||||
:icon-only? true
|
||||
:on-press open-setup-syncing-with-customization-color}
|
||||
:on-press (if keycard?
|
||||
show-feature-unavailable-with-theme
|
||||
open-setup-syncing-with-customization-color)}
|
||||
:i/add]]
|
||||
[device/view (merge user-device {:this-device? true})]
|
||||
(when (seq paired-devices)
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
status-im.contexts.contact.blocking.events
|
||||
status-im.contexts.keycard.effects
|
||||
status-im.contexts.keycard.events
|
||||
status-im.contexts.keycard.feature-unavailable.events
|
||||
status-im.contexts.network.effects
|
||||
status-im.contexts.network.events
|
||||
status-im.contexts.onboarding.common.overlay.events
|
||||
|
||||
@@ -1037,6 +1037,10 @@
|
||||
"favourite-description": "Your favourite websites will appear here",
|
||||
"favourites": "Favourites",
|
||||
"favourites-empty": "Addresses added to favourites will appear here",
|
||||
"feature-unavailable": "Feature unavailable",
|
||||
"feature-unavailable-description": "It’s not currently supported for users.",
|
||||
"feature-unavailable-for-keycard-description": "It’s not currently supported for Keycard users.",
|
||||
"feature-unavailable-info": "If you'd like this feature on mobile, feel free to ",
|
||||
"featured": "Featured",
|
||||
"feb": "Feb",
|
||||
"fee-cap": "Fee cap",
|
||||
@@ -2719,6 +2723,7 @@
|
||||
"update-to-see-sticker": "Update to latest version to see a nice sticker here!",
|
||||
"updates-to-tos": "Updates to Terms of Use",
|
||||
"updates-to-tos-desc": "Before you continue, please review the Terms of Use and confirm you take full responsibility for how you use the app.",
|
||||
"upvote-it": "upvote it",
|
||||
"url": "URL",
|
||||
"usage-data-shared-from-all-profiles": "Usage data will be shared from all profiles added to device. ",
|
||||
"usd-currency": "USD",
|
||||
|
||||
Reference in New Issue
Block a user