reformat remaining namespaces
This commit is contained in:
parent
6fc03fc217
commit
8c1cd9d3d4
|
@ -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)
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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)])))
|
||||
|
|
|
@ -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)))))))
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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}}))
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -52,20 +52,20 @@
|
|||
(generate-hiccup markup nil {}))
|
||||
([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))
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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))
|
||||
|
||||
|
|
|
@ -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)))
|
||||
|
|
|
@ -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}))
|
||||
|
|
|
@ -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]})))
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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 "كلمة مرور"
|
||||
|
|
|
@ -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 "Пароль"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 "Προσθήκη νέου δικτύου"
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
(ns status-im.translations.en)
|
||||
|
||||
(def translations
|
||||
{
|
||||
;;common
|
||||
{;;common
|
||||
:members-title "Members"
|
||||
:not-implemented "!not implemented"
|
||||
:chat-name "Chat name"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 "סיסמא"
|
||||
|
|
|
@ -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 "डेटा"})
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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 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 "新しいネットワークを追加"
|
||||
|
|
|
@ -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 "새 네트워크 추가"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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ą"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
(ns status-im.translations.nb)
|
||||
|
||||
(def translations
|
||||
{
|
||||
;;common
|
||||
{;;common
|
||||
:members-title "Medlemmer"
|
||||
:not-implemented "!ikke implementert"
|
||||
:chat-name "Kallenavn"
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
(ns status-im.translations.ne)
|
||||
|
||||
(def translations
|
||||
{
|
||||
;;common
|
||||
{;;common
|
||||
:members-title "सदस्यहरु"
|
||||
:not-implemented "कार्यान्वयन भएको छैन"
|
||||
:chat-name "च्याट नाम"
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
(ns status-im.translations.nl)
|
||||
|
||||
(def translations
|
||||
{
|
||||
;;common
|
||||
{;;common
|
||||
:members-title "Leden"
|
||||
:not-implemented "!niet geïmplementeerd"
|
||||
:chat-name "Chatnaam"
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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 "Добавить новую сеть"
|
||||
|
|
|
@ -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"})
|
||||
|
|
|
@ -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 "Додај нову мрежу"
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 "รหัสผ่าน"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 "Додати нову мережу"
|
||||
|
|
|
@ -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 "پاسورڈ"
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 "添加新网络"
|
||||
|
|
|
@ -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 "添加新網絡"
|
||||
|
|
|
@ -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 "添加新網絡"
|
||||
|
|
|
@ -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 "新增新網路"
|
||||
|
|
|
@ -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 "新增新網路"
|
||||
|
|
|
@ -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 "密码"
|
||||
|
|
|
@ -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 "密碼"
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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))))
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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))})))
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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))))))
|
||||
|
|
|
@ -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))))))
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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}]})))
|
||||
|
|
|
@ -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 #{}))
|
||||
|
|
|
@ -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})))
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue