After dismissing error, no redirect to home and new qr can be

scanned.

Signed-off-by: Pedro Pombeiro <pombeirp@users.noreply.github.com>
This commit is contained in:
Kris Calabio 2019-03-18 12:53:16 -07:00 committed by Pedro Pombeiro
parent b28e27947a
commit 386c678caf
No known key found for this signature in database
GPG Key ID: C4A24185B2AA48A1
6 changed files with 45 additions and 35 deletions

View File

@ -271,7 +271,7 @@
(if (some? validation-result) (if (some? validation-result)
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code) {:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
:content validation-result :content validation-result
:on-dismiss #(re-frame/dispatch [:navigate-to-clean :home])}} :on-dismiss #(re-frame/dispatch [:qr-scanner.ui/qr-code-error-dismissed])}}
(fx/merge cofx (fx/merge cofx
fx fx
(if config/partitioned-topic-enabled? (if config/partitioned-topic-enabled?

View File

@ -679,6 +679,11 @@
(fn [cofx [_ identifier handler & [opts]]] (fn [cofx [_ identifier handler & [opts]]]
(qr-scanner/scan-qr-code cofx identifier (merge {:handler handler} opts)))) (qr-scanner/scan-qr-code cofx identifier (merge {:handler handler} opts))))
(handlers/register-handler-fx
:qr-scanner.ui/qr-code-error-dismissed
(fn [cofx [_ _]]
(qr-scanner/scan-qr-code-after-error-dismiss cofx)))
(handlers/register-handler-fx (handlers/register-handler-fx
:qr-scanner.callback/scan-qr-code-success :qr-scanner.callback/scan-qr-code-success
(fn [cofx [_ context data]] (fn [cofx [_ context data]]

View File

@ -1,6 +1,7 @@
(ns status-im.qr-scanner.core (ns status-im.qr-scanner.core
(:require [re-frame.core :as re-frame] (:require [re-frame.core :as re-frame]
[status-im.i18n :as i18n] [status-im.i18n :as i18n]
[status-im.ui.screens.navigation :as navigation]
[status-im.utils.utils :as utils] [status-im.utils.utils :as utils]
[status-im.utils.fx :as fx])) [status-im.utils.fx :as fx]))
@ -18,10 +19,16 @@
50)) 50))
#(re-frame/dispatch [deny-handler qr-codes]))}}) #(re-frame/dispatch [deny-handler qr-codes]))}})
(fx/defn scan-qr-code-after-error-dismiss
[{:keys [db]}]
(let [view-id (:view-id db)]
{:db (assoc-in db [:navigation/screen-params view-id :barcode-read?] false)}))
(fx/defn set-qr-code (fx/defn set-qr-code
[{:keys [db]} context data] [{:keys [db]} context data]
(merge {:db (-> db (merge {:db (-> db
(update :qr-codes dissoc context) (update :qr-codes dissoc context)
(update-in [:navigation/screen-params :qr-scanner] assoc :barcode-read? true)
(dissoc :current-qr-context))} (dissoc :current-qr-context))}
(when-let [qr-codes (:qr-codes db)] (when-let [qr-codes (:qr-codes db)]
{:dispatch [(:handler qr-codes) context data (dissoc qr-codes :handler)]}))) {:dispatch [(:handler qr-codes) context data (dissoc qr-codes :handler)]})))

View File

@ -6,17 +6,11 @@
[status-im.utils.universal-links.core :as universal-links] [status-im.utils.universal-links.core :as universal-links]
[status-im.utils.fx :as fx])) [status-im.utils.fx :as fx]))
(fx/defn process-qr-code (fx/defn handle-qr-code
[cofx data] [cofx data]
(if (spec/valid? :global/public-key data) (if (spec/valid? :global/public-key data)
(universal-links/handle-view-profile cofx data) (universal-links/handle-view-profile cofx data)
(or (universal-links/handle-url cofx data) (or (universal-links/handle-url cofx data)
{:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code) {:utils/show-popup {:title (i18n/label :t/unable-to-read-this-code)
:content (i18n/label :t/use-valid-qr-code {:data data}) :content (i18n/label :t/use-valid-qr-code {:data data})
:on-dismiss #(re-frame/dispatch [:navigate-to-clean :home])}}))) :on-dismiss #(re-frame/dispatch [:qr-scanner.ui/qr-code-error-dismissed])}})))
(fx/defn handle-qr-code
[cofx data]
(fx/merge cofx
(navigation/navigate-to-clean :home {})
(process-qr-code data)))

View File

@ -178,7 +178,11 @@
:screens/on-will-focus :screens/on-will-focus
(fn [{:keys [db] :as cofx} [_ view-id]] (fn [{:keys [db] :as cofx} [_ view-id]]
(fx/merge cofx (fx/merge cofx
{:db (assoc db :view-id view-id)} (if (= view-id :qr-scanner)
{:db (-> db
(assoc :view-id view-id)
(assoc-in [:navigation/screen-params view-id :barcode-read?] false))}
{:db (assoc db :view-id view-id)})
#(case view-id #(case view-id
:keycard-settings (hardwallet/settings-screen-did-load %) :keycard-settings (hardwallet/settings-screen-did-load %)
:reset-card (hardwallet/reset-card-screen-did-load %) :reset-card (hardwallet/reset-card-screen-did-load %)

View File

@ -24,26 +24,26 @@
(re-frame/dispatch [:qr-scanner.callback/scan-qr-code-success identifier (camera/get-qr-code-data data)])) (re-frame/dispatch [:qr-scanner.callback/scan-qr-code-success identifier (camera/get-qr-code-data data)]))
(defview qr-scanner [] (defview qr-scanner []
(letsubs [{identifier :current-qr-context} [:get-screen-params] (letsubs [{identifier :current-qr-context
camera-initialized? (reagent/atom false) barcode-read-sub? :barcode-read?} [:get-screen-params]
barcode-read? (reagent/atom false)] camera-initialized? (reagent/atom false)]
[react/view styles/barcode-scanner-container (let [barcode-read? barcode-read-sub?]
[qr-scanner-toolbar (or (:toolbar-title identifier) (i18n/label :t/scan-qr)) identifier] [react/view styles/barcode-scanner-container
[camera/camera {:onBarCodeRead #(if (:multiple? identifier) [qr-scanner-toolbar (or (:toolbar-title identifier) (i18n/label :t/scan-qr)) identifier]
(on-barcode-read identifier %) [camera/camera {:onBarCodeRead #(if (:multiple? identifier)
(when-not @barcode-read? (on-barcode-read identifier %)
(do (reset! barcode-read? true) (when-not barcode-read?
(on-barcode-read identifier %)))) (on-barcode-read identifier %)))
:ref #(reset! camera-initialized? true) :ref #(reset! camera-initialized? true)
:captureAudio false :captureAudio false
:style styles/barcode-scanner}] :style styles/barcode-scanner}]
[react/view styles/rectangle-container [react/view styles/rectangle-container
[react/view styles/rectangle [react/view styles/rectangle
[react/image {:source {:uri :corner_left_top} [react/image {:source {:uri :corner_left_top}
:style styles/corner-left-top}] :style styles/corner-left-top}]
[react/image {:source {:uri :corner_right_top} [react/image {:source {:uri :corner_right_top}
:style styles/corner-right-top}] :style styles/corner-right-top}]
[react/image {:source {:uri :corner_right_bottom} [react/image {:source {:uri :corner_right_bottom}
:style styles/corner-right-bottom}] :style styles/corner-right-bottom}]
[react/image {:source {:uri :corner_left_bottom} [react/image {:source {:uri :corner_left_bottom}
:style styles/corner-left-bottom}]]]])) :style styles/corner-left-bottom}]]]])))