mirror of
https://github.com/status-im/status-react.git
synced 2025-02-06 08:05:55 +00:00
38 lines
1.8 KiB
Clojure
38 lines
1.8 KiB
Clojure
(ns status-im.qr-scanner.core
|
|
(:require [re-frame.core :as re-frame]
|
|
[status-im.i18n :as i18n]
|
|
[status-im.utils.utils :as utils]
|
|
[status-im.utils.fx :as fx]))
|
|
|
|
(fx/defn scan-qr-code
|
|
[{:keys [db]} {:keys [deny-handler] :as identifier} qr-codes]
|
|
{:db (assoc-in db [:qr-codes identifier] qr-codes)
|
|
:request-permissions-fx {:permissions [:camera]
|
|
:on-allowed #(re-frame/dispatch
|
|
[:navigate-to :qr-scanner
|
|
{:current-qr-context identifier}])
|
|
:on-denied (if (nil? deny-handler)
|
|
(fn []
|
|
(utils/set-timeout
|
|
#(utils/show-popup (i18n/label :t/error)
|
|
(i18n/label :t/camera-access-error))
|
|
50))
|
|
#(re-frame/dispatch [deny-handler qr-codes]))}})
|
|
|
|
(fx/defn set-qr-code
|
|
[{:keys [db]} context data]
|
|
(merge {:db (-> db
|
|
(update :qr-codes dissoc context)
|
|
(dissoc :current-qr-context))}
|
|
(when-let [qr-codes (get-in db [:qr-codes context])]
|
|
{:dispatch [(:handler qr-codes) context data (dissoc qr-codes :handler)]})))
|
|
|
|
(fx/defn set-qr-code-cancel
|
|
[{:keys [db]} context]
|
|
(merge {:db (-> db
|
|
(update :qr-codes dissoc context)
|
|
(dissoc :current-qr-context))}
|
|
(when-let [qr-codes (get-in db [:qr-codes context])]
|
|
(when-let [handler (:cancel-handler qr-codes)]
|
|
{:dispatch [handler context qr-codes]}))))
|