reformat remaining namespaces

This commit is contained in:
Roman Volosovskyi 2018-05-08 11:32:28 +03:00
parent 6fc03fc217
commit 8c1cd9d3d4
No known key found for this signature in database
GPG Key ID: 0238A4B5ECEE70DE
83 changed files with 916 additions and 1217 deletions

View File

@ -38,35 +38,35 @@
(defn app-root []
(let [keyboard-height (subscribe [:get :keyboard-height])]
(reagent/create-class
{:component-will-mount
(fn []
(.addListener react/keyboard
"keyboardDidShow"
(fn [e]
(let [h (.. e -endCoordinates -height)]
(dispatch [:hide-tab-bar])
(when-not (= h @keyboard-height)
(dispatch [:set :keyboard-height h])
(dispatch [:set :keyboard-max-height h])))))
(.addListener react/keyboard
"keyboardDidHide"
(fn [_]
(dispatch [:show-tab-bar])
(when (zero? @keyboard-height)
(dispatch [:set :keyboard-height 0]))))
(.hide react/splash-screen)
(.addEventListener react/app-state "change" app-state-change-handler))
:component-did-mount
(fn []
(notifications/on-refresh-fcm-token)
{:component-will-mount
(fn []
(.addListener react/keyboard
"keyboardDidShow"
(fn [e]
(let [h (.. e -endCoordinates -height)]
(dispatch [:hide-tab-bar])
(when-not (= h @keyboard-height)
(dispatch [:set :keyboard-height h])
(dispatch [:set :keyboard-max-height h])))))
(.addListener react/keyboard
"keyboardDidHide"
(fn [_]
(dispatch [:show-tab-bar])
(when (zero? @keyboard-height)
(dispatch [:set :keyboard-height 0]))))
(.hide react/splash-screen)
(.addEventListener react/app-state "change" app-state-change-handler))
:component-did-mount
(fn []
(notifications/on-refresh-fcm-token)
;; TODO(oskarth): Background click_action handler
(notifications/on-notification))
:component-will-unmount
(fn []
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler))
:display-name "root"
:reagent-render views/main})))
(notifications/on-notification))
:component-will-unmount
(fn []
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler))
:display-name "root"
:reagent-render views/main})))
(defn init []
(status/set-soft-input-mode status/adjust-resize)

View File

@ -88,19 +88,19 @@
;;;; Handlers
(handlers/register-handler-fx
:set-in-bot-db
[re-frame/trim-v]
(fn [{:keys [db]} [params]]
(set-in-bot-db db params)))
:set-in-bot-db
[re-frame/trim-v]
(fn [{:keys [db]} [params]]
(set-in-bot-db db params)))
(handlers/register-handler-db
:update-bot-db
[re-frame/trim-v]
(fn [db [params]]
(update-bot-db db params)))
:update-bot-db
[re-frame/trim-v]
(fn [db [params]]
(update-bot-db db params)))
(handlers/register-handler-db
::calculated-subscription
[re-frame/trim-v]
(fn [db [params]]
(calculated-subscription db params)))
::calculated-subscription
[re-frame/trim-v]
(fn [db [params]]
(calculated-subscription db params)))

View File

@ -5,9 +5,9 @@
(re-frame/reg-sub :get-bot-db :bot-db)
(re-frame/reg-sub
:current-bot-db
:<- [:get-bot-db]
:<- [:selected-chat-command]
(fn [[bot-db command]]
(let [command-owner (get-in command [:command :owner-id])]
[command-owner (get bot-db command-owner)])))
:current-bot-db
:<- [:get-bot-db]
:<- [:selected-chat-command]
(fn [[bot-db command]]
(let [command-owner (get-in command [:command :owner-id])]
[command-owner (get bot-db command-owner)])))

View File

@ -13,21 +13,21 @@
;; FX
(re-frame/reg-fx
::evaluate-jail-n
(fn [jail-data]
(doseq [{:keys [jail-id jail-resource]} jail-data]
(status/parse-jail
jail-id jail-resource
(fn [jail-response]
(let [converted (types/json->clj jail-response)]
(re-frame/dispatch [::proceed-loading jail-id (if config/jsc-enabled?
(update converted :result types/json->clj)
converted)])))))))
::evaluate-jail-n
(fn [jail-data]
(doseq [{:keys [jail-id jail-resource]} jail-data]
(status/parse-jail
jail-id jail-resource
(fn [jail-response]
(let [converted (types/json->clj jail-response)]
(re-frame/dispatch [::proceed-loading jail-id (if config/jsc-enabled?
(update converted :result types/json->clj)
converted)])))))))
(re-frame/reg-fx
::show-popup
(fn [{:keys [title msg]}]
(utils/show-popup title msg)))
::show-popup
(fn [{:keys [title msg]}]
(utils/show-popup title msg)))
;; Handlers
(defn- valid-network-resource?
@ -138,26 +138,26 @@
:jail-loaded? true))))
(handlers/register-handler-fx
::evaluate-commands-in-jail
[re-frame/trim-v (re-frame/inject-cofx :data-store/get-local-storage-data)]
(fn [cofx [commands-resource whisper-identity]]
(evaluate-commands-in-jail cofx commands-resource whisper-identity)))
::evaluate-commands-in-jail
[re-frame/trim-v (re-frame/inject-cofx :data-store/get-local-storage-data)]
(fn [cofx [commands-resource whisper-identity]]
(evaluate-commands-in-jail cofx commands-resource whisper-identity)))
(handlers/register-handler-fx
::proceed-loading
[re-frame/trim-v]
(fn [{:keys [db]} [jail-id {:keys [error result]}]]
(if error
(let [message (string/join "\n" ["bot.js loading failed"
jail-id
error])]
{::show-popup {:title "Error"
:msg message}})
(let [jail-loaded-events (get-in db [:contacts/contacts jail-id :jail-loaded-events])]
(cond-> {:db (add-jail-result db jail-id result)
:call-jail-function {:chat-id jail-id
:function :init :context
{:from (get-in db [:account/account :address])}}}
(seq jail-loaded-events)
(-> (assoc :dispatch-n jail-loaded-events)
(update-in [:db :contacts/contacts jail-id] dissoc :jail-loaded-events)))))))
::proceed-loading
[re-frame/trim-v]
(fn [{:keys [db]} [jail-id {:keys [error result]}]]
(if error
(let [message (string/join "\n" ["bot.js loading failed"
jail-id
error])]
{::show-popup {:title "Error"
:msg message}})
(let [jail-loaded-events (get-in db [:contacts/contacts jail-id :jail-loaded-events])]
(cond-> {:db (add-jail-result db jail-id result)
:call-jail-function {:chat-id jail-id
:function :init :context
{:from (get-in db [:account/account :address])}}}
(seq jail-loaded-events)
(-> (assoc :dispatch-n jail-loaded-events)
(update-in [:db :contacts/contacts jail-id] dissoc :jail-loaded-events)))))))

View File

@ -34,7 +34,6 @@
(catch js/Error e
(log/debug "Error: " e))))))
;;;; Specific debug methods
;; TODO: there are still a lot of dispatch calls here. we can remove or restructure most of them,
;; but to do this we need to also rewrite a lot of already existing functions
@ -115,7 +114,6 @@
(respond {:type :error
:text "No log messages found."}))))
;;;; FX
(re-frame/reg-fx
@ -153,7 +151,6 @@
(respond {:type :error :text (str "Error: " e)})
(log/debug "Error: " e)))))
;;;; Handlers
(handlers/register-handler-fx
@ -175,7 +172,7 @@
;; TODO(janherich) once `contact-changed` fn is refactored, get rid of this unnecessary event
(handlers/register-handler-fx
::load-commands
[re-frame/trim-v (re-frame/inject-cofx :data-store/get-local-storage-data)]
(fn [cofx [contact]]
(loading-events/load-commands-for-bot cofx {} contact)))
::load-commands
[re-frame/trim-v (re-frame/inject-cofx :data-store/get-local-storage-data)]
(fn [cofx [contact]]
(loading-events/load-commands-for-bot cofx {} contact)))

View File

@ -79,31 +79,31 @@
;; TODO(alwx): rewrite
(reg-handler :command-handler!
(after (print-error-message! "Error on command handling"))
(handlers/side-effect! command-handler!))
(after (print-error-message! "Error on command handling"))
(handlers/side-effect! command-handler!))
(reg-handler
:suggestions-handler
[(after (print-error-message! "Error on param suggestions"))]
(handlers/side-effect! suggestions-handler!))
:suggestions-handler
[(after (print-error-message! "Error on param suggestions"))]
(handlers/side-effect! suggestions-handler!))
(reg-handler
:suggestions-event!
(handlers/side-effect! suggestions-events-handler!))
:suggestions-event!
(handlers/side-effect! suggestions-events-handler!))
(reg-handler
:show-suggestions-from-jail
(handlers/side-effect!
(fn [_ [_ {:keys [chat-id markup]}]]
(let [markup' (types/json->clj markup)
result (assoc-in {} [:result :returned :markup] markup')]
(dispatch [:suggestions-handler
{:result result
:chat-id chat-id}])))))
:show-suggestions-from-jail
(handlers/side-effect!
(fn [_ [_ {:keys [chat-id markup]}]]
(let [markup' (types/json->clj markup)
result (assoc-in {} [:result :returned :markup] markup')]
(dispatch [:suggestions-handler
{:result result
:chat-id chat-id}])))))
(handlers/register-handler-fx
:set-local-storage
[trim-v]
(fn [_ [{:keys [data chat-id]}]]
{:data-store/set-local-storage-data {:chat-id chat-id
:data data}}))
:set-local-storage
[trim-v]
(fn [_ [{:keys [data chat-id]}]]
{:data-store/set-local-storage-data {:chat-id chat-id
:data data}}))

View File

@ -4,7 +4,7 @@
(reg-sub :get-commands-responses-by-access-scope :access-scope->commands-responses)
(reg-sub
:get-command
:<- [:get-contacts]
(fn [contacts [_ ref]]
(some->> ref (get-in contacts))))
:get-command
:<- [:get-contacts]
(fn [contacts [_ ref]]
(some->> ref (get-in contacts))))

View File

@ -39,7 +39,7 @@
(def events #{:onPress :onValueChange :onSlidingComplete})
(defn wrap-event [[_ event] bot-id]
(defn wrap-event [[_ event] bot-id]
#(dispatch [:suggestions-event! bot-id (update event 0 keyword) %]))
(defn check-events [m bot-id]
@ -50,22 +50,22 @@
(defn generate-hiccup
([markup]
(generate-hiccup markup nil {}))
([markup bot-id bot-db]
([markup bot-id bot-db]
(w/prewalk
(fn [el]
(cond
(fn [el]
(cond
(and (vector? el) (= "subscribe" (first el)))
(let [path (mapv keyword (second el))]
(get-in bot-db path))
(and (vector? el) (= "subscribe" (first el)))
(let [path (mapv keyword (second el))]
(get-in bot-db path))
(and (vector? el) (string? (first el)))
(-> el
(update 0 get-element)
(update 1 check-events bot-id))
(and (vector? el) (string? (first el)))
(-> el
(update 0 get-element)
(update 1 check-events bot-id))
:else el))
markup)))
:else el))
markup)))
(defn reg-handler
([name handler] (reg-handler name nil handler))

View File

@ -32,8 +32,7 @@
{:id :outbound :label (i18n/label :t/outgoing) :checked? true}
{:id :pending :label (i18n/label :t/pending) :checked? true}
;; TODO(jeluard) Restore once we support postponing transaction
#_
{:id :postponed :label (i18n/label :t/postponed) :checked? true}]}})
#_{:id :postponed :label (i18n/label :t/postponed) :checked? true}]}})
(def default-account-settings
{:wallet {:visible-tokens {:testnet #{:STT :ATT}
@ -45,8 +44,8 @@
(->> networks
(map (fn [[network-name {:keys [config] :as data}]]
[network-name (assoc data
:config (types/clj->json config)
:raw-config config)]))
:config (types/clj->json config)
:raw-config config)]))
(into {})))
(def mainnet-networks

View File

@ -11,10 +11,10 @@
(defn app-root []
(reagent/create-class
{:component-will-mount
(fn []
(.hide react/splash-screen))
:reagent-render views/main}))
{:component-will-mount
(fn []
(.hide react/splash-screen))
:reagent-render views/main}))
(defn init []
(core/init app-root))

View File

@ -1,64 +1,64 @@
(ns status-im.i18n
(:require
[cljs.spec.alpha :as spec]
[status-im.react-native.js-dependencies :as rn-dependencies]
[status-im.translations.af :as af]
[status-im.translations.ar :as ar]
[status-im.translations.bel :as be]
[status-im.translations.cs :as cs]
[status-im.translations.da :as da]
[status-im.translations.de :as de]
[status-im.translations.de-ch :as de-ch]
[status-im.translations.el :as el]
[status-im.translations.en :as en]
[status-im.translations.es :as es]
[status-im.translations.es-ar :as es-ar]
[status-im.translations.es-mx :as es-mx]
[status-im.translations.fi :as fi]
[status-im.translations.fr :as fr]
[status-im.translations.fr-ch :as fr-ch]
[status-im.translations.fy :as fy]
[status-im.translations.he :as he]
[status-im.translations.hi :as hi]
[status-im.translations.hu :as hu]
[status-im.translations.id :as id]
[status-im.translations.it :as it]
[status-im.translations.it-ch :as it-ch]
[status-im.translations.ja :as ja]
[status-im.translations.ko :as ko]
[status-im.translations.la :as la]
[status-im.translations.lt :as lt]
[status-im.translations.lv :as lv]
[status-im.translations.ms :as ms]
[status-im.translations.nb :as nb]
[status-im.translations.ne :as ne]
[status-im.translations.nl :as nl]
[status-im.translations.pl :as pl]
[status-im.translations.pt-br :as pt-br]
[status-im.translations.pt-pt :as pt-pt]
[status-im.translations.ro :as ro]
[status-im.translations.ru :as ru]
[status-im.translations.sl :as sl]
[status-im.translations.sr-rs-cyrl :as sr-rs-cyrl]
[status-im.translations.sr-rs-latn :as sr-rs-latn]
[status-im.translations.sv :as sv]
[status-im.translations.sw :as sw]
[status-im.translations.th :as th]
[status-im.translations.tr :as tr]
[status-im.translations.uk :as uk]
[status-im.translations.ur :as ur]
[status-im.translations.vi :as vi]
[status-im.translations.zh-hans :as zh-hans]
[status-im.translations.zh-hant :as zh-hant]
[status-im.translations.zh-hant-tw :as zh-hant-tw]
[status-im.translations.zh-hant-sg :as zh-hant-sg]
[status-im.translations.zh-hant-hk :as zh-hant-hk]
[status-im.translations.zh-wuu :as zh-wuu]
[status-im.translations.zh-yue :as zh-yue]
[status-im.utils.js-resources :refer [default-contacts]]
[taoensso.timbre :as log]
[clojure.string :as string]
[clojure.set :as set]))
[cljs.spec.alpha :as spec]
[status-im.react-native.js-dependencies :as rn-dependencies]
[status-im.translations.af :as af]
[status-im.translations.ar :as ar]
[status-im.translations.bel :as be]
[status-im.translations.cs :as cs]
[status-im.translations.da :as da]
[status-im.translations.de :as de]
[status-im.translations.de-ch :as de-ch]
[status-im.translations.el :as el]
[status-im.translations.en :as en]
[status-im.translations.es :as es]
[status-im.translations.es-ar :as es-ar]
[status-im.translations.es-mx :as es-mx]
[status-im.translations.fi :as fi]
[status-im.translations.fr :as fr]
[status-im.translations.fr-ch :as fr-ch]
[status-im.translations.fy :as fy]
[status-im.translations.he :as he]
[status-im.translations.hi :as hi]
[status-im.translations.hu :as hu]
[status-im.translations.id :as id]
[status-im.translations.it :as it]
[status-im.translations.it-ch :as it-ch]
[status-im.translations.ja :as ja]
[status-im.translations.ko :as ko]
[status-im.translations.la :as la]
[status-im.translations.lt :as lt]
[status-im.translations.lv :as lv]
[status-im.translations.ms :as ms]
[status-im.translations.nb :as nb]
[status-im.translations.ne :as ne]
[status-im.translations.nl :as nl]
[status-im.translations.pl :as pl]
[status-im.translations.pt-br :as pt-br]
[status-im.translations.pt-pt :as pt-pt]
[status-im.translations.ro :as ro]
[status-im.translations.ru :as ru]
[status-im.translations.sl :as sl]
[status-im.translations.sr-rs-cyrl :as sr-rs-cyrl]
[status-im.translations.sr-rs-latn :as sr-rs-latn]
[status-im.translations.sv :as sv]
[status-im.translations.sw :as sw]
[status-im.translations.th :as th]
[status-im.translations.tr :as tr]
[status-im.translations.uk :as uk]
[status-im.translations.ur :as ur]
[status-im.translations.vi :as vi]
[status-im.translations.zh-hans :as zh-hans]
[status-im.translations.zh-hant :as zh-hant]
[status-im.translations.zh-hant-tw :as zh-hant-tw]
[status-im.translations.zh-hant-sg :as zh-hant-sg]
[status-im.translations.zh-hant-hk :as zh-hant-hk]
[status-im.translations.zh-wuu :as zh-wuu]
[status-im.translations.zh-yue :as zh-yue]
[status-im.utils.js-resources :refer [default-contacts]]
[taoensso.timbre :as log]
[clojure.string :as string]
[clojure.set :as set]))
(set! (.-fallbacks rn-dependencies/i18n) true)
(set! (.-defaultSeparator rn-dependencies/i18n) "/")
@ -327,7 +327,6 @@
(defn supported-locales-that-are-not-considered-supported []
(set/difference (actual-supported-locales) supported-locales))
(set! (.-translations rn-dependencies/i18n)
(clj->js translations-by-locale))

View File

@ -16,29 +16,29 @@
(defn app-root []
(let [keyboard-height (subscribe [:get :keyboard-height])]
(reagent/create-class
{:component-will-mount
(fn []
(.addListener react/keyboard
"keyboardWillShow"
(fn [e]
(let [h (.. e -endCoordinates -height)]
(when-not (= h @keyboard-height)
(dispatch [:set :keyboard-height h])
(dispatch [:set :keyboard-max-height h])))))
(.addListener react/keyboard
"keyboardWillHide"
#(when-not (= 0 @keyboard-height)
(dispatch [:set :keyboard-height 0])))
(.hide react/splash-screen))
:component-did-mount
(fn []
(notifications/on-refresh-fcm-token)
(notifications/on-notification))
:component-will-unmount
(fn []
(.stop react/http-bridge))
:display-name "root"
:reagent-render views/main})))
{:component-will-mount
(fn []
(.addListener react/keyboard
"keyboardWillShow"
(fn [e]
(let [h (.. e -endCoordinates -height)]
(when-not (= h @keyboard-height)
(dispatch [:set :keyboard-height h])
(dispatch [:set :keyboard-max-height h])))))
(.addListener react/keyboard
"keyboardWillHide"
#(when-not (= 0 @keyboard-height)
(dispatch [:set :keyboard-height 0])))
(.hide react/splash-screen))
:component-did-mount
(fn []
(notifications/on-refresh-fcm-token)
(notifications/on-notification))
:component-will-unmount
(fn []
(.stop react/http-bridge))
:display-name "root"
:reagent-render views/main})))
(defn init []
(core/init app-root)

View File

@ -10,67 +10,54 @@
(non-status-go-module/ReactNativeStatus.)
(native-module/ReactNativeStatus.)))
(def adjust-resize 16)
(def adjust-pan 32)
#_(defn- wrap-and-print-callback [name callback]
(fn [& args]
(println :callback name (str args))
(log/debug :callback name args)
(apply callback args)))
(fn [& args]
(println :callback name (str args))
(log/debug :callback name args)
(apply callback args)))
(defn init-jail []
(module-interface/-init-jail rns-module))
(defn move-to-internal-storage [callback]
(module-interface/-move-to-internal-storage rns-module callback))
(defn start-node [config]
(module-interface/-start-node rns-module config))
(defn stop-node []
(module-interface/-stop-node rns-module))
(defn create-account [password callback]
(module-interface/-create-account rns-module password callback))
(defn recover-account [passphrase password callback]
(module-interface/-recover-account rns-module passphrase password callback))
(defn login [address password callback]
(module-interface/-login rns-module address password callback))
(defn approve-sign-requests [hashes password callback]
(module-interface/-approve-sign-requests rns-module hashes password callback))
(defn discard-sign-request [id]
(module-interface/-discard-sign-request rns-module id))
(defn parse-jail [chat-id file callback]
(module-interface/-parse-jail rns-module chat-id file callback))
(defn call-jail [params]
(module-interface/-call-jail rns-module params))
(defn call-function! [params]
(module-interface/-call-function! rns-module params))
(defn set-soft-input-mode [mode]
(module-interface/-set-soft-input-mode rns-module mode))
(defn clear-web-data []
(module-interface/-clear-web-data rns-module))

View File

@ -6,7 +6,7 @@
[taoensso.timbre :as log]
[cljs.core.async :as async :refer [<!]]
[status-im.utils.js-resources :as js-res]
[status-im.utils.platform :as p]
[status-im.utils.platform :as p]
[status-im.utils.types :as types]
[status-im.utils.transducers :as transducers]
[status-im.utils.async :as async-util :refer [timeout]]
@ -55,17 +55,17 @@
(defn init-jail []
(when status
(call-module
(fn []
(let [init-js (str js-res/status-js "I18n.locale = '" rn-dependencies/i18n.locale "'; ")
init-js' (if config/jsc-enabled?
(str init-js js-res/web3)
init-js)
log-message (str (if config/jsc-enabled?
"JavaScriptCore"
"OttoVM")
" jail initialized")]
(.initJail status init-js' #(do (re-frame/dispatch [:initialize-keychain])
(log/debug log-message))))))))
(fn []
(let [init-js (str js-res/status-js "I18n.locale = '" rn-dependencies/i18n.locale "'; ")
init-js' (if config/jsc-enabled?
(str init-js js-res/web3)
init-js)
log-message (str (if config/jsc-enabled?
"JavaScriptCore"
"OttoVM")
" jail initialized")]
(.initJail status init-js' #(do (re-frame/dispatch [:initialize-keychain])
(log/debug log-message))))))))
(defonce listener-initialized (atom false))
@ -134,7 +134,7 @@
(call-module #(.discardSignRequest status id))))
(defn- append-catalog-init [js]
(str js "\n" "var catalog = JSON.stringify(_status_catalog); catalog;"))
(str js "\n" "var catalog = JSON.stringify(_status_catalog); catalog;"))
(defn parse-jail [bot-id file callback]
(when status
@ -299,8 +299,8 @@
(-close-application [this]
(close-application))
(-connection-change [this data]
(connection-change data))
(connection-change data))
(-app-state-change [this state]
(app-state-change state))
(app-state-change state))
(-get-device-UUID [this callback]
(get-device-UUID callback)))
(get-device-UUID callback)))

View File

@ -7,39 +7,39 @@
[status-im.transport.inbox :as inbox]))
(re-frame/reg-fx
::listen-to-network-status
(fn [[connection-listener net-info-listener]]
(net-info/is-connected? connection-listener)
(net-info/net-info net-info-listener)
(net-info/add-connection-listener connection-listener)
(net-info/add-net-info-listener net-info-listener)))
::listen-to-network-status
(fn [[connection-listener net-info-listener]]
(net-info/is-connected? connection-listener)
(net-info/net-info net-info-listener)
(net-info/add-connection-listener connection-listener)
(net-info/add-net-info-listener net-info-listener)))
(re-frame/reg-fx
::notify-status-go
(fn [data]
(status/connection-change data)))
::notify-status-go
(fn [data]
(status/connection-change data)))
(handlers/register-handler-fx
:listen-to-network-status
(fn []
{::listen-to-network-status [#(re-frame/dispatch [::update-connection-status %])
#(re-frame/dispatch [::update-network-status %])]}))
:listen-to-network-status
(fn []
{::listen-to-network-status [#(re-frame/dispatch [::update-connection-status %])
#(re-frame/dispatch [::update-network-status %])]}))
(handlers/register-handler-fx
::update-connection-status
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [is-connected?]]
(let [previous-status (:network-status db)
back-online? (and (= previous-status :offline)
is-connected?)]
(cond-> (handlers-macro/merge-fx cofx
{:db (assoc db :network-status (if is-connected? :online :offline))}
(inbox/recover-offline-inbox back-online?))
is-connected?
(assoc :drain-mixpanel-events nil)))))
::update-connection-status
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [is-connected?]]
(let [previous-status (:network-status db)
back-online? (and (= previous-status :offline)
is-connected?)]
(cond-> (handlers-macro/merge-fx cofx
{:db (assoc db :network-status (if is-connected? :online :offline))}
(inbox/recover-offline-inbox back-online?))
is-connected?
(assoc :drain-mixpanel-events nil)))))
(handlers/register-handler-fx
::update-network-status
[re-frame/trim-v]
(fn [_ [data]]
{::notify-status-go data}))
::update-network-status
[re-frame/trim-v]
(fn [_ [data]]
{::notify-status-go data}))

View File

@ -13,71 +13,71 @@
;;;; COFX
(re-frame/reg-cofx
::get-web3
(fn [coeffects _]
(assoc coeffects :web3 (web3-provider/make-web3))))
::get-web3
(fn [coeffects _]
(assoc coeffects :web3 (web3-provider/make-web3))))
(re-frame/reg-fx
::web3-get-syncing
(fn [web3]
(when web3
(.getSyncing
(.-eth web3)
(fn [error sync]
(re-frame/dispatch [:update-sync-state error sync]))))))
::web3-get-syncing
(fn [web3]
(when web3
(.getSyncing
(.-eth web3)
(fn [error sync]
(re-frame/dispatch [:update-sync-state error sync]))))))
(re-frame/reg-fx
::status-init-jail
(fn []
(status/init-jail)))
::status-init-jail
(fn []
(status/init-jail)))
;;; INITIALIZE PROTOCOL
(handlers/register-handler-fx
:initialize-protocol
[re-frame/trim-v
(re-frame/inject-cofx ::get-web3)
(re-frame/inject-cofx :data-store/transport)]
(fn [{:data-store/keys [transport] :keys [db web3] :as cofx} [current-account-id ethereum-rpc-url]]
(handlers-macro/merge-fx cofx
{:db (assoc db
:web3 web3
:rpc-url (or ethereum-rpc-url constants/ethereum-rpc-url)
:transport/chats transport)}
(transport/init-whisper current-account-id))))
:initialize-protocol
[re-frame/trim-v
(re-frame/inject-cofx ::get-web3)
(re-frame/inject-cofx :data-store/transport)]
(fn [{:data-store/keys [transport] :keys [db web3] :as cofx} [current-account-id ethereum-rpc-url]]
(handlers-macro/merge-fx cofx
{:db (assoc db
:web3 web3
:rpc-url (or ethereum-rpc-url constants/ethereum-rpc-url)
:transport/chats transport)}
(transport/init-whisper current-account-id))))
;;; NODE SYNC STATE
(handlers/register-handler-db
:update-sync-state
(fn [{:keys [sync-state sync-data] :as db} [_ error sync]]
(let [{:keys [highestBlock currentBlock] :as state}
(js->clj sync :keywordize-keys true)
syncing? (> (- highestBlock currentBlock) constants/blocks-per-hour)
new-state (cond
error :offline
syncing? (if (= sync-state :done)
:pending
:in-progress)
:else (if (or (= sync-state :done)
(= sync-state :pending))
:done
:synced))]
(cond-> db
(when (and (not= sync-data state) (= :in-progress new-state)))
(assoc :sync-data state)
(when (not= sync-state new-state))
(assoc :sync-state new-state)))))
:update-sync-state
(fn [{:keys [sync-state sync-data] :as db} [_ error sync]]
(let [{:keys [highestBlock currentBlock] :as state}
(js->clj sync :keywordize-keys true)
syncing? (> (- highestBlock currentBlock) constants/blocks-per-hour)
new-state (cond
error :offline
syncing? (if (= sync-state :done)
:pending
:in-progress)
:else (if (or (= sync-state :done)
(= sync-state :pending))
:done
:synced))]
(cond-> db
(when (and (not= sync-data state) (= :in-progress new-state)))
(assoc :sync-data state)
(when (not= sync-state new-state))
(assoc :sync-state new-state)))))
(handlers/register-handler-fx
:check-sync
(fn [{{:keys [web3]} :db} _]
{::web3-get-syncing web3
:dispatch-later [{:ms 10000 :dispatch [:check-sync]}]}))
:check-sync
(fn [{{:keys [web3]} :db} _]
{::web3-get-syncing web3
:dispatch-later [{:ms 10000 :dispatch [:check-sync]}]}))
(handlers/register-handler-fx
:initialize-sync-listener
(fn [{{:keys [sync-listening-started network networks/networks] :as db} :db} _]
(when (and (not sync-listening-started)
(not (utils/network-with-upstream-rpc? networks network)))
{:db (assoc db :sync-listening-started true)
:dispatch [:check-sync]})))
:initialize-sync-listener
(fn [{{:keys [sync-listening-started network networks/networks] :as db} :db} _]
(when (and (not sync-listening-started)
(not (utils/network-with-upstream-rpc? networks network)))
{:db (assoc db :sync-listening-started true)
:dispatch [:check-sync]})))

View File

@ -1,234 +1,226 @@
(ns status-im.translations.af)
(def translations
{
;;common
:members-title "lede"
:not-implemented "!nie geimplimenteer nie"
:chat-name "Bynaam"
:notifications-title "Kennisgewings en klanke"
:offline "Aflyn"
{;;common
:members-title "lede"
:not-implemented "!nie geimplimenteer nie"
:chat-name "Bynaam"
:notifications-title "Kennisgewings en klanke"
:offline "Aflyn"
;;drawer
:switch-users "Verander gebruikers"
:switch-users "Verander gebruikers"
;;chat
:is-typing "is besig om te tik"
:and-you "en jy"
:search-chat "Deursoek geselsies"
:members {:one "1 lid"
:other "{{count}} lede"
:zero "geen lede"}
:members-active {:one "1 lid, 1 aktief"
:other "{{count}} lede, {{count}} aktief"
:zero "geen lede"}
:active-online "Aanlyn"
:active-unknown "Onbekend"
:available "Beskikbaar"
:no-messages "Geen boodskappe"
:suggestions-requests "Versoeke"
:suggestions-commands "Opdragte"
:is-typing "is besig om te tik"
:and-you "en jy"
:search-chat "Deursoek geselsies"
:members {:one "1 lid"
:other "{{count}} lede"
:zero "geen lede"}
:members-active {:one "1 lid, 1 aktief"
:other "{{count}} lede, {{count}} aktief"
:zero "geen lede"}
:active-online "Aanlyn"
:active-unknown "Onbekend"
:available "Beskikbaar"
:no-messages "Geen boodskappe"
:suggestions-requests "Versoeke"
:suggestions-commands "Opdragte"
;;sync
:sync-in-progress "Besig om te sinchroniseer..."
:sync-synced "gesinchroniseer"
:sync-in-progress "Besig om te sinchroniseer..."
:sync-synced "gesinchroniseer"
;;messages
:status-sending "Besig om te stuur"
:status-pending "Hangende"
:status-sent "Gestuur"
:status-seen-by-everyone "Deur almal gesien"
:status-seen "Gesien"
:status-delivered "Afgelewer"
:status-failed "Gefaal"
:status-sending "Besig om te stuur"
:status-pending "Hangende"
:status-sent "Gestuur"
:status-seen-by-everyone "Deur almal gesien"
:status-seen "Gesien"
:status-delivered "Afgelewer"
:status-failed "Gefaal"
;;datetime
:datetime-second {:one "sekonde"
:other "sekondes"}
:datetime-minute {:one "minuut"
:other "minute"}
:datetime-hour {:one "uur"
:other "ure"}
:datetime-day {:one "dag"
:other "dae"}
:datetime-ago "gelede"
:datetime-yesterday "gister"
:datetime-today "vandag"
:datetime-second {:one "sekonde"
:other "sekondes"}
:datetime-minute {:one "minuut"
:other "minute"}
:datetime-hour {:one "uur"
:other "ure"}
:datetime-day {:one "dag"
:other "dae"}
:datetime-ago "gelede"
:datetime-yesterday "gister"
:datetime-today "vandag"
;;profile
:profile "Profiel"
:message "Boodskap"
:not-specified "Nie gespesifiseer nie"
:public-key "Openbare sleutel"
:phone-number "Telefoonnommer"
:add-to-contacts "Voeg by kontakte"
:profile "Profiel"
:message "Boodskap"
:not-specified "Nie gespesifiseer nie"
:public-key "Openbare sleutel"
:phone-number "Telefoonnommer"
:add-to-contacts "Voeg by kontakte"
;;make_photo
:image-source-title "Profielbeeld"
:image-source-make-photo "Opname"
:image-source-gallery "Kies uit galery"
:image-source-title "Profielbeeld"
:image-source-make-photo "Opname"
:image-source-gallery "Kies uit galery"
;;sign-up
:contacts-syncronized "U kontakte is gesinchroniseer"
:confirmation-code (str "Dankie! Ons het vir u 'n SMS gestuur met 'n bevestigings "
"kode. Verskaf asseblief daardie kode om u telefoonnommer te bevestig")
:incorrect-code (str "Jammer, die kode was nie korrek nie, voer asseblief weer in")
:phew-here-is-your-passphrase "*Sjoe* dit was moeilik, hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin."
:here-is-your-passphrase "Hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin."
:phone-number-required "Tik hier om jou telefoonnommer in te voer & ek sal jou vriende opspoor"
:intro-status "Gesels met my om jou rekening op te stel en jou stellings te verander!"
:intro-message1 "Welkom by Status\nTik tik hierdie boodskap om jou wagwoord te stel & laat ons begin!"
:account-generation-message "Net 'n oomblik, ek moet mal somme doen om jou rekening te skep!"
:contacts-syncronized "U kontakte is gesinchroniseer"
:confirmation-code (str "Dankie! Ons het vir u 'n SMS gestuur met 'n bevestigings "
"kode. Verskaf asseblief daardie kode om u telefoonnommer te bevestig")
:incorrect-code (str "Jammer, die kode was nie korrek nie, voer asseblief weer in")
:phew-here-is-your-passphrase "*Sjoe* dit was moeilik, hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin."
:here-is-your-passphrase "Hier is jou tydelike wagwoord, *skryf dit neer en hou dit veilig!* Jy sal dit nodig hê om jou rekening te herwin."
:phone-number-required "Tik hier om jou telefoonnommer in te voer & ek sal jou vriende opspoor"
:intro-status "Gesels met my om jou rekening op te stel en jou stellings te verander!"
:intro-message1 "Welkom by Status\nTik tik hierdie boodskap om jou wagwoord te stel & laat ons begin!"
:account-generation-message "Net 'n oomblik, ek moet mal somme doen om jou rekening te skep!"
;;chats
:chats "Geselsies"
:new-group-chat "Nuwe groepgeselsie"
:chats "Geselsies"
:new-group-chat "Nuwe groepgeselsie"
;;discover
:discover "Ontdekking"
:none "Geen"
:search-tags "Tik jou soek-oortjies hier in"
:popular-tags "Gewilde oortjies"
:recent "Onlangs"
:no-statuses-discovered "Geen statusse gevind nie"
:discover "Ontdekking"
:none "Geen"
:search-tags "Tik jou soek-oortjies hier in"
:popular-tags "Gewilde oortjies"
:recent "Onlangs"
:no-statuses-discovered "Geen statusse gevind nie"
;;settings
:settings "Stellings"
:settings "Stellings"
;;contacts
:contacts "Kontakte"
:new-contact "Nuwe kontak"
:contacts-group-new-chat "Begin nuwe geselsie"
:no-contacts "Nog geen kontakte nie"
:show-qr "Wys QR"
:contacts "Kontakte"
:new-contact "Nuwe kontak"
:contacts-group-new-chat "Begin nuwe geselsie"
:no-contacts "Nog geen kontakte nie"
:show-qr "Wys QR"
;;group-settings
:remove "Verwyder"
:save "Stoor"
:clear-history "Maak geskiedenis skoon"
:chat-settings "Geselsie-stellings"
:edit "Wysig"
:add-members "Voeg lede by"
:remove "Verwyder"
:save "Stoor"
:clear-history "Maak geskiedenis skoon"
:chat-settings "Geselsie-stellings"
:edit "Wysig"
:add-members "Voeg lede by"
;;commands
:chat-send-eth "{{amount}} ETH"
:chat-send-eth "{{amount}} ETH"
;;new-group
;;participants
;;protocol
:received-invitation "geselsie-uitnodiging ontvang"
:removed-from-chat "het jou van groepsgeselsie verwyder"
:left "uitgegaan"
:invited "uitgenooi"
:removed "verwyder"
:You "Jou"
:received-invitation "geselsie-uitnodiging ontvang"
:removed-from-chat "het jou van groepsgeselsie verwyder"
:left "uitgegaan"
:invited "uitgenooi"
:removed "verwyder"
:You "Jou"
;;new-contact
:add-new-contact "Voeg nuwe kontak by"
:scan-qr "Skandeer QR"
:name "Naam"
:address-explication "Miskien moet hier 'n bietjie teks wees wat verduidelik wat 'n adres is en waar om daarvoor te soek."
:contact-already-added "Die kontak is alreeds bygevoeg"
:can-not-add-yourself "Jy kan nie jouself byvoeg nie"
:unknown-address "Onbekende adres"
;;login
:connect "Konnekteer"
:address "Adres"
:password "Wagwoord"
:wrong-password "Verkeerde wagwoord"
:add-new-contact "Voeg nuwe kontak by"
:scan-qr "Skandeer QR"
:name "Naam"
:address-explication "Miskien moet hier 'n bietjie teks wees wat verduidelik wat 'n adres is en waar om daarvoor te soek."
:contact-already-added "Die kontak is alreeds bygevoeg"
:can-not-add-yourself "Jy kan nie jouself byvoeg nie"
:unknown-address "Onbekende adres" ;;login
:connect "Konnekteer"
:address "Adres"
:password "Wagwoord"
:wrong-password "Verkeerde wagwoord"
;;recover
:passphrase "Tydelike wagwoord"
:recover "Herstel"
:passphrase "Tydelike wagwoord"
:recover "Herstel"
;;accounts
:recover-access "Herwin toegang"
:recover-access "Herwin toegang"
;;wallet-qr-code
:done "Gedoen"
:main-wallet "Hoofbeursie"
:done "Gedoen"
:main-wallet "Hoofbeursie"
;;validation
:invalid-phone "Ongeldige telefoonnommer"
:amount "Bedrag"
:invalid-phone "Ongeldige telefoonnommer"
:amount "Bedrag"
;;transactions
:status "Status"
:recipient "Ontvanger"
:status "Status"
:recipient "Ontvanger"
;;:webview
:web-view-error "oepsie, fout"
:web-view-error "oepsie, fout"
:confirm "Bevestig"
:phone-national "Nasionaal"
:public-group-topic "Onderwerp"
:debug-enabled "Ontfout-bediener is bekendgestel! U kan nou u DApp byvoeg deur *status-dev-cli scan* te hardloop vanaf u rekenaar"
:new-public-group-chat "Sluit aan by openbare klets"
:datetime-ago-format "{{number}} {{time-intervals}} {{ago}}"
:sharing-cancel "Kanselleer"
:twelve-words-in-correct-order "12 woorde in korrekte volgorde"
:remove-from-contacts "Verwyder van kontakte"
:delete-chat "Skrap klets"
:edit-chats "Redigeer kletse"
:sign-in "Teken aan"
:create-new-account "Skep nuwe rekening"
:sign-in-to-status "Teken aan op Status"
:got-it "Het dit"
:move-to-internal-failure-message "Ons moet n paar belangrike lêers skuif van eksterne na interne berging. Om dit te doen, het ons u toestemming nodig. Ons sal nie eksterne berging gebruik in toekomstige weergawes nie."
:edit-group "Redigeer groep"
:delete-group "Skrap groep"
:browsing-title "Blaai"
:reorder-groups "Herrangskik groepe"
:browsing-cancel "Kanselleer"
:faucet-success "Kraan versoek is ontvang"
:choose-from-contacts "Kies uit kontakte"
:new-group "Nuwe groep"
:phone-e164 "Internasionaal 1"
:remove-from-group "Verwyder van groep"
:search-contacts "Soek kontakte"
:transaction "Transaksie"
:public-group-status "Openbaar"
:leave-chat "Verlaat klets"
:start-conversation "Begin gesprek"
:topic-format "Verkeerde formaat [a-z0-9\\-]+"
:enter-valid-public-key "Voer asseblief n geldige openbare sleutel in of skandeer n QR-kode in"
:faucet-error "Kraan versoek fout"
:phone-significant "Aansienlik"
:search-for "Soek vir..."
:sharing-copy-to-clipboard "Kopieer na knipbord"
:phone-international "Internasionaal 2"
:enter-address "Voeg n adres in"
:send-transaction "Stuur transaksie"
:delete-contact "Skrap kontak"
:mute-notifications "Demp kennisgewings"
:confirm "Bevestig"
:phone-national "Nasionaal"
:public-group-topic "Onderwerp"
:debug-enabled "Ontfout-bediener is bekendgestel! U kan nou u DApp byvoeg deur *status-dev-cli scan* te hardloop vanaf u rekenaar"
:new-public-group-chat "Sluit aan by openbare klets"
:datetime-ago-format "{{number}} {{time-intervals}} {{ago}}"
:sharing-cancel "Kanselleer"
:twelve-words-in-correct-order "12 woorde in korrekte volgorde"
:remove-from-contacts "Verwyder van kontakte"
:delete-chat "Skrap klets"
:edit-chats "Redigeer kletse"
:sign-in "Teken aan"
:create-new-account "Skep nuwe rekening"
:sign-in-to-status "Teken aan op Status"
:got-it "Het dit"
:move-to-internal-failure-message "Ons moet n paar belangrike lêers skuif van eksterne na interne berging. Om dit te doen, het ons u toestemming nodig. Ons sal nie eksterne berging gebruik in toekomstige weergawes nie."
:edit-group "Redigeer groep"
:delete-group "Skrap groep"
:browsing-title "Blaai"
:reorder-groups "Herrangskik groepe"
:browsing-cancel "Kanselleer"
:faucet-success "Kraan versoek is ontvang"
:choose-from-contacts "Kies uit kontakte"
:new-group "Nuwe groep"
:phone-e164 "Internasionaal 1"
:remove-from-group "Verwyder van groep"
:search-contacts "Soek kontakte"
:transaction "Transaksie"
:public-group-status "Openbaar"
:leave-chat "Verlaat klets"
:start-conversation "Begin gesprek"
:topic-format "Verkeerde formaat [a-z0-9\\-]+"
:enter-valid-public-key "Voer asseblief n geldige openbare sleutel in of skandeer n QR-kode in"
:faucet-error "Kraan versoek fout"
:phone-significant "Aansienlik"
:search-for "Soek vir..."
:sharing-copy-to-clipboard "Kopieer na knipbord"
:phone-international "Internasionaal 2"
:enter-address "Voeg n adres in"
:send-transaction "Stuur transaksie"
:delete-contact "Skrap kontak"
:mute-notifications "Demp kennisgewings"
:contact-s {:one "kontak"
:other "kontakte"}
:next "Volgende"
:from "Van"
:search-chats "Soek kletse"
:in-contacts "In kontakte"
:contact-s {:one "kontak"
:other "kontakte"}
:next "Volgende"
:from "Van"
:search-chats "Soek kletse"
:in-contacts "In kontakte"
:sharing-share "Deel..."
:type-a-message "Tik n boodskap..."
:type-a-command "Begin n opdrag tik..."
:shake-your-phone "Vind n fout of het n voorstel? Skud ~net~ u foon!"
:status-prompt "Skep n status om te help dat mense weet oor die goed wat u aanbied. U kan #hutsmerke ook gebruik."
:add-a-status "Voeg n status by..."
:error "Fout"
:edit-contacts "Redigeer kontakte"
:more "meer"
:cancel "Kanselleer"
:no-statuses-found "Geen statusse gevind nie"
:browsing-open-in-web-browser "Maak oop in webblaaier"
:delete-group-prompt "Dit sal nie kontakte affekteer nie"
:edit-profile "Redigeer profiel"
:empty-topic "Leë onderwerp"
:to "Aan"
:data "Data"})
:sharing-share "Deel..."
:type-a-message "Tik n boodskap..."
:type-a-command "Begin n opdrag tik..."
:shake-your-phone "Vind n fout of het n voorstel? Skud ~net~ u foon!"
:status-prompt "Skep n status om te help dat mense weet oor die goed wat u aanbied. U kan #hutsmerke ook gebruik."
:add-a-status "Voeg n status by..."
:error "Fout"
:edit-contacts "Redigeer kontakte"
:more "meer"
:cancel "Kanselleer"
:no-statuses-found "Geen statusse gevind nie"
:browsing-open-in-web-browser "Maak oop in webblaaier"
:delete-group-prompt "Dit sal nie kontakte affekteer nie"
:edit-profile "Redigeer profiel" :empty-topic "Leë onderwerp"
:to "Aan"
:data "Data"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ar)
(def translations
{
;;common
{;;common
:members-title "الأعضاء"
:not-implemented "!غير مُطَبّق"
:chat-name "اسم الدردشة"
@ -132,10 +131,7 @@
:address-explication "ربما يتعين أن تتوافر هنا بعض النصوص التي تشرح ما هو العنوان وأين تبحث عنه"
:contact-already-added "تمت إضافة جهة الاتصال"
:can-not-add-yourself "لا يمكنك إضافة نفسك"
:unknown-address "عنوان غير معروف"
;;login
:unknown-address "عنوان غير معروف";;login
:connect "اتصال"
:address "عنوان"
:password "كلمة مرور"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.bel)
(def translations
{
;;common
{;;common
:members-title "Удзельнікі"
:not-implemented "!не рэалізавана"
:chat-name "Імя чата"
@ -146,10 +145,7 @@
:enter-valid-public-key "Калі ласка, увядзіце сапраўдны публічны ключ ці скануйце QR-код"
:contact-already-added "Кантакт ўжо дададзены"
:can-not-add-yourself "Вы не можаце дадаць сябе"
:unknown-address "Невядомы адрас"
;;login
:unknown-address "Невядомы адрас";;login
:connect "Падлучыцца"
:address "Адрас"
:password "Пароль"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.cs)
(def translations
{
;;common
{;;common
:members-title "Členové"
:not-implemented "!není implementováno"
:chat-name "Název chatu"
@ -199,10 +198,7 @@
:enter-valid-public-key "Prosím zadejte platný veřejný klíč nebo načtěte QR kód"
:contact-already-added "Tento kontakt již byl přidán"
:can-not-add-yourself "Nemůžeš přidat sebe"
:unknown-address "Neznámá adresa"
;;login
:unknown-address "Neznámá adresa";;login
:connect "Připojit"
:address "Adresa"
:password "Heslo"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.da)
(def translations
{
;;common
{;;common
:members-title "Medlemmere"
:not-implemented "Ikke implementeret!"
:chat-name "Chatnavn"
@ -198,10 +197,7 @@
:enter-valid-public-key "Indtast venligst en gyldig offentlig nøgle eller scan en QR-kode"
:contact-already-added "Kontakten er allerede tilføjet"
:can-not-add-yourself "Du kan ikke tilføje dig selv fjolle"
:unknown-address "Ukendt adresse"
;;login
:unknown-address "Ukendt adresse";;login
:connect "Tilslut"
:address "Adresse"
:password "Kodeord"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.de)
(def translations
{
;;common
{;;common
:members-title "Mitglieder"
:not-implemented "!nicht implementiert"
:chat-name "Chatname"
@ -329,11 +328,7 @@
:wallet-invalid-address "Ungültige Adresse: \n {{data}}"
:wallet-browse-photos "Fotos durchsuchen"
:validation-amount-invalid-number "Menge ist keine gültige Zahl"
:validation-amount-is-too-precise "Menge ist zu präzise. Die kleinste Einheit, die du senden kannst, ist 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Menge ist zu präzise. Die kleinste Einheit, die du senden kannst, ist 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Neues Netzwerk"
:add-network "Netzwerk hinzufügen"
:add-new-network "Neues Netzwerk hinzufügen"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.de-ch)
(def translations
{
;;common
{;;common
:members-title "Mitglieder"
:not-implemented "!nicht implementiert"
:chat-name "Chat Name"
@ -132,10 +131,7 @@
:address-explication "Vielleicht sollte hier ein Text stehen der erklärt, was eine Adresse ist und wo man suchen soll"
:contact-already-added "Der Kontakt wurde bereits hinzugefügt"
:can-not-add-yourself "Du kannst dich nicht selbst hinzufügen"
:unknown-address "Unbekannte Adresse"
;;login
:unknown-address "Unbekannte Adresse";;login
:connect "Verbinden"
:address "Adresse"
:password "Passwort"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.el)
(def translations
{
;;common
{;;common
:members-title "Μέλη"
:not-implemented "!μη υλοποιημένο"
:chat-name "Όνομα συνομιλίας"
@ -347,11 +346,7 @@
:wallet-transaction-fee-details "Το όριο gas είναι το ποσό του gas που θα αποσταλεί με τη συναλλαγή σας. Η αύξηση αυτού του αριθμού δε θα οδηγήσει σε ταχύτερη επεξεργασία της συναλλαγής σας"
:wallet-transaction-total-fee "Σύνολική Χρέωση"
:validation-amount-invalid-number "Το ποσό δεν είναι έγκυρος αριθμός"
:validation-amount-is-too-precise "Το ποσό είναι πολύ ακριβές. Η μικρότερη μονάδα που μπορείτε να στείλετε είναι 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Το ποσό είναι πολύ ακριβές. Η μικρότερη μονάδα που μπορείτε να στείλετε είναι 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Νέο δίκτυο"
:add-network "Προσθήκη δικτύου"
:add-new-network "Προσθήκη νέου δικτύου"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.en)
(def translations
{
;;common
{;;common
:members-title "Members"
:not-implemented "!not implemented"
:chat-name "Chat name"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.es)
(def translations
{
;;common
{;;common
:members-title "Miembros"
:not-implemented "¡No se ha implementado!"
:chat-name "Nombre del chat"
@ -327,11 +326,7 @@
:wallet-invalid-address "Dirección inválida: \n {{data}}"
:wallet-browse-photos "Navegar Imágenes"
:validation-amount-invalid-number "La cantidad no es un número válido"
:validation-amount-is-too-precise "La cantidad es demasiado precisa. La mínima unidad que puedes enviar es 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "La cantidad es demasiado precisa. La mínima unidad que puedes enviar es 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Nueva red"
:add-network "Añadir red"
:add-new-network "Añadir nueva red"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.es-ar)
(def translations
{
;;common
{;;common
:members-title "Miembros"
:not-implemented "!no implementado"
:chat-name "Nombre del chat"
@ -137,10 +136,7 @@
:address-explication "Tal vez, aquí debería haber alguna indicación explicando qué es una dirección y dónde buscarla"
:contact-already-added "El contacto ya ha sido agregado"
:can-not-add-yourself "No puedes agregarte a ti mismo(a)"
:unknown-address "Dirección desconocida"
;;login
:unknown-address "Dirección desconocida";;login
:connect "Conectar"
:address "Dirección"
:password "Contraseña"
@ -206,11 +202,8 @@
:enter-address "Ingresar dirección"
:send-transaction "Enviar transacción"
:delete-contact "Eliminar contacto"
:mute-notifications "Silenciar notificaciones"
:contact-s {:one "contacto"
:other "contactos"}
:mute-notifications "Silenciar notificaciones" :contact-s {:one "contacto"
:other "contactos"}
:next "Siguiente"
:from "De"
:search-chats "Buscar chats"
@ -228,9 +221,6 @@
:no-statuses-found "No se encontraron estados"
:browsing-open-in-web-browser "Abrir en navegador web"
:delete-group-prompt "Esto no afectará a los contactos"
:edit-profile "Editar perfil"
:empty-topic "Tema vacío"
:edit-profile "Editar perfil" :empty-topic "Tema vacío"
:to "Para"
:data "Datos"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.es-mx)
(def translations
{
;;common
{;;common
:members-title "Miembros"
:not-implemented "!No implementado!"
:chat-name "Nombre del chat"
@ -198,10 +197,7 @@
:enter-valid-public-key "Por favor ingresa una llave pública o escanea un código QR"
:contact-already-added "El contacto ya ha sido agregado"
:can-not-add-yourself "No puedes agregarte a ti mismo"
:unknown-address "Dirección desconocida"
;;login
:unknown-address "Dirección desconocida";;login
:connect "Conectar"
:address "Dirección"
:password "Contraseña"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.fi)
(def translations
{
;;common
{;;common
:members-title "Jäsenet"
:not-implemented "!ei toteutettu"
:chat-name "Keskustelun nimi"
@ -199,10 +198,7 @@
:enter-valid-public-key "Anna voimassaoleva julkinen osoite tai skannaa QR koodi"
:contact-already-added "Tämä yhteystieto on jo lisätty"
:can-not-add-yourself "Et voi lisätä itseäsi"
:unknown-address "Tuntematon osoite"
;;login
:unknown-address "Tuntematon osoite";;login
:connect "Yhdistä"
:address "Osoite"
:password "Salasana"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.fr)
(def translations
{
;;common
{;;common
:members-title "Membres"
:not-implemented "! Non disponible"
:chat-name "Pseudonyme"
@ -346,11 +345,7 @@
:wallet-invalid-address "Adresse invalide: \n {{data}}"
:wallet-browse-photos "Parcourir les Photos"
:validation-amount-invalid-number "Le montant n'est pas un nombre valide"
:validation-amount-is-too-precise "Le montant est trop précis. La plus petite unité que vous pouvez saisir est 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Le montant est trop précis. La plus petite unité que vous pouvez saisir est 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Nouveau réseau"
:add-network "Ajouter un réseau"
:add-new-network "Ajouter un nouveau réseau"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.fr-ch)
(def translations
{
;;common
{;;common
:members-title "Membres"
:not-implemented "!pas mis en place"
:chat-name "Nom de chat"
@ -132,10 +131,7 @@
:address-explication "On pourrait mettre ici un texte qui explique ce qu'est une adresse et comment la rechercher"
:contact-already-added "Le contact a déjà été ajouté"
:can-not-add-yourself "Vous ne pouvez pas vous ajouter vous-même"
:unknown-address "Adresse inconnue"
;;login
:unknown-address "Adresse inconnue";;login
:connect "Se connecter"
:address "Adresse"
:password "Mot de passe"
@ -203,11 +199,8 @@
:enter-address "Renseigner l'adresse"
:send-transaction "Envoyer la transaction"
:delete-contact "Supprimer le contact"
:mute-notifications "Désactiver le son des notifications"
:contact-s {:one "contact"
:other "contacts"}
:mute-notifications "Désactiver le son des notifications" :contact-s {:one "contact"
:other "contacts"}
:next "Suivant"
:from "De"
:search-chats "Rechercher dans les discussions"
@ -226,9 +219,6 @@
:no-statuses-found "Aucun statut trouvé"
:browsing-open-in-web-browser "Ouvrir dans le navigateur"
:delete-group-prompt "Cela n'affectera pas les contacts"
:edit-profile "Modifier le profil"
:empty-topic "Sujet vide"
:edit-profile "Modifier le profil" :empty-topic "Sujet vide"
:to "À"
:data "Données"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.fy)
(def translations
{
;;common
{;;common
:members-title "Leden"
:not-implemented "!net ymplemintearre"
:chat-name "Chatnamme"
@ -199,10 +198,7 @@
:enter-valid-public-key "Fear in jildich adres public kaai yn of scan in QR koade"
:contact-already-added "De kontaktpersoan is ol tafoege"
:can-not-add-yourself "Do kinst dysels net tafoegje"
:unknown-address "Ûnbekend adres"
;;login
:unknown-address "Ûnbekend adres";;login
:connect "Ferbine"
:address "Adres"
:password "Wachtwurd"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.he)
(def translations
{
;;common
{;;common
:members-title "חבר"
:not-implemented "!עדיין לא יושם"
:chat-name "שם הצ'אט"
@ -200,10 +199,7 @@
:enter-valid-public-key "אנא הזן קוד פומבי תקף או סרוק ברקוד"
:contact-already-added "איש הקשר כבר קיים"
:can-not-add-yourself "אתה לא יכול להוסיף את עצמך"
:unknown-address "כתובת לא ידועה"
;;login
:unknown-address "כתובת לא ידועה";;login
:connect "התחבר"
:address "כתובת"
:password "סיסמא"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.hi)
(def translations
{
;;common
{;;common
:members-title "सदस्य"
:not-implemented "!कार्यान्वित नहीं"
:chat-name "चैट नाम"
@ -132,10 +131,7 @@
:address-explication "संभवतः यहाँ कुछ टेक्स्ट विवरण होना चाहिए कि पता क्या है और इसे कहाँ खोजा जाए"
:contact-already-added "संपर्क पहले से जोड़ लिया गया है"
:can-not-add-yourself "आप अपने आपको नहीं जोड़ सकते"
:unknown-address "अज्ञात पता"
;;login
:unknown-address "अज्ञात पता";;login
:connect "कनेक्ट करें"
:address "पता"
:password "पासवर्ड"
@ -203,11 +199,8 @@
:enter-address "पता प्रविष्ट करें"
:send-transaction "लेनदेन भेजें"
:delete-contact "संपर्क मिटाएं"
:mute-notifications "अधिसूचनाएं म्यूट करें"
:contact-s {:one "संपर्क"
:other "संपर्क"}
:mute-notifications "अधिसूचनाएं म्यूट करें" :contact-s {:one "संपर्क"
:other "संपर्क"}
:next "अगला"
:from "द्वारा"
:search-chats "चैट्स खोजें"
@ -226,9 +219,6 @@
:no-statuses-found "कोई स्टैटस नहीं मिले"
:browsing-open-in-web-browser "वेब ब्राउज़र में खोलें"
:delete-group-prompt "इससे संपर्क प्रभावित नहीं होंगे"
:edit-profile "प्रोफाइल का संपादन करें"
:empty-topic "रिक्त विषय"
:edit-profile "प्रोफाइल का संपादन करें" :empty-topic "रिक्त विषय"
:to "प्रति"
:data "डेटा"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.hu)
(def translations
{
;;common
{;;common
:members-title "Tagok"
:not-implemented "!nem végrehajtott"
:chat-name "Csevegés neve"
@ -132,10 +131,7 @@
:address-explication "Itt talán szükség lenne egy kis szövegre, ami elmagyarázná, mi is az a cím és hol lehet megtalálni"
:contact-already-added "A kapcsolat már hozzáadásra került"
:can-not-add-yourself "Magadat nem adhatod hozzá"
:unknown-address "Ismeretlen cím"
;;login
:unknown-address "Ismeretlen cím";;login
:connect "Kapcsolódás"
:address "Cím"
:password "Jelszó"
@ -203,11 +199,8 @@
:enter-address "Cím megadása"
:send-transaction "Tranzakció küldése"
:delete-contact "Névjegy törlése"
:mute-notifications "Értesítések elnémítása"
:contact-s {:one "névjegy"
:other "névjegyek"}
:mute-notifications "Értesítések elnémítása" :contact-s {:one "névjegy"
:other "névjegyek"}
:next "Következő"
:from "Feladó"
:search-chats "Csevegések keresése"
@ -226,9 +219,6 @@
:no-statuses-found "Nem található állapot"
:browsing-open-in-web-browser "Megnyitás új böngészőben"
:delete-group-prompt "Nem lesz hatással a névjegyekre"
:edit-profile "Profil szerkesztése"
:empty-topic "Üres téma"
:edit-profile "Profil szerkesztése" :empty-topic "Üres téma"
:to "Címzett"
:data "Adatok"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.id)
(def translations
{
;;common
{;;common
:members-title "anggota"
:not-implemented "tidak diimplementasikan !"
:chat-name "nama obrolan"
@ -132,10 +131,7 @@
:address-explication "mungkin harus ada beberapa konten untuk menjelaskan alamat ini dan di mana menemukannya"
:contact-already-added "Kontak yang telah ditambahkan"
:can-not-add-yourself "tidak dapat menambahkan anda sendiri"
:unknown-address "alamat tidak diketahui"
;;login
:unknown-address "alamat tidak diketahui";;login
:connect "terhubung"
:address "alamat"
:password "kata sandi"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.it)
(def translations
{
;;common
{;;common
:members-title "Membri"
:not-implemented "!non implementato"
:chat-name "Nome della chat"
@ -327,11 +326,7 @@
:wallet-invalid-address "Indirizzo non valido: \n {{data}}"
:wallet-browse-photos "Sfoglia Foto"
:validation-amount-invalid-number "La Quantità è un numero invalido"
:validation-amount-is-too-precise "L'ammontare è troppo preciso. La più piccola unità che puoi inviare è 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "L'ammontare è troppo preciso. La più piccola unità che puoi inviare è 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Nuova rete"
:add-network "Aggiungi rete"
:add-new-network "Aggiungi nuova rete"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.it-ch)
(def translations
{
;;common
{;;common
:members-title "Membri"
:not-implemented "!non implementato"
:chat-name "Nome chat"
@ -132,10 +131,7 @@
:address-explication "Forse qui dovremmo spiegare cos'è un indirizzo e dove cercarlo"
:contact-already-added "Il contatto è già stato aggiunto"
:can-not-add-yourself "Non puoi aggiungere te stesso"
:unknown-address "Indirizzo sconosciuto"
;;login
:unknown-address "Indirizzo sconosciuto";;login
:connect "Effettua connessione"
:address "Indirizzo"
:password "Password"
@ -203,11 +199,8 @@
:enter-address "Inserisci indirizzo"
:send-transaction "Invia transazione"
:delete-contact "Elimina contatto"
:mute-notifications "Silenzia le notifiche"
:contact-s {:one "contatto"
:other "contatti"}
:mute-notifications "Silenzia le notifiche" :contact-s {:one "contatto"
:other "contatti"}
:next "Avanti"
:from "Da"
:search-chats "Cerca nelle chat"
@ -226,9 +219,6 @@
:no-statuses-found "Nessuno stato trovato"
:browsing-open-in-web-browser "Apri nel browser"
:delete-group-prompt "Questo non intaccherà i contatti"
:edit-profile "Modifica profilo"
:empty-topic "Argomento non definito"
:edit-profile "Modifica profilo" :empty-topic "Argomento non definito"
:to "A"
:data "Dati"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ja)
(def translations
{
;;common
{;;common
:members-title "メンバー"
:not-implemented "実装されていません"
:chat-name "チャット名"
@ -338,10 +337,7 @@
:wallet-transaction-fee-details "Gas リミットは、取引で送付するgasの量です。 この数を増やしても、取引はより速く処理されません"
:wallet-transaction-total-fee "合計料金"
:validation-amount-invalid-number "金額は有効な数字ではありません"
:validation-amount-is-too-precise "金額が高すぎます。送れる最小単位は1 Wei1x10 ^ -18 ETHです。"
;; network settings
:validation-amount-is-too-precise "金額が高すぎます。送れる最小単位は1 Wei1x10 ^ -18 ETHです。";; network settings
:new-network "新しいネットワーク"
:add-network "ネットワークを追加する"
:add-new-network "新しいネットワークを追加"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ko)
(def translations
{
;;common
{;;common
:members-title "멤버"
:not-implemented "!구현되지 않음"
:chat-name "채팅 이름"
@ -327,11 +326,7 @@
:wallet-invalid-address "잘못된 주소: \n {{data}}"
:wallet-browse-photos "사진 보기"
:validation-amount-invalid-number "잘못된 액수입니다"
:validation-amount-is-too-precise "액수가 너무 정확합니다. 최소 송금 단위는 1 Wei (1x10^-18 ETH) 입니다."
;; network settings
:validation-amount-is-too-precise "액수가 너무 정확합니다. 최소 송금 단위는 1 Wei (1x10^-18 ETH) 입니다.";; network settings
:new-network "새 네트워크"
:add-network "네트워크 추가"
:add-new-network "새 네트워크 추가"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.la)
(def translations
{
;;common
{;;common
:members-title "sodalis"
:not-implemented "ne attexit"
:chat-name "nomen colloquii"
@ -127,10 +126,7 @@
:address-explication "explain what adresses are" ;; TODO
:contact-already-added "iste contagio jam adjunctum esse"
:can-not-add-yourself "ne potest adjungere ipse!"
:unknown-address "ignotum adloquium"
;;login
:unknown-address "ignotum adloquium";;login
:connect "iungere"
:address "adloquium"
:password "signum arcanum"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.lt)
(def translations
{
;;common
{;;common
:members-title "Nariams"
:not-implemented "neįgyvendinta"
:chat-name "Pokalbio pavadinimas"
@ -329,11 +328,7 @@
:wallet-invalid-chain-id "Tinklas nesutampa su: \n {{data}}"
:wallet-browse-photos "Naršyti žinutes"
:validation-amount-invalid-number "Kiekio skaičius netinkamas"
:validation-amount-is-too-precise "Suma yra per daug tiksli. Mažiausias vienetas, kurį galite siųsti, yra 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Suma yra per daug tiksli. Mažiausias vienetas, kurį galite siųsti, yra 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Naujas tinklas"
:add-network "Pridėti tinklą"
:add-new-network "Pridėti naują tinklą"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.lv)
(def translations
{
;;common
{;;common
:members-title "Dalībnieki"
:not-implemented "!tādas funkcijas pagaidām nav"
:chat-name "Čata nosaukums"
@ -198,10 +197,7 @@
:enter-valid-public-key "Lūdzu ievadi publisko atslēgu, jeb skanē QR kodu"
:contact-already-added "Kontakts jau bija pievienots"
:can-not-add-yourself "Tu nevari pievienot sevi"
:unknown-address "Nezināmā adrese"
;;login
:unknown-address "Nezināmā adrese";;login
:connect "Savienoties"
:address "Adrese"
:password "Parole"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ms)
(def translations
{
;;common
{;;common
:members-title "Ahli"
:not-implemented "!tidak diimplementasikan"
:chat-name "Nama perbualan"
@ -199,10 +198,7 @@
:enter-valid-public-key "Sila masukkan public key yang sah atau imbas kod QR"
:contact-already-added "Kenalan telah ditambah"
:can-not-add-yourself "Anda tidak boleh menambah diri anda sendiri"
:unknown-address "Address tidak diketahui"
;;login
:unknown-address "Address tidak diketahui";;login
:connect "Sambung"
:address "Address"
:password "Kata laluan"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.nb)
(def translations
{
;;common
{;;common
:members-title "Medlemmer"
:not-implemented "!ikke implementert"
:chat-name "Kallenavn"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ne)
(def translations
{
;;common
{;;common
:members-title "सदस्यहरु"
:not-implemented "कार्यान्वयन भएको छैन"
:chat-name "च्याट नाम"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.nl)
(def translations
{
;;common
{;;common
:members-title "Leden"
:not-implemented "!niet geïmplementeerd"
:chat-name "Chatnaam"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.pl)
(def translations
{
;;common
{;;common
:members-title "Użytkownicy"
:not-implemented "nie wprowadzono"
:chat-name "Nazwa czatu"
@ -132,10 +131,7 @@
:address-explication "Być może tutaj powinien znajdować się tekst wyjaśniający, czym jest adres i gdzie go szukać"
:contact-already-added "Kontakt został już dodany"
:can-not-add-yourself "Nie możesz dodać samego siebie"
:unknown-address "Nieznany adres"
;;login
:unknown-address "Nieznany adres";;login
:connect "Połącz"
:address "Adres"
:password "Hasło"
@ -203,11 +199,8 @@
:enter-address "Wprowadź adres"
:send-transaction "Wyślij transakcję"
:delete-contact "Usuń kontakt"
:mute-notifications "Wycisz powiadomienia"
:contact-s {:one "kontakt"
:other "kontakty"}
:mute-notifications "Wycisz powiadomienia" :contact-s {:one "kontakt"
:other "kontakty"}
:next "Dalej"
:from "Z"
:search-chats "Przeszukaj czaty"
@ -226,9 +219,6 @@
:no-statuses-found "Nie znaleziono statusów"
:browsing-open-in-web-browser "Otwórz w przeglądarce"
:delete-group-prompt "To nie będzie miało wpływu na kontakty"
:edit-profile "Edytuj profil"
:empty-topic "Pusty temat"
:edit-profile "Edytuj profil" :empty-topic "Pusty temat"
:to "Do"
:data "Dane"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.pt-br)
(def translations
{
;;common
{;;common
:members-title "Membros"
:not-implemented "não implementado"
:chat-name "Nome do chat"
@ -132,10 +131,7 @@
:address-explication "Talvez aqui deveria haver algum texto explicando o que é um endereço e onde procurá-lo"
:contact-already-added "O contato já foi adicionado"
:can-not-add-yourself "Não é possível adicionar a si mesmo"
:unknown-address "E-mail desconhecido"
;;login
:unknown-address "E-mail desconhecido";;login
:connect "Conectar"
:address "Endereço"
:password "Senha"
@ -203,11 +199,8 @@
:enter-address "Inserir endereço"
:send-transaction "Enviar transação"
:delete-contact "Excluir contato"
:mute-notifications "Silenciar notificações"
:contact-s {:one "contato"
:other "contatos"}
:mute-notifications "Silenciar notificações" :contact-s {:one "contato"
:other "contatos"}
:next "Próximo"
:from "De"
:search-chats "Buscar bate-papos"
@ -226,9 +219,6 @@
:no-statuses-found "Nenhum status encontrado"
:browsing-open-in-web-browser "Abrir no navegador de internet"
:delete-group-prompt "Isso não afetará os contatos"
:edit-profile "Editar perfil"
:empty-topic "Assunto vazio"
:edit-profile "Editar perfil" :empty-topic "Assunto vazio"
:to "Para"
:data "Dados"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.pt-pt)
(def translations
{
;;common
{;;common
:members-title "Membros"
:not-implemented "!não implementado"
:chat-name "Nome no chat"
@ -132,10 +131,7 @@
:address-explication "Talvez aqui devesse aparecer algum texto a explicar o que é um endereço e onde procurá-lo"
:contact-already-added "O contacto já foi adicionado"
:can-not-add-yourself "Não pode adicionar-se a si mesmo"
:unknown-address "Endereço desconhecido"
;;login
:unknown-address "Endereço desconhecido";;login
:connect "Ligar"
:address "Endereço"
:password "Palavra-passe"
@ -203,11 +199,8 @@
:enter-address "Digitar o endereço"
:send-transaction "Enviar a transação"
:delete-contact "Apagar contacto"
:mute-notifications "Silenciar as notificações"
:contact-s {:one "contacto"
:other "Contactos"}
:mute-notifications "Silenciar as notificações" :contact-s {:one "contacto"
:other "Contactos"}
:next "Próximo"
:from "De"
:search-chats "Pesquisar chats"
@ -226,9 +219,6 @@
:no-statuses-found "Nenhum estado encontrado"
:browsing-open-in-web-browser "Abrir no navegador Web"
:delete-group-prompt "Isto não afetará os contactos"
:edit-profile "Editar perfil"
:empty-topic "Tema em branco"
:edit-profile "Editar perfil" :empty-topic "Tema em branco"
:to "Para"
:data "Dados"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ro)
(def translations
{
;;common
{;;common
:members-title "Membri"
:not-implemented "!nu a fost implementat"
:chat-name "Nume chat"
@ -132,10 +131,7 @@
:address-explication "Poate că aici ar trebui să fie un text care să explice ce este o adresă și unde să o cauți"
:contact-already-added "Contactul a fost adăugat deja"
:can-not-add-yourself "Nu te poți adăuga pe tine"
:unknown-address "Adresă necunoscută"
;;login
:unknown-address "Adresă necunoscută";;login
:connect "Conectare"
:address "Adresă"
:password "Parolă"
@ -203,11 +199,8 @@
:enter-address "Introduceți adresa"
:send-transaction "Trimitere tranzacție"
:delete-contact "Ștergere contact"
:mute-notifications "Notificări silențioase"
:contact-s {:one "contact"
:other "contacte"}
:mute-notifications "Notificări silențioase" :contact-s {:one "contact"
:other "contacte"}
:next "Mai departe"
:from "De la"
:search-chats "Căutare discuții"
@ -226,9 +219,6 @@
:no-statuses-found "Niciun status găsit"
:browsing-open-in-web-browser "Deschide în browser web"
:delete-group-prompt "Aceasta nu va afecta contactele"
:edit-profile "Editare profil"
:empty-topic "Subiect gol"
:edit-profile "Editare profil" :empty-topic "Subiect gol"
:to "Către"
:data "Date"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ru)
(def translations
{
;;common
{;;common
:members-title "Участники"
:not-implemented "!не реализовано"
:chat-name "Имя чата"
@ -327,11 +326,7 @@
:wallet-invalid-address "Недействительный адрес: \n {{data}}"
:wallet-browse-photos "Просмотреть Фотографии"
:validation-amount-invalid-number "Сумма недействительна"
:validation-amount-is-too-precise "Слишком много чисел после запятой. Наименьшая сумма, которую вы можете отправить это 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Слишком много чисел после запятой. Наименьшая сумма, которую вы можете отправить это 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Новая сеть"
:add-network "Добавить сеть"
:add-new-network "Добавить новую сеть"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.sl)
(def translations
{
;;common
{;;common
:members-title "Člani"
:not-implemented "!ni implementirano"
:chat-name "Ime za klepet"
@ -132,10 +131,7 @@
:address-explication "Sem morda sodi besedilo, ki razlaga, kaj je naslov ter kje ga najti"
:contact-already-added "Stik je bil že dodan"
:can-not-add-yourself "Sebe ni mogoče dodati"
:unknown-address "Neznan naslov"
;;login
:unknown-address "Neznan naslov";;login
:connect "Poveži"
:address "Naslov"
:password "Geslo"
@ -203,11 +199,8 @@
:enter-address "Vnesi naslov"
:send-transaction "Pošlji transakcijo"
:delete-contact "Izbriši stik"
:mute-notifications "Utišaj obvestila"
:contact-s {:one "stik"
:other "stiki"}
:mute-notifications "Utišaj obvestila" :contact-s {:one "stik"
:other "stiki"}
:next "Naprej"
:from "Od"
:search-chats "Išči klepete"
@ -226,9 +219,6 @@
:no-statuses-found "Ni statusov"
:browsing-open-in-web-browser "Odpri v spletnem brskalniku"
:delete-group-prompt "To ne bo vplivalo na stike"
:edit-profile "Uredi profil"
:empty-topic "Prazna tema"
:edit-profile "Uredi profil" :empty-topic "Prazna tema"
:to "Za"
:data "Podatki"})

View File

@ -1,8 +1,7 @@
(ns status-im.translations.sr-rs-cyrl)
(def translations
{
;;common
{;;common
:members-title "Чланови"
:not-implemented "!није имплементирано"
:chat-name "Назив разговора"
@ -328,11 +327,7 @@
:wallet-invalid-address "Неисправна адреса: \n {{data}}"
:wallet-browse-photos "Претражи слике"
:validation-amount-invalid-number "Износ није исправан број"
:validation-amount-is-too-precise "Износ има превише децимала. Најмања јединица коју можете послати је 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Износ има превише децимала. Најмања јединица коју можете послати је 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Нова мрежа"
:add-network "Додај мрежу"
:add-new-network "Додај нову мрежу"

View File

@ -68,7 +68,7 @@
(defn cyr->lat [cyr]
(cond
(string? cyr) (string/join
(map #(get letter-pairs (str %) (str %)) cyr))
(map #(get letter-pairs (str %) (str %)) cyr))
(map? cyr) (into {}
(map (fn [[k v]] [k (cyr->lat v)]) cyr))
:else nil))

View File

@ -1,8 +1,7 @@
(ns status-im.translations.sv)
(def translations
{
;;common
{;;common
:members-title "Medlemmar"
:not-implemented "!inte implementerad"
:chat-name "Chattnamn"
@ -335,11 +334,7 @@
:wallet-invalid-chain-id "Felaktigt nätverk: \n {{data}}"
:wallet-browse-photos "Bläddra foton"
:validation-amount-invalid-number "Beloppet är inte ett giltigt tal"
:validation-amount-is-too-precise "Summan är för precis Den minsta summan du kan skicka är 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Summan är för precis Den minsta summan du kan skicka är 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Nytt nätverk"
:add-network "Lägg till nätverk"
:add-new-network "Lägg till nytt nätverk"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.sw)
(def translations
{
;;common
{;;common
:members-title "Wanachama"
:not-implemented "!haijatekelezwa"
:chat-name "Jina la gumzo"
@ -137,10 +136,7 @@
:address-explication "Labda hapa kunapaswa kuwa na baadhi ya maandishi kueleza anwani ni nini na ni wapi pa kuitafuta"
:contact-already-added "Tayari mawasiliano yameongezwa"
:can-not-add-yourself "Huwezi kujiongeza mwenyewe"
:unknown-address "Anwani Haijulikani"
;;login
:unknown-address "Anwani Haijulikani";;login
:connect "Unganisha"
:address "Anwani"
:password "Nenosiri"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.th)
(def translations
{
;;common
{;;common
:members-title "สมาชิก"
:not-implemented "!ยังไม่ได้ดำเนินการ"
:chat-name "ชื่อแชท"
@ -132,10 +131,7 @@
:address-explication "บางที ในที่นี้คุณควรกรอกข้อความสักเล็กน้อยเพื่อแสดงที่อยู่หรือสถานที่ที่จะมองหามันได้"
:contact-already-added "ได้มีการเพิ่มผู้ติดต่อนี้แล้ว"
:can-not-add-yourself "คุณไม่สามารถเพิ่มตัวคุณเอง"
:unknown-address "ที่อยู่ที่ไม่ทราบ"
;;login
:unknown-address "ที่อยู่ที่ไม่ทราบ";;login
:connect "เชื่อมต่อ"
:address "ที่อยู่"
:password "รหัสผ่าน"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.tr)
(def translations
{
;;common
{;;common
:members-title "Üyeler"
:not-implemented "Uygulanmadı!"
:chat-name "Sohbet adı"
@ -132,10 +131,7 @@
:address-explication "Burada belki de bir adresin ne olduğu ve bunu bulmak için nereye bakılmasıyla ilgili bazı metinler yer alabilir"
:contact-already-added "Kişi zaten eklendi"
:can-not-add-yourself "Kendinizi ekleyemezsiniz"
:unknown-address "Bilinmeyen adres"
;;login
:unknown-address "Bilinmeyen adres";;login
:connect "Bağlan"
:address "Adres"
:password "Şifre"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.uk)
(def translations
{
;;common
{;;common
:members-title "Учасники"
:not-implemented "!не реалізовано"
:chat-name "Назва чату"
@ -335,11 +334,7 @@
:wallet-invalid-chain-id "Мережа не відповідає: \n {{data}}"
:wallet-browse-photos "Переглянути Фотографії"
:validation-amount-invalid-number "Сума недійсна"
:validation-amount-is-too-precise "Занадто багато цифр після десяткової коми. Найменша сума, яку ви можете надіслати це 1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "Занадто багато цифр після десяткової коми. Найменша сума, яку ви можете надіслати це 1 Wei (1x10^-18 ETH)";; network settings
:new-network "Нова мережа"
:add-network "Додати мережу"
:add-new-network "Додати нову мережу"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.ur)
(def translations
{
;;common
{;;common
:members-title "ممبران"
:not-implemented "نافذ نہیں ہوا!"
:chat-name "چیٹ کا نام"
@ -132,10 +131,7 @@
:address-explication "شائد یہاں آپ کو کچھ لکھنا چاہیے دیکھنے کے لیے کہ پتہ کیا ہے اور اسے کہاں ہونا چاہیے"
:contact-already-added "کانٹیکٹ پہلے سے شامل ہے"
:can-not-add-yourself "آپ خود کو شامل نہیں کر سکتے"
:unknown-address "نامعلوم پتہ"
;;login
:unknown-address "نامعلوم پتہ";;login
:connect "ملیں"
:address "پتہ"
:password "پاسورڈ"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.vi)
(def translations
{
;;common
{;;common
:members-title "Các thành viên"
:not-implemented "!không được thực hiện"
:chat-name "Tên trò chuyện"
@ -132,10 +131,7 @@
:address-explication "Có lẽ ở đây nên có một vài nội dung để giải thích địa chỉ này là gì và phải tìm nó ở đâu"
:contact-already-added "Liên hệ đã được thêm vào"
:can-not-add-yourself "Bạn không thể tự thêm mình"
:unknown-address "Địa chỉ không xác định"
;;login
:unknown-address "Địa chỉ không xác định";;login
:connect "Kết nối"
:address "Địa chỉ"
:password "Mật khẩu"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-hans)
(def translations
{
;;common
{;;common
:members-title "成员"
:not-implemented "!未实现"
:chat-name "聊天名称"
@ -328,11 +327,7 @@
:wallet-invalid-address "无效的地址: \n {{data}}"
:wallet-browse-photos "浏览相册"
:validation-amount-invalid-number "金额不是一个有效的数字"
:validation-amount-is-too-precise "金额过于精确所能发送的最小单位是1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "金额过于精确所能发送的最小单位是1 Wei (1x10^-18 ETH)";; network settings
:new-network "新建网络"
:add-network "添加网络"
:add-new-network "添加新网络"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-hant)
(def translations
{
;;common
{;;common
:members-title "成員"
:not-implemented "!未實現"
:chat-name "聊天名稱"
@ -328,11 +327,7 @@
:wallet-invalid-address "無效的地址: \n {{data}}"
:wallet-browse-photos "瀏覽相冊"
:validation-amount-invalid-number "金額不是一個有效的數字"
:validation-amount-is-too-precise "金額過於精確所能發送的最小單位是1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "金額過於精確所能發送的最小單位是1 Wei (1x10^-18 ETH)";; network settings
:new-network "新建網絡"
:add-network "添加網絡"
:add-new-network "添加新網絡"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-hant-hk)
(def translations
{
;;common
{;;common
:members-title "成員"
:not-implemented "!未實現"
:chat-name "聊天名稱"
@ -328,11 +327,7 @@
:wallet-invalid-address "無效的地址: \n {{data}}"
:wallet-browse-photos "瀏覽相冊"
:validation-amount-invalid-number "金額不是一個有效的數字"
:validation-amount-is-too-precise "金額過於精確所能發送的最小單位是1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "金額過於精確所能發送的最小單位是1 Wei (1x10^-18 ETH)";; network settings
:new-network "新建網絡"
:add-network "添加網絡"
:add-new-network "添加新網絡"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-hant-sg)
(def translations
{
;;common
{;;common
:members-title "成員"
:not-implemented "!未實現"
:chat-name "聊天名稱"
@ -328,11 +327,7 @@
:wallet-invalid-address "無效的地址: \n {{data}}"
:wallet-browse-photos "瀏覽相簿"
:validation-amount-invalid-number "金額不是一個有效的數字"
:validation-amount-is-too-precise "金額過於精確所能傳送的最小單位是1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "金額過於精確所能傳送的最小單位是1 Wei (1x10^-18 ETH)";; network settings
:new-network "新建網路"
:add-network "新增網路"
:add-new-network "新增新網路"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-hant-tw)
(def translations
{
;;common
{;;common
:members-title "成員"
:not-implemented "!未實現"
:chat-name "聊天名稱"
@ -328,11 +327,7 @@
:wallet-invalid-address "無效的地址: \n {{data}}"
:wallet-browse-photos "瀏覽相簿"
:validation-amount-invalid-number "金額不是一個有效的數字"
:validation-amount-is-too-precise "金額過於精確所能傳送的最小單位是1 Wei (1x10^-18 ETH)"
;; network settings
:validation-amount-is-too-precise "金額過於精確所能傳送的最小單位是1 Wei (1x10^-18 ETH)";; network settings
:new-network "新建網路"
:add-network "新增網路"
:add-new-network "新增新網路"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-wuu)
(def translations
{
;;common
{;;common
:members-title "会员"
:not-implemented "!未实现"
:chat-name "聊天名称"
@ -199,10 +198,7 @@
:enter-valid-public-key "请输入有效公钥或扫描QR码"
:contact-already-added "联系人已被添加"
:can-not-add-yourself "您不能添加您自己"
:unknown-address "未知地址"
;;login
:unknown-address "未知地址";;login
:connect "连接"
:address "地址"
:password "密码"

View File

@ -1,8 +1,7 @@
(ns status-im.translations.zh-yue)
(def translations
{
;;common
{;;common
:members-title "會員"
:not-implemented "!未能實現"
:chat-name "用戶名稱"
@ -199,10 +198,7 @@
:enter-valid-public-key "請輸入有效公鑰或掃描QR碼"
:contact-already-added "此聯繫人已添加"
:can-not-add-yourself "你不能添加自己"
:unknown-address "未知地址"
;;login
:unknown-address "未知地址";;login
:connect "連接"
:address "地址"
:password "密碼"

View File

@ -1,5 +1,5 @@
(ns ^{:doc "API to init and stop whisper messaging"}
status-im.transport.core
status-im.transport.core
(:require [cljs.spec.alpha :as spec]
[re-frame.core :as re-frame]
[status-im.constants :as constants]
@ -27,13 +27,13 @@
:sym-key-id sym-key-id}]))
topic (transport.utils/get-topic constants/contact-discovery)]
(handlers-macro/merge-fx cofx
{:shh/add-discovery-filter {:web3 web3
:private-key-id public-key
:topic topic}
:shh/restore-sym-keys {:web3 web3
:transport (:transport/chats db)
:on-success sym-key-added-callback}}
(inbox/initialize-offline-inbox)))))
{:shh/add-discovery-filter {:web3 web3
:private-key-id public-key
:topic topic}
:shh/restore-sym-keys {:web3 web3
:transport (:transport/chats db)
:on-success sym-key-added-callback}}
(inbox/initialize-offline-inbox)))))
;;TODO (yenda) remove once go implements persistence
;;Since symkeys are not persisted, we restore them via add sym-keys,
@ -41,17 +41,17 @@
;;it saves the sym-key-id in app-db to send messages later
;;and starts a filter to receive messages
(handlers/register-handler-fx
::sym-key-added
(fn [{:keys [db]} [_ {:keys [chat-id sym-key sym-key-id]}]]
(let [web3 (:web3 db)
{:keys [topic] :as chat} (get-in db [:transport/chats chat-id])]
{:db (assoc-in db [:transport/chats chat-id :sym-key-id] sym-key-id)
:data-store.transport/save {:chat-id chat-id
:chat (assoc chat :sym-key-id sym-key-id)}
:shh/add-filter {:web3 web3
:sym-key-id sym-key-id
:topic topic
:chat-id chat-id}})))
::sym-key-added
(fn [{:keys [db]} [_ {:keys [chat-id sym-key sym-key-id]}]]
(let [web3 (:web3 db)
{:keys [topic] :as chat} (get-in db [:transport/chats chat-id])]
{:db (assoc-in db [:transport/chats chat-id :sym-key-id] sym-key-id)
:data-store.transport/save {:chat-id chat-id
:chat (assoc chat :sym-key-id sym-key-id)}
:shh/add-filter {:web3 web3
:sym-key-id sym-key-id
:topic topic
:chat-id chat-id}})))
;;TODO (yenda) uncomment and rework once go implements persistence
#_(doseq [[chat-id {:keys [sym-key-id topic] :as chat}] transport]

View File

@ -1,5 +1,5 @@
(ns ^{:doc "DB spec and utils for the transport layer"}
status-im.transport.db
status-im.transport.db
(:require-macros [status-im.utils.db :refer [allowed-keys]])
(:require [cljs.spec.alpha :as spec]))
@ -22,7 +22,6 @@
(spec/def :transport/chats (spec/map-of :global/not-empty-string :transport/chat))
(spec/def :transport/discovery-filter (spec/nilable any?))
(defn create-chat
"Initialize datastructure for chat representation at the transport level
Currently only :topic is actually used"

View File

@ -1,5 +1,5 @@
(ns ^{:doc "API for whisper filters"}
status-im.transport.filters
status-im.transport.filters
(:require [re-frame.core :as re-frame]
[status-im.utils.handlers :as handlers]
[status-im.transport.utils :as utils]
@ -28,44 +28,44 @@
(add-shh-filter! web3 options callback)))
(re-frame/reg-fx
:shh/add-filter
(fn [{:keys [web3 sym-key-id topic chat-id]}]
(when-let [filter (add-filter! web3
{:topics [topic]
:symKeyID sym-key-id}
(fn [js-error js-message]
(re-frame/dispatch [:protocol/receive-whisper-message js-error js-message chat-id])))]
(re-frame/dispatch [::filter-added chat-id filter]))))
:shh/add-filter
(fn [{:keys [web3 sym-key-id topic chat-id]}]
(when-let [filter (add-filter! web3
{:topics [topic]
:symKeyID sym-key-id}
(fn [js-error js-message]
(re-frame/dispatch [:protocol/receive-whisper-message js-error js-message chat-id])))]
(re-frame/dispatch [::filter-added chat-id filter]))))
(handlers/register-handler-db
::filter-added
[re-frame/trim-v]
(fn [db [chat-id filter]]
(assoc-in db [:transport/chats chat-id :filter] filter)))
::filter-added
[re-frame/trim-v]
(fn [db [chat-id filter]]
(assoc-in db [:transport/chats chat-id :filter] filter)))
(re-frame/reg-fx
:shh/add-discovery-filter
(fn [{:keys [web3 private-key-id topic]}]
(when-let [filter (add-filter! web3
{:topics [topic]
:privateKeyID private-key-id}
(fn [js-error js-message]
(re-frame/dispatch [:protocol/receive-whisper-message js-error js-message])))]
(re-frame/dispatch [::discovery-filter-added filter]))))
:shh/add-discovery-filter
(fn [{:keys [web3 private-key-id topic]}]
(when-let [filter (add-filter! web3
{:topics [topic]
:privateKeyID private-key-id}
(fn [js-error js-message]
(re-frame/dispatch [:protocol/receive-whisper-message js-error js-message])))]
(re-frame/dispatch [::discovery-filter-added filter]))))
(handlers/register-handler-db
::discovery-filter-added
[re-frame/trim-v]
(fn [db [filter]]
(assoc db :transport/discovery-filter filter)))
::discovery-filter-added
[re-frame/trim-v]
(fn [db [filter]]
(assoc db :transport/discovery-filter filter)))
(re-frame/reg-fx
:shh/remove-filter
(fn [filter]
(when filter (remove-filter! filter))))
:shh/remove-filter
(fn [filter]
(when filter (remove-filter! filter))))
(re-frame/reg-fx
:shh/remove-filters
(fn [filters]
(doseq [filter filters]
(remove-filter! filter))))
:shh/remove-filters
(fn [filters]
(doseq [filter filters]
(remove-filter! filter))))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Events for message handling"}
status-im.transport.handlers
status-im.transport.handlers
(:require [re-frame.core :as re-frame]
[status-im.utils.handlers :as handlers]
[status-im.transport.message.core :as message]
@ -18,27 +18,27 @@
[status-im.transport.message.v1.group-chat :as v1.group-chat]))
(handlers/register-handler-fx
:protocol/receive-whisper-message
[re-frame/trim-v (re-frame/inject-cofx :random-id)]
(fn [cofx [js-error js-message chat-id]]
(let [{:keys [payload sig]} (js->clj js-message :keywordize-keys true)
status-message (-> payload
transport.utils/to-utf8
transit/deserialize)]
(when (and sig status-message)
(message/receive status-message (or chat-id sig) sig cofx)))))
:protocol/receive-whisper-message
[re-frame/trim-v (re-frame/inject-cofx :random-id)]
(fn [cofx [js-error js-message chat-id]]
(let [{:keys [payload sig]} (js->clj js-message :keywordize-keys true)
status-message (-> payload
transport.utils/to-utf8
transit/deserialize)]
(when (and sig status-message)
(message/receive status-message (or chat-id sig) sig cofx)))))
(handlers/register-handler-fx
:protocol/send-status-message-success
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [_ resp]]
(log/debug :send-status-message-success resp)))
:protocol/send-status-message-success
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [_ resp]]
(log/debug :send-status-message-success resp)))
(handlers/register-handler-fx
:protocol/send-status-message-error
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [err]]
(log/error :send-status-message-error err)))
:protocol/send-status-message-error
[re-frame/trim-v]
(fn [{:keys [db] :as cofx} [err]]
(log/error :send-status-message-error err)))
(handlers/register-handler-fx
:contact/send-new-sym-key
@ -91,7 +91,6 @@
:timestamp (str (inst-ms (js/Date.)))})
chat-id)))))
(handlers/register-handler-fx
:group/unsubscribe-from-chat
[re-frame/trim-v]

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Offline inboxing events and API"}
status-im.transport.inbox
status-im.transport.inbox
(:require [re-frame.core :as re-frame]
[status-im.native-module.core :as status]
[status-im.utils.handlers :as handlers]
@ -122,111 +122,109 @@
(error-fn err topic))))))))
(re-frame/reg-fx
::add-peer
(fn [{:keys [wnode]}]
(add-peer wnode
#(re-frame/dispatch [:inbox/fetch-peers])
#(log/error "offline inbox: add-peer error" %))))
::add-peer
(fn [{:keys [wnode]}]
(add-peer wnode
#(re-frame/dispatch [:inbox/fetch-peers])
#(log/error "offline inbox: add-peer error" %))))
(re-frame/reg-fx
::fetch-peers
(fn [retries]
(fetch-peers #(re-frame/dispatch [:inbox/check-peer-added % retries])
#(log/error "offline inbox: fetch-peers error" %))))
::fetch-peers
(fn [retries]
(fetch-peers #(re-frame/dispatch [:inbox/check-peer-added % retries])
#(log/error "offline inbox: fetch-peers error" %))))
(re-frame/reg-fx
::mark-trusted-peer
(fn [{:keys [wnode web3]}]
(mark-trusted-peer web3
wnode
#(re-frame/dispatch [:inbox/connection-success %])
#(log/error "offline inbox: mark-trusted-peer error" % wnode))))
(re-frame/reg-fx
::request-messages
(fn [{:keys [wnode topics to from sym-key-id web3]}]
(request-messages web3
::mark-trusted-peer
(fn [{:keys [wnode web3]}]
(mark-trusted-peer web3
wnode
topics
to
from
sym-key-id
#(log/info "offline inbox: request-messages response" %)
#(log/error "offline inbox: request-messages error" %1 %2 to from))))
#(re-frame/dispatch [:inbox/connection-success %])
#(log/error "offline inbox: mark-trusted-peer error" % wnode))))
(re-frame/reg-fx
::request-messages
(fn [{:keys [wnode topics to from sym-key-id web3]}]
(request-messages web3
wnode
topics
to
from
sym-key-id
#(log/info "offline inbox: request-messages response" %)
#(log/error "offline inbox: request-messages error" %1 %2 to from))))
;;;; Handlers
(handlers/register-handler-fx
:inbox/add-peer
:inbox/add-peer
;; This event adds a wnode to the list of peers
(fn [_ [_ wnode]]
{::add-peer {:wnode wnode}}))
(fn [_ [_ wnode]]
{::add-peer {:wnode wnode}}))
(handlers/register-handler-fx
:inbox/fetch-peers
:inbox/fetch-peers
;; This event fetches the list of peers
;; We want it to check if the node has been added
(fn [_ [_ retries]]
{::fetch-peers (or retries 0)}))
(fn [_ [_ retries]]
{::fetch-peers (or retries 0)}))
(handlers/register-handler-fx
:inbox/check-peer-added
:inbox/check-peer-added
;; We check if the wnode is part of the peers list
;; if not we dispatch a new fetch-peer event for later
(fn [{:keys [db]} [_ peers retries]]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)]
(log/info "offline inbox: fetch-peers response" peers)
(if (registered-peer? peers wnode)
{::mark-trusted-peer {:web3 web3
:wnode wnode}}
(do
(log/info "Peer" wnode "is not registered. Retrying fetch peers.")
(let [delay (if (< retries 3) 300 5000)]
(if (> retries 10)
(do (log/error :mailserver-connection-error)
(utils/show-popup (i18n/label :t/error)
(i18n/label :t/mailserver-connection-error)))
{:dispatch-later [{:ms delay :dispatch [:inbox/fetch-peers (inc retries)]}]})))))))
(fn [{:keys [db]} [_ peers retries]]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)]
(log/info "offline inbox: fetch-peers response" peers)
(if (registered-peer? peers wnode)
{::mark-trusted-peer {:web3 web3
:wnode wnode}}
(do
(log/info "Peer" wnode "is not registered. Retrying fetch peers.")
(let [delay (if (< retries 3) 300 5000)]
(if (> retries 10)
(do (log/error :mailserver-connection-error)
(utils/show-popup (i18n/label :t/error)
(i18n/label :t/mailserver-connection-error)))
{:dispatch-later [{:ms delay :dispatch [:inbox/fetch-peers (inc retries)]}]})))))))
(handlers/register-handler-fx
:inbox/get-sym-key
(fn [{:keys [db]} _]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)
password (:inbox/password db)]
{:shh/generate-sym-key-from-password {:password password
:web3 web3
:on-success (fn [_ sym-key-id]
(re-frame/dispatch [:inbox/get-sym-key-success sym-key-id]))
:on-error #(log/error "offline inbox: get-sym-key error" %)}})))
:inbox/get-sym-key
(fn [{:keys [db]} _]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)
password (:inbox/password db)]
{:shh/generate-sym-key-from-password {:password password
:web3 web3
:on-success (fn [_ sym-key-id]
(re-frame/dispatch [:inbox/get-sym-key-success sym-key-id]))
:on-error #(log/error "offline inbox: get-sym-key error" %)}})))
(handlers/register-handler-fx
:inbox/get-sym-key-success
(fn [{:keys [db]} [_ sym-key-id]]
{:db (assoc db :inbox/sym-key-id sym-key-id)}))
:inbox/get-sym-key-success
(fn [{:keys [db]} [_ sym-key-id]]
{:db (assoc db :inbox/sym-key-id sym-key-id)}))
(handlers/register-handler-fx
:inbox/connection-success
(fn [{:keys [db]} _]
{:db (assoc db :mailserver-status :connected)}))
:inbox/connection-success
(fn [{:keys [db]} _]
{:db (assoc db :mailserver-status :connected)}))
(handlers/register-handler-fx
:inbox/request-messages
(fn [{:keys [db now]} [_ {:keys [from topics]}]]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)
topics (or topics
(map #(:topic %) (vals (:transport/chats db))))
from (or from (:inbox/last-request db) nil)
sym-key-id (:inbox/sym-key-id db)]
{::request-messages {:wnode wnode
:topics topics
:inbox/request-messages
(fn [{:keys [db now]} [_ {:keys [from topics]}]]
(let [web3 (:web3 db)
wnode (get-current-wnode-address db)
topics (or topics
(map #(:topic %) (vals (:transport/chats db))))
from (or from (:inbox/last-request db) nil)
sym-key-id (:inbox/sym-key-id db)]
{::request-messages {:wnode wnode
:topics topics
;;TODO (yenda) fix from, right now mailserver is dropping us
;;when we send a requestMessage with a from field
;;:from from
:sym-key-id sym-key-id
:web3 web3}
:db (assoc db :inbox/last-request (quot now 1000))})))
:sym-key-id sym-key-id
:web3 web3}
:db (assoc db :inbox/last-request (quot now 1000))})))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Definition of the StatusMessage protocol"}
status-im.transport.message.core)
status-im.transport.message.core)
(defprotocol StatusMessage
"Protocol for the messages that are sent through the transport layer"

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Transit custom readers and writers, required when adding a new record implementing StatusMessage protocol"}
status-im.transport.message.transit
status-im.transport.message.transit
(:require [status-im.transport.message.v1.contact :as v1.contact]
[status-im.transport.message.v1.protocol :as v1.protocol]
[status-im.transport.message.v1.group-chat :as v1.group-chat]
@ -111,7 +111,6 @@
"g3" (fn [_]
(v1.group-chat/GroupLeave.))}}))
(defn serialize
"Serializes a record implementing the StatusMessage protocol using the custom writers"
[o]

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Contact request and update API"}
status-im.transport.message.v1.contact
status-im.transport.message.v1.contact
(:require [re-frame.core :as re-frame]
[status-im.transport.message.core :as message]
[status-im.transport.message.v1.protocol :as protocol]
@ -22,10 +22,10 @@
:topic topic
:message message}]))]
(handlers-macro/merge-fx cofx
{:shh/add-new-sym-key {:web3 (get-in cofx [:db :web3])
:sym-key sym-key
:on-success on-success}}
(protocol/init-chat chat-id topic)))))
{:shh/add-new-sym-key {:web3 (get-in cofx [:db :web3])
:sym-key sym-key
:on-success on-success}}
(protocol/init-chat chat-id topic)))))
(defrecord ContactRequest [name profile-image address fcm-token]
message/StatusMessage
@ -40,33 +40,33 @@
:topic topic
:message this}]))]
(handlers-macro/merge-fx cofx
{:shh/get-new-sym-key {:web3 (:web3 db)
:on-success on-success}}
(protocol/init-chat chat-id topic)
#_(protocol/requires-ack message-id chat-id))))
{:shh/get-new-sym-key {:web3 (:web3 db)
:on-success on-success}}
(protocol/init-chat chat-id topic)
#_(protocol/requires-ack message-id chat-id))))
(receive [this chat-id signature {:keys [db] :as cofx}]
(let [message-id (transport.utils/message-id this)]
(when (protocol/is-new? message-id)
(handlers-macro/merge-fx cofx
#_(protocol/ack message-id chat-id)
(contacts/receive-contact-request signature
this))))))
#_(protocol/ack message-id chat-id)
(contacts/receive-contact-request signature
this))))))
(defrecord ContactRequestConfirmed [name profile-image address fcm-token]
message/StatusMessage
(send [this chat-id cofx]
(let [message-id (transport.utils/message-id this)]
(handlers-macro/merge-fx cofx
#_(protocol/requires-ack message-id chat-id)
(protocol/send {:chat-id chat-id
:payload this}))))
#_(protocol/requires-ack message-id chat-id)
(protocol/send {:chat-id chat-id
:payload this}))))
(receive [this chat-id signature cofx]
(let [message-id (transport.utils/message-id this)]
(when (protocol/is-new? message-id)
(handlers-macro/merge-fx cofx
#_(protocol/ack message-id chat-id)
(contacts/receive-contact-request-confirmation signature
this))))))
#_(protocol/ack message-id chat-id)
(contacts/receive-contact-request-confirmation signature
this))))))
(defrecord ContactUpdate [name profile-image]
message/StatusMessage
@ -74,12 +74,12 @@
(let [message-id (transport.utils/message-id this)
public-keys (remove nil? (map :public-key (vals (:contacts/contacts db))))]
(handlers-macro/merge-fx cofx
(protocol/multi-send-with-pubkey {:public-keys public-keys
:payload this}))))
(protocol/multi-send-with-pubkey {:public-keys public-keys
:payload this}))))
(receive [this chat-id signature cofx]
(let [message-id (transport.utils/message-id this)]
(when (protocol/is-new? message-id)
(handlers-macro/merge-fx cofx
(contacts/receive-contact-update chat-id
signature
this))))))
(contacts/receive-contact-update chat-id
signature
this))))))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Group chat API"}
status-im.transport.message.v1.group-chat
status-im.transport.message.v1.group-chat
(:require [clojure.set :as set]
[re-frame.core :as re-frame]
[status-im.utils.handlers-macro :as handlers-macro]
@ -11,7 +11,6 @@
[status-im.transport.message.v1.protocol :as protocol]
[status-im.transport.utils :as transport.utils]))
;; NOTE: We ignore the chat-id from the send and receive method.
;; The chat-id is usually deduced from the filter the message comes from but not in that case because it is sent
;; individually to each participant of the group.
@ -27,15 +26,15 @@
cofx)))
(receive [this _ signature {:keys [db] :as cofx}]
(handlers-macro/merge-fx cofx
{:shh/add-new-sym-key {:web3 (:web3 db)
:sym-key sym-key
:on-success (fn [sym-key sym-key-id]
(re-frame/dispatch [:group/add-new-sym-key {:chat-id chat-id
:signature signature
:sym-key sym-key
:sym-key-id sym-key-id
:message message}]))}}
(protocol/init-chat chat-id))))
{:shh/add-new-sym-key {:web3 (:web3 db)
:sym-key sym-key
:on-success (fn [sym-key sym-key-id]
(re-frame/dispatch [:group/add-new-sym-key {:chat-id chat-id
:signature signature
:sym-key sym-key
:sym-key-id sym-key-id
:message message}]))}}
(protocol/init-chat chat-id))))
(defn- user-is-group-admin? [chat-id cofx]
(= (get-in cofx [:db :chats chat-id :group-admin])
@ -46,9 +45,9 @@
{:shh/get-new-sym-key {:web3 (get-in cofx [:db :web3])
:on-success (fn [sym-key sym-key-id]
(re-frame/dispatch [:group/send-new-sym-key {:chat-id chat-id
:sym-key sym-key
:sym-key-id sym-key-id
:message message}]))}}))
:sym-key sym-key
:sym-key-id sym-key-id
:message message}]))}}))
(defn- prepare-system-message [admin-name added-participants removed-participants contacts]
(let [added-participants-names (map #(get-in contacts [% :name] %) added-participants)
@ -78,8 +77,8 @@
message/StatusMessage
(send [this chat-id cofx]
(handlers-macro/merge-fx cofx
(init-chat-if-new chat-id)
(send-new-group-key this chat-id)))
(init-chat-if-new chat-id)
(send-new-group-key this chat-id)))
(receive [this chat-id signature {:keys [now db random-id] :as cofx}]
(let [me (:current-public-key db)]
;; we have to check if we already have a chat, or it's a new one
@ -92,22 +91,22 @@
group-admin)]
(if (removed me) ;; we were removed
(handlers-macro/merge-fx cofx
(models.message/receive
(models.message/system-message chat-id random-id now
(str admin-name " " (i18n/label :t/removed-from-chat))))
(models.chat/upsert-chat {:chat-id chat-id
:removed-from-at now
:is-active false})
(transport.utils/unsubscribe-from-chat chat-id))
(models.message/receive
(models.message/system-message chat-id random-id now
(str admin-name " " (i18n/label :t/removed-from-chat))))
(models.chat/upsert-chat {:chat-id chat-id
:removed-from-at now
:is-active false})
(transport.utils/unsubscribe-from-chat chat-id))
(handlers-macro/merge-fx cofx
(models.message/receive
(models.message/system-message chat-id random-id now
(prepare-system-message admin-name
added
removed
(:contacts/contacts db))))
(group/participants-added chat-id added)
(group/participants-removed chat-id removed)))))
(models.message/receive
(models.message/system-message chat-id random-id now
(prepare-system-message admin-name
added
removed
(:contacts/contacts db))))
(group/participants-added chat-id added)
(group/participants-removed chat-id removed)))))
;; first time we hear about chat -> create it if we are among participants
(when (get (set participants) me)
(models.chat/add-group-chat chat-id chat-name signature participants cofx))))))
@ -125,9 +124,9 @@
signature)]
(when (get-in db [:chats chat-id]) ;; chat is present
(handlers-macro/merge-fx cofx
(models.message/receive
(models.message/system-message chat-id random-id now
(str participant-leaving-name " " (i18n/label :t/left))))
(group/participants-removed chat-id #{signature})
(send-new-group-key nil chat-id))))))
(models.message/receive
(models.message/system-message chat-id random-id now
(str participant-leaving-name " " (i18n/label :t/left))))
(group/participants-removed chat-id #{signature})
(send-new-group-key nil chat-id))))))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Protocol API and protocol utils"}
status-im.transport.message.v1.protocol
status-im.transport.message.v1.protocol
(:require [status-im.utils.config :as config]
[status-im.constants :as constants]
[status-im.chat.core :as chat]

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Public chat API"}
status-im.transport.message.v1.public-chat
status-im.transport.message.v1.public-chat
(:require [re-frame.core :as re-frame]
[status-im.utils.handlers :as handlers]
[status-im.utils.handlers-macro :as handlers-macro]
@ -19,25 +19,25 @@
:sym-key sym-key
:sym-key-id sym-key-id}]))]
(handlers-macro/merge-fx cofx
{:shh/generate-sym-key-from-password {:web3 (:web3 db)
:password chat-id
:on-success on-success}}
(protocol/init-chat chat-id)))))
{:shh/generate-sym-key-from-password {:web3 (:web3 db)
:password chat-id
:on-success on-success}}
(protocol/init-chat chat-id)))))
(handlers/register-handler-fx
::add-new-sym-key
(fn [{:keys [db] :as cofx} [_ {:keys [sym-key-id sym-key chat-id]}]]
(let [{:keys [web3]} db
topic (transport.utils/get-topic chat-id)]
{:db (assoc-in db [:transport/chats chat-id :sym-key-id] sym-key-id)
:shh/add-filter {:web3 web3
:sym-key-id sym-key-id
:topic topic
:chat-id chat-id}
:data-store.transport/save {:chat-id chat-id
:chat (-> (get-in db [:transport/chats chat-id])
(assoc :sym-key-id sym-key-id)
::add-new-sym-key
(fn [{:keys [db] :as cofx} [_ {:keys [sym-key-id sym-key chat-id]}]]
(let [{:keys [web3]} db
topic (transport.utils/get-topic chat-id)]
{:db (assoc-in db [:transport/chats chat-id :sym-key-id] sym-key-id)
:shh/add-filter {:web3 web3
:sym-key-id sym-key-id
:topic topic
:chat-id chat-id}
:data-store.transport/save {:chat-id chat-id
:chat (-> (get-in db [:transport/chats chat-id])
(assoc :sym-key-id sym-key-id)
;;TODO (yenda) remove once go implements persistence
(assoc :sym-key sym-key))}
:dispatch [:inbox/request-messages {:topics [topic]
:from 0}]})))
(assoc :sym-key sym-key))}
:dispatch [:inbox/request-messages {:topics [topic]
:from 0}]})))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Message caching API for message deduplication"}
status-im.transport.message-cache
status-im.transport.message-cache
(:refer-clojure :exclude [exists?]))
(defonce messages-set (atom #{}))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Whisper API and events for managing keys and posting messages"}
status-im.transport.shh
status-im.transport.shh
(:require [taoensso.timbre :as log]
[re-frame.core :as re-frame]
[status-im.transport.utils :as transport.utils]
@ -16,11 +16,11 @@
(on-error "web3 not available.")))
(re-frame/reg-fx
:shh/get-new-key-pair
(fn [{:keys [web3 success-event error-event]}]
(get-new-key-pair {:web3 web3
:on-success #(re-frame/dispatch [success-event %])
:on-error #(re-frame/dispatch [error-event %])})))
:shh/get-new-key-pair
(fn [{:keys [web3 success-event error-event]}]
(get-new-key-pair {:web3 web3
:on-success #(re-frame/dispatch [success-event %])
:on-error #(re-frame/dispatch [error-event %])})))
(defn get-public-key [{:keys [web3 key-pair-id on-success on-error]}]
(if (and web3 key-pair-id)
@ -33,12 +33,12 @@
(on-error "web3 or key-pair id not available.")))
(re-frame/reg-fx
:shh/get-public-key
(fn [{:keys [web3 key-pair-id success-event error-event]}]
(get-public-key {:web3 web3
:key-pair-id key-pair-id
:on-success #(re-frame/dispatch [success-event %])
:on-error #(re-frame/dispatch [error-event %])})))
:shh/get-public-key
(fn [{:keys [web3 key-pair-id success-event error-event]}]
(get-public-key {:web3 web3
:key-pair-id key-pair-id
:on-success #(re-frame/dispatch [success-event %])
:on-error #(re-frame/dispatch [error-event %])})))
(defn generate-sym-key-from-password
[{:keys [web3 password on-success on-error]}]
@ -59,16 +59,16 @@
(on-error err))))))
(re-frame/reg-fx
:shh/post
(fn [{:keys [web3 message success-event error-event]
:or {error-event :protocol/send-status-message-error}}]
(post-message {:web3 web3
:whisper-message (update message :payload (comp transport.utils/from-utf8
transit/serialize))
:on-success (if success-event
#(re-frame/dispatch (conj success-event %))
#(log/debug :shh/post-success))
:on-error #(re-frame/dispatch [error-event %])})))
:shh/post
(fn [{:keys [web3 message success-event error-event]
:or {error-event :protocol/send-status-message-error}}]
(post-message {:web3 web3
:whisper-message (update message :payload (comp transport.utils/from-utf8
transit/serialize))
:on-success (if success-event
#(re-frame/dispatch (conj success-event %))
#(log/debug :shh/post-success))
:on-error #(re-frame/dispatch [error-event %])})))
;; This event params contain a recipients key because it's a vector of map with public-key and topic keys.
;; the :shh/post event has public-key and topic keys at the top level of the args map.
@ -77,20 +77,20 @@
;; We want to change the symmetric key but we can't do that in the group topic with the old key
;; otherwise leavers can still eavesdrop / joiners can read past history."
(re-frame/reg-fx
:shh/multi-post
(fn [{:keys [web3 message recipients success-event error-event]
:or {error-event :protocol/send-status-message-error}}]
(let [whisper-message (update message :payload (comp transport.utils/from-utf8
transit/serialize))]
(doseq [{:keys [sym-key-id topic]} recipients]
(post-message {:web3 web3
:whisper-message (assoc whisper-message
:topic topic
:symKeyID sym-key-id)
:on-success (if success-event
#(re-frame/dispatch success-event)
#(log/debug :shh/post-success))
:on-error #(re-frame/dispatch [error-event %])})))))
:shh/multi-post
(fn [{:keys [web3 message recipients success-event error-event]
:or {error-event :protocol/send-status-message-error}}]
(let [whisper-message (update message :payload (comp transport.utils/from-utf8
transit/serialize))]
(doseq [{:keys [sym-key-id topic]} recipients]
(post-message {:web3 web3
:whisper-message (assoc whisper-message
:topic topic
:symKeyID sym-key-id)
:on-success (if success-event
#(re-frame/dispatch success-event)
#(log/debug :shh/post-success))
:on-error #(re-frame/dispatch [error-event %])})))))
(defn add-sym-key
[{:keys [web3 sym-key on-success on-error]}]
@ -122,48 +122,47 @@
(defn log-error [error]
(log/error :shh/get-new-sym-key-error error))
;;TODO (yenda) remove once go implements persistence
(re-frame/reg-fx
:shh/restore-sym-keys
(fn [{:keys [web3 transport on-success]}]
(doseq [[chat-id {:keys [sym-key]}] transport]
(add-sym-key {:web3 web3
:sym-key sym-key
:on-success (fn [sym-key-id]
(on-success chat-id sym-key sym-key-id))
:on-error log-error}))))
:shh/restore-sym-keys
(fn [{:keys [web3 transport on-success]}]
(doseq [[chat-id {:keys [sym-key]}] transport]
(add-sym-key {:web3 web3
:sym-key sym-key
:on-success (fn [sym-key-id]
(on-success chat-id sym-key sym-key-id))
:on-error log-error}))))
(re-frame/reg-fx
:shh/add-new-sym-key
(fn [{:keys [web3 sym-key on-success]}]
(add-sym-key {:web3 web3
:sym-key sym-key
:on-success (fn [sym-key-id]
(on-success sym-key sym-key-id))
:on-error log-error})))
:shh/add-new-sym-key
(fn [{:keys [web3 sym-key on-success]}]
(add-sym-key {:web3 web3
:sym-key sym-key
:on-success (fn [sym-key-id]
(on-success sym-key sym-key-id))
:on-error log-error})))
(re-frame/reg-fx
:shh/get-new-sym-key
(fn [{:keys [web3 on-success]}]
(new-sym-key {:web3 web3
:on-success (fn [sym-key-id]
(get-sym-key {:web3 web3
:sym-key-id sym-key-id
:on-success (fn [sym-key]
(on-success sym-key sym-key-id))
:on-error log-error}))
:on-error log-error})))
:shh/get-new-sym-key
(fn [{:keys [web3 on-success]}]
(new-sym-key {:web3 web3
:on-success (fn [sym-key-id]
(get-sym-key {:web3 web3
:sym-key-id sym-key-id
:on-success (fn [sym-key]
(on-success sym-key sym-key-id))
:on-error log-error}))
:on-error log-error})))
(re-frame/reg-fx
:shh/generate-sym-key-from-password
(fn [{:keys [web3 password on-success]}]
(generate-sym-key-from-password {:web3 web3
:password password
:on-success (fn [sym-key-id]
(get-sym-key {:web3 web3
:sym-key-id sym-key-id
:on-success (fn [sym-key]
(on-success sym-key sym-key-id))
:on-error log-error}))
:on-error log-error})))
:shh/generate-sym-key-from-password
(fn [{:keys [web3 password on-success]}]
(generate-sym-key-from-password {:web3 web3
:password password
:on-success (fn [sym-key-id]
(get-sym-key {:web3 web3
:sym-key-id sym-key-id
:on-success (fn [sym-key]
(on-success sym-key sym-key-id))
:on-error log-error}))
:on-error log-error})))

View File

@ -1,5 +1,5 @@
(ns ^{:doc "Utils for transport layer"}
status-im.transport.utils
status-im.transport.utils
(:require [cljs-time.coerce :refer [to-long]]
[cljs-time.core :refer [now]]
[clojure.string :as string]