2017-09-05 14:14:45 +00:00
|
|
|
(ns status-im.native-module.core
|
2020-05-05 14:18:23 +00:00
|
|
|
(:require [re-frame.core :as re-frame]
|
2019-09-07 12:57:22 +00:00
|
|
|
[status-im.utils.db :as utils.db]
|
2019-09-04 20:59:44 +00:00
|
|
|
[status-im.ui.components.react :as react]
|
2019-09-04 18:59:41 +00:00
|
|
|
[status-im.utils.platform :as platform]
|
2019-11-15 08:09:17 +00:00
|
|
|
[status-im.utils.types :as types]
|
2019-09-07 12:57:22 +00:00
|
|
|
[taoensso.timbre :as log]
|
|
|
|
["react-native" :as react-native]))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn status []
|
2019-09-07 12:57:22 +00:00
|
|
|
(when (exists? (.-NativeModules react-native))
|
|
|
|
(.-Status ^js (.-NativeModules react-native))))
|
2017-09-05 14:14:45 +00:00
|
|
|
|
|
|
|
(def adjust-resize 16)
|
|
|
|
|
2019-09-04 18:59:41 +00:00
|
|
|
(defn clear-web-data []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] clear-web-data")
|
2019-09-04 18:59:41 +00:00
|
|
|
(when (status)
|
2019-09-07 12:57:22 +00:00
|
|
|
(.clearCookies ^js (status))
|
|
|
|
(.clearStorageAPIs ^js (status))))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
2020-07-09 10:14:38 +00:00
|
|
|
(defn init-keystore [key-uid callback]
|
|
|
|
(log/debug "[native-module] init-keystore" key-uid)
|
|
|
|
(.initKeystore ^js (status) key-uid callback))
|
2019-07-31 16:10:38 +00:00
|
|
|
|
2019-08-01 20:11:59 +00:00
|
|
|
(defn open-accounts [callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] open-accounts")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.openAccounts ^js (status) #(callback (types/json->clj %))))
|
2017-08-21 14:49:31 +00:00
|
|
|
|
2019-09-04 18:59:41 +00:00
|
|
|
(defn prepare-dir-and-update-config
|
2020-07-09 10:14:38 +00:00
|
|
|
[key-uid config callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] prepare-dir-and-update-config")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.prepareDirAndUpdateConfig ^js (status)
|
2020-07-09 10:14:38 +00:00
|
|
|
key-uid
|
2019-09-04 18:59:41 +00:00
|
|
|
config
|
|
|
|
#(callback (types/json->clj %))))
|
2018-12-19 12:20:03 +00:00
|
|
|
|
2019-10-21 13:09:57 +00:00
|
|
|
(defn enable-notifications []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] enable-notifications")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.enableNotifications ^js (status)))
|
2019-10-21 13:09:57 +00:00
|
|
|
|
|
|
|
(defn disable-notifications []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] disable-notifications")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.disableNotifications ^js (status)))
|
2019-10-21 13:09:57 +00:00
|
|
|
|
2019-08-01 20:11:59 +00:00
|
|
|
(defn save-account-and-login
|
2019-09-04 20:59:44 +00:00
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
2020-07-09 10:14:38 +00:00
|
|
|
[key-uid multiaccount-data hashed-password settings config accounts-data]
|
2019-12-05 06:02:31 +00:00
|
|
|
(log/debug "[native-module] save-account-and-login"
|
|
|
|
"multiaccount-data" multiaccount-data)
|
2019-09-04 18:59:41 +00:00
|
|
|
(clear-web-data)
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.saveAccountAndLogin
|
|
|
|
^js (status) multiaccount-data hashed-password settings config accounts-data)))
|
2018-11-26 15:52:29 +00:00
|
|
|
|
2020-04-24 07:45:54 +00:00
|
|
|
(defn save-multiaccount-and-login-with-keycard
|
2019-08-15 14:44:25 +00:00
|
|
|
"NOTE: chat-key is a whisper private key sent from keycard"
|
2020-07-09 10:14:38 +00:00
|
|
|
[key-uid multiaccount-data password settings config accounts-data chat-key]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] save-account-and-login-with-keycard")
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.saveAccountAndLoginWithKeycard
|
|
|
|
^js (status) multiaccount-data password settings config accounts-data chat-key)))
|
2019-08-15 14:44:25 +00:00
|
|
|
|
2019-08-01 20:11:59 +00:00
|
|
|
(defn login
|
2019-09-04 20:59:44 +00:00
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
2020-07-09 10:14:38 +00:00
|
|
|
[key-uid account-data hashed-password]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] login")
|
2019-09-04 18:59:41 +00:00
|
|
|
(clear-web-data)
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.login ^js (status) account-data hashed-password)))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn logout []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] logout")
|
2019-09-04 18:59:41 +00:00
|
|
|
(clear-web-data)
|
2019-09-07 12:57:22 +00:00
|
|
|
(.logout ^js (status)))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defonce listener
|
2019-09-07 12:57:22 +00:00
|
|
|
(.addListener ^js react/device-event-emitter "gethEvent"
|
|
|
|
#(re-frame/dispatch [:signals/signal-received (.-jsonEvent ^js %)])))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn multiaccount-load-account
|
2019-09-04 20:59:44 +00:00
|
|
|
"NOTE: beware, the password has to be sha3 hashed
|
|
|
|
|
|
|
|
this function is used after storing an account when you still want to
|
2019-09-04 18:59:41 +00:00
|
|
|
derive accounts from it, because saving an account flushes the loaded keys
|
|
|
|
from memory"
|
2019-09-04 20:59:44 +00:00
|
|
|
[address hashed-password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-load-account")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountLoadAccount ^js (status)
|
2019-09-04 18:59:41 +00:00
|
|
|
(types/clj->json {:address address
|
2019-09-04 20:59:44 +00:00
|
|
|
:password hashed-password})
|
2019-09-04 18:59:41 +00:00
|
|
|
callback))
|
|
|
|
|
|
|
|
(defn multiaccount-reset
|
|
|
|
"TODO: this function is not used anywhere
|
|
|
|
if usage isn't planned, remove"
|
|
|
|
[callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-reset")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountReset ^js (status)
|
2019-09-04 18:59:41 +00:00
|
|
|
callback))
|
|
|
|
|
|
|
|
(defn multiaccount-derive-addresses
|
|
|
|
"NOTE: this should be named derive-accounts
|
|
|
|
this only derive addresses, they still need to be stored
|
|
|
|
with `multiaccount-store-derived` if you want to be able to
|
|
|
|
reuse the derived addresses later"
|
|
|
|
[account-id paths callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-derive-addresses")
|
2019-09-04 18:59:41 +00:00
|
|
|
(when (status)
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountDeriveAddresses ^js (status)
|
2019-09-04 18:59:41 +00:00
|
|
|
(types/clj->json {:accountID account-id
|
|
|
|
:paths paths})
|
|
|
|
callback)))
|
|
|
|
|
|
|
|
(defn multiaccount-store-account
|
2019-09-04 20:59:44 +00:00
|
|
|
"NOTE: beware, the password has to be sha3 hashed
|
|
|
|
|
|
|
|
this stores the account and flush keys in memory so
|
2019-09-04 18:59:41 +00:00
|
|
|
in order to also store derived accounts like initial wallet
|
|
|
|
and chat accounts, you need to load the account again with
|
|
|
|
`multiaccount-load-account` before using `multiaccount-store-derived`
|
|
|
|
and the id of the account stored will have changed"
|
2020-07-09 10:14:38 +00:00
|
|
|
[account-id key-uid hashed-password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-store-account")
|
2019-09-04 18:59:41 +00:00
|
|
|
(when (status)
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.multiAccountStoreAccount ^js (status)
|
|
|
|
(types/clj->json {:accountID account-id
|
|
|
|
:password hashed-password})
|
|
|
|
callback))))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn multiaccount-store-derived
|
2019-09-04 20:59:44 +00:00
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
2020-07-09 10:14:38 +00:00
|
|
|
[account-id key-uid paths hashed-password callback]
|
|
|
|
(log/debug "[native-module] multiaccount-store-derived"
|
2019-12-05 06:02:31 +00:00
|
|
|
"account-id" account-id)
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.multiAccountStoreDerived ^js (status)
|
|
|
|
(types/clj->json {:accountID account-id
|
|
|
|
:paths paths
|
|
|
|
:password hashed-password})
|
|
|
|
callback)))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn multiaccount-generate-and-derive-addresses
|
|
|
|
"used to generate multiple multiaccounts for onboarding
|
|
|
|
NOTE: nothing is saved so you will need to use
|
|
|
|
`multiaccount-store-account` on the selected multiaccount
|
|
|
|
to store the key"
|
|
|
|
[n mnemonic-length paths callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-generate-and-derive-addresses")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountGenerateAndDeriveAddresses ^js (status)
|
|
|
|
(types/clj->json {:n n
|
|
|
|
:mnemonicPhraseLength mnemonic-length
|
|
|
|
:bip39Passphrase ""
|
|
|
|
:paths paths})
|
|
|
|
callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn multiaccount-import-mnemonic
|
|
|
|
[mnemonic password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] multiaccount-import-mnemonic")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountImportMnemonic ^js (status)
|
|
|
|
(types/clj->json {:mnemonicPhrase mnemonic
|
|
|
|
;;NOTE this is not the multiaccount password
|
|
|
|
:Bip39Passphrase password})
|
|
|
|
callback))
|
2019-08-01 15:49:33 +00:00
|
|
|
|
2020-02-28 11:37:16 +00:00
|
|
|
(defn multiaccount-import-private-key
|
|
|
|
[private-key callback]
|
|
|
|
(log/debug "[native-module] multiaccount-import-private-key")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.multiAccountImportPrivateKey ^js (status)
|
2020-02-28 11:37:16 +00:00
|
|
|
(types/clj->json {:privateKey private-key})
|
|
|
|
callback))
|
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn verify
|
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
|
|
|
[address hashed-password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] verify")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.verify ^js (status) address hashed-password callback))
|
2018-11-26 15:52:29 +00:00
|
|
|
|
2018-12-04 13:49:09 +00:00
|
|
|
(defn login-with-keycard
|
2020-07-09 10:14:38 +00:00
|
|
|
[{:keys [key-uid multiaccount-data password chat-key]}]
|
2019-11-28 09:57:58 +00:00
|
|
|
(log/debug "[native-module] login-with-keycard")
|
2019-09-04 18:59:41 +00:00
|
|
|
(clear-web-data)
|
2020-07-09 10:14:38 +00:00
|
|
|
(init-keystore
|
|
|
|
key-uid
|
|
|
|
#(.loginWithKeycard ^js (status) multiaccount-data password chat-key)))
|
2018-12-04 13:49:09 +00:00
|
|
|
|
2017-09-05 14:14:45 +00:00
|
|
|
(defn set-soft-input-mode [mode]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] set-soft-input-mode")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.setSoftInputMode ^js (status) mode))
|
2017-09-05 14:14:45 +00:00
|
|
|
|
2018-08-10 17:15:16 +00:00
|
|
|
(defn call-rpc [payload callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] call-rpc")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.callRPC ^js (status) payload callback))
|
2017-09-05 14:14:45 +00:00
|
|
|
|
2018-08-10 17:15:16 +00:00
|
|
|
(defn call-private-rpc [payload callback]
|
2019-09-07 12:57:22 +00:00
|
|
|
(.callPrivateRPC ^js (status) payload callback))
|
2018-04-18 08:49:15 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn hash-transaction
|
|
|
|
"used for keycard"
|
|
|
|
[rpcParams callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] hash-transaction")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.hashTransaction ^js (status) rpcParams callback))
|
2019-02-28 15:09:21 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn hash-message
|
|
|
|
"used for keycard"
|
|
|
|
[message callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] hash-message")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.hashMessage ^js (status) message callback))
|
2019-04-03 08:46:53 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn hash-typed-data
|
|
|
|
"used for keycard"
|
|
|
|
[data callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] hash-typed-data")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.hashTypedData ^js (status) data callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn send-transaction-with-signature
|
|
|
|
"used for keycard"
|
|
|
|
[rpcParams sig callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] send-transaction-with-signature")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.sendTransactionWithSignature ^js (status) rpcParams sig callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn sign-message
|
|
|
|
"NOTE: beware, the password in rpcParams has to be sha3 hashed"
|
|
|
|
[rpcParams callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] sign-message")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.signMessage ^js (status) rpcParams callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn send-transaction
|
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
|
|
|
[rpcParams hashed-password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] send-transaction")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.sendTransaction ^js (status) rpcParams hashed-password callback))
|
2019-04-03 08:46:53 +00:00
|
|
|
|
2019-09-04 20:59:44 +00:00
|
|
|
(defn sign-typed-data
|
|
|
|
"NOTE: beware, the password has to be sha3 hashed"
|
|
|
|
[data account hashed-password callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] clear-web-data")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.signTypedData ^js (status) data account hashed-password callback))
|
2019-02-28 15:09:21 +00:00
|
|
|
|
2019-04-30 11:49:45 +00:00
|
|
|
(defn send-logs [dbJson js-logs callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] send-logs")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.sendLogs ^js (status) dbJson js-logs callback))
|
2018-12-15 18:57:00 +00:00
|
|
|
|
2019-09-04 18:59:41 +00:00
|
|
|
(defn add-peer [enode on-result]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] add-peer")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.addPeer ^js (status) enode on-result))
|
2017-12-05 10:18:30 +00:00
|
|
|
|
2017-10-05 11:23:25 +00:00
|
|
|
(defn close-application []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] close-application")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.closeApplication ^js (status)))
|
2018-02-26 02:27:29 +00:00
|
|
|
|
2019-09-03 10:51:53 +00:00
|
|
|
(defn connection-change [type expensive?]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] connection-change")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.connectionChange ^js (status) type (boolean expensive?)))
|
2018-03-16 12:01:10 +00:00
|
|
|
|
|
|
|
(defn app-state-change [state]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] app-state-change")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.appStateChange ^js (status) state))
|
2018-05-01 10:27:04 +00:00
|
|
|
|
2020-07-28 11:10:42 +00:00
|
|
|
(defn stop-wallet []
|
|
|
|
(log/debug "[native-module] stop-wallet")
|
|
|
|
(.stopWallet ^js (status)))
|
|
|
|
|
|
|
|
(defn start-wallet []
|
|
|
|
(log/debug "[native-module] start-wallet")
|
|
|
|
(.startWallet ^js (status)))
|
|
|
|
|
2019-05-08 12:26:39 +00:00
|
|
|
(defn set-blank-preview-flag [flag]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] set-blank-preview-flag")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.setBlankPreviewFlag ^js (status) flag))
|
2019-05-08 12:26:39 +00:00
|
|
|
|
2018-08-03 16:43:37 +00:00
|
|
|
(defn is24Hour []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] is24Hour")
|
2019-09-04 18:59:41 +00:00
|
|
|
;;NOTE: we have to check for status module because of tests
|
|
|
|
(when (status)
|
2019-09-07 12:57:22 +00:00
|
|
|
(.-is24Hour ^js (status))))
|
2018-07-19 15:51:06 +00:00
|
|
|
|
2019-05-30 14:01:20 +00:00
|
|
|
(defn get-device-model-info []
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] get-device-model-info")
|
2019-09-04 18:59:41 +00:00
|
|
|
;;NOTE: we have to check for status module because of tests
|
2019-09-07 12:57:22 +00:00
|
|
|
(when-let [^js status (status)]
|
|
|
|
{:model (.-model status)
|
|
|
|
:brand (.-brand status)
|
|
|
|
:build-id (.-buildId status)
|
|
|
|
:device-id (.-deviceId status)}))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn extract-group-membership-signatures
|
|
|
|
[signature-pairs callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] extract-group-membership-signatures")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.extractGroupMembershipSignatures ^js (status) signature-pairs callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn sign-group-membership [content callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] sign-group-membership")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.signGroupMembership ^js (status) content callback))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn update-mailservers
|
|
|
|
[enodes on-result]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] update-mailservers")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.updateMailservers ^js (status) enodes on-result))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn chaos-mode-update [on on-result]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] chaos-mode-update")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.chaosModeUpdate ^js (status) on on-result))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn get-nodes-from-contract
|
|
|
|
[rpc-endpoint contract-address on-result]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] get-nodes-from-contract")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.getNodesFromContract ^js (status) rpc-endpoint contract-address on-result))
|
2019-09-04 18:59:41 +00:00
|
|
|
|
|
|
|
(defn rooted-device? [callback]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] rooted-device?")
|
2019-09-04 18:59:41 +00:00
|
|
|
(cond
|
|
|
|
;; we assume that iOS is safe by default
|
|
|
|
platform/ios?
|
|
|
|
(callback false)
|
|
|
|
|
|
|
|
;; we check root on android
|
|
|
|
platform/android?
|
|
|
|
(if (status)
|
2019-09-07 12:57:22 +00:00
|
|
|
(.isDeviceRooted ^js (status) callback)
|
2019-09-04 18:59:41 +00:00
|
|
|
;; if module isn't initialized we return true to avoid degrading security
|
|
|
|
(callback true))
|
|
|
|
|
|
|
|
;; in unknown scenarios we also consider the device rooted to avoid degrading security
|
|
|
|
:else (callback true)))
|
2019-09-12 09:41:25 +00:00
|
|
|
|
|
|
|
(defn generate-gfycat
|
|
|
|
"Generate a 3 words random name based on the user public-key, synchronously"
|
|
|
|
[public-key]
|
|
|
|
{:pre [(utils.db/valid-public-key? public-key)]}
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] generate-gfycat")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.generateAlias ^js (status) public-key))
|
2019-09-12 09:41:25 +00:00
|
|
|
|
2019-11-28 10:00:29 +00:00
|
|
|
(defn generate-gfycat-async
|
|
|
|
"Generate a 3 words random name based on the user public-key, asynchronously"
|
|
|
|
[public-key callback]
|
|
|
|
{:pre [(utils.db/valid-public-key? public-key)]}
|
2019-09-07 12:57:22 +00:00
|
|
|
(.generateAliasAsync ^js (status) public-key callback))
|
2019-11-28 10:00:29 +00:00
|
|
|
|
2019-09-12 09:41:25 +00:00
|
|
|
(defn identicon
|
|
|
|
"Generate a icon based on a string, synchronously"
|
|
|
|
[seed]
|
2019-11-15 08:09:17 +00:00
|
|
|
(log/debug "[native-module] identicon")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.identicon ^js (status) seed))
|
2019-11-28 10:00:29 +00:00
|
|
|
|
|
|
|
(defn identicon-async
|
|
|
|
"Generate a icon based on a string, asynchronously"
|
|
|
|
[seed callback]
|
2019-09-07 12:57:22 +00:00
|
|
|
(.identiconAsync ^js (status) seed callback))
|
2019-11-28 10:00:29 +00:00
|
|
|
|
|
|
|
(defn gfycat-identicon-async
|
|
|
|
"Generate an icon based on a string and 3 words random name asynchronously"
|
|
|
|
[seed callback]
|
2019-12-11 15:25:25 +00:00
|
|
|
(log/debug "[native-module] gfycat-identicon-async")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.generateAliasAndIdenticonAsync ^js (status) seed callback))
|
2019-12-31 10:50:45 +00:00
|
|
|
|
|
|
|
(defn validate-mnemonic
|
|
|
|
"Validate that a mnemonic conforms to BIP39 dictionary/checksum standards"
|
|
|
|
[mnemonic callback]
|
|
|
|
(log/debug "[native-module] validate-mnemonic")
|
2019-09-07 12:57:22 +00:00
|
|
|
(.validateMnemonic ^js (status) mnemonic callback))
|
2020-07-14 13:33:59 +00:00
|
|
|
|
|
|
|
(defn delete-multiaccount
|
|
|
|
"Delete multiaccount from database, deletes multiaccount's database and
|
|
|
|
key files."
|
|
|
|
[key-uid callback]
|
|
|
|
(log/debug "[native-module] delete-multiaccount")
|
|
|
|
(.deleteMultiaccount ^js (status) key-uid callback))
|
2020-07-28 11:06:58 +00:00
|
|
|
|
|
|
|
(defn activate-keep-awake []
|
|
|
|
(log/debug "[native-module] activateKeepAwake")
|
|
|
|
(.activateKeepAwake ^js (status)))
|
|
|
|
|
|
|
|
(defn deactivate-keep-awake []
|
|
|
|
(log/debug "[native-module] deactivateKeepAwake")
|
|
|
|
(.deactivateKeepAwake ^js (status)))
|
2020-09-28 10:37:03 +00:00
|
|
|
|
|
|
|
(defn reset-keyboard-input [input selection]
|
|
|
|
(log/debug "[native-module] resetKeyboardInput")
|
|
|
|
(when platform/android?
|
|
|
|
(.resetKeyboardInputCursor ^js (status) input selection)))
|