Remove RAM bundle support

This commit is contained in:
Pedro Pombeiro 2019-08-26 14:57:26 +02:00
parent dfeec0f39f
commit 58d310ffce
No known key found for this signature in database
GPG Key ID: C4A24185B2AA48A1
90 changed files with 408 additions and 933 deletions

View File

@ -80,8 +80,7 @@ project.ext.react = [
nodeExecutableAndArgs: ["node", "--max-old-space-size=16384"],
entryFile: "index.android.js",
bundleInPr: true,
bundleCommand: "ram-bundle",
bundleConfig: "packager/config.js"
inputExcludes: ["android/**", "ios/**", "react-native/**", "src/**", "test/**"]
]
configurations.all {

View File

@ -24,7 +24,6 @@
"react-native-webview-bridge"
"react-native-firebase"
"react-native-touch-id"
"homoglyph-finder"
"web3"
"web3-utils"
"chance"
@ -63,7 +62,6 @@
"react-native-image-crop-picker"
"react-native-securerandom"
"react-native-webview-bridge"
"homoglyph-finder"
"web3"
"chance"
"react-native-http-bridge"

View File

@ -1,39 +1,38 @@
(ns status-im.react-native.resources
(:require-macros [status-im.utils.js-require :as js-require]))
(ns status-im.react-native.resources)
(def ui
{:empty-hashtags (js-require/js-require "./resources/images/ui/empty-hashtags.png")
:empty-recent (js-require/js-require "./resources/images/ui/empty-recent.png")
:analytics-image (js-require/js-require "./resources/images/ui/analytics-image.png")
:welcome-image (js-require/js-require "./resources/images/ui/welcome-image.png")
:intro1 (js-require/js-require "./resources/images/ui/intro1.png")
:intro2 (js-require/js-require "./resources/images/ui/intro2.png")
:intro3 (js-require/js-require "./resources/images/ui/intro3.png")
:sample-key (js-require/js-require "./resources/images/ui/sample-key.png")
:lock (js-require/js-require "./resources/images/ui/lock.png")
:tribute-to-talk (js-require/js-require "./resources/images/ui/tribute-to-talk.png")
:wallet-welcome (js-require/js-require "./resources/images/ui/wallet-welcome.png")
:hardwallet-card (js-require/js-require "./resources/images/ui/hardwallet-card.png")
:secret-keys (js-require/js-require "./resources/images/ui/secret-keys.png")
:keycard-lock (js-require/js-require "./resources/images/ui/keycard-lock.png")
:keycard (js-require/js-require "./resources/images/ui/keycard.png")
:keycard-logo (js-require/js-require "./resources/images/ui/keycard-logo.png")
:keycard-logo-blue (js-require/js-require "./resources/images/ui/keycard-logo-blue.png")
:keycard-logo-gray (js-require/js-require "./resources/images/ui/keycard-logo-gray.png")
:keycard-key (js-require/js-require "./resources/images/ui/keycard-key.png")
:keycard-empty (js-require/js-require "./resources/images/ui/keycard-empty.png")
:keycard-phone (js-require/js-require "./resources/images/ui/keycard-phone.png")
:keycard-connection (js-require/js-require "./resources/images/ui/keycard-connection.png")
:keycard-nfc-on (js-require/js-require "./resources/images/ui/keycard-nfc-on.png")
:keycard-wrong (js-require/js-require "./resources/images/ui/keycard-wrong.png")
:not-keycard (js-require/js-require "./resources/images/ui/not-keycard.png")
:status-logo (js-require/js-require "./resources/images/ui/status-logo.png")
:hold-card-animation (js-require/js-require "./resources/images/ui/hold-card-animation.gif")
:warning-sign (js-require/js-require "./resources/images/ui/warning-sign.png")
:phone-nfc-on (js-require/js-require "./resources/images/ui/phone-nfc-on.png")
:phone-nfc-off (js-require/js-require "./resources/images/ui/phone-nfc-off.png")
:dapp-store (js-require/js-require "./resources/images/ui/dapp-store.png")
:ens-header (js-require/js-require "./resources/images/ui/ens-header.png")})
{:empty-hashtags (js/require "./resources/images/ui/empty-hashtags.png")
:empty-recent (js/require "./resources/images/ui/empty-recent.png")
:analytics-image (js/require "./resources/images/ui/analytics-image.png")
:welcome-image (js/require "./resources/images/ui/welcome-image.png")
:intro1 (js/require "./resources/images/ui/intro1.png")
:intro2 (js/require "./resources/images/ui/intro2.png")
:intro3 (js/require "./resources/images/ui/intro3.png")
:sample-key (js/require "./resources/images/ui/sample-key.png")
:lock (js/require "./resources/images/ui/lock.png")
:tribute-to-talk (js/require "./resources/images/ui/tribute-to-talk.png")
:wallet-welcome (js/require "./resources/images/ui/wallet-welcome.png")
:hardwallet-card (js/require "./resources/images/ui/hardwallet-card.png")
:secret-keys (js/require "./resources/images/ui/secret-keys.png")
:keycard-lock (js/require "./resources/images/ui/keycard-lock.png")
:keycard (js/require "./resources/images/ui/keycard.png")
:keycard-logo (js/require "./resources/images/ui/keycard-logo.png")
:keycard-logo-blue (js/require "./resources/images/ui/keycard-logo-blue.png")
:keycard-logo-gray (js/require "./resources/images/ui/keycard-logo-gray.png")
:keycard-key (js/require "./resources/images/ui/keycard-key.png")
:keycard-empty (js/require "./resources/images/ui/keycard-empty.png")
:keycard-phone (js/require "./resources/images/ui/keycard-phone.png")
:keycard-connection (js/require "./resources/images/ui/keycard-connection.png")
:keycard-nfc-on (js/require "./resources/images/ui/keycard-nfc-on.png")
:keycard-wrong (js/require "./resources/images/ui/keycard-wrong.png")
:not-keycard (js/require "./resources/images/ui/not-keycard.png")
:status-logo (js/require "./resources/images/ui/status-logo.png")
:hold-card-animation (js/require "./resources/images/ui/hold-card-animation.gif")
:warning-sign (js/require "./resources/images/ui/warning-sign.png")
:phone-nfc-on (js/require "./resources/images/ui/phone-nfc-on.png")
:phone-nfc-off (js/require "./resources/images/ui/phone-nfc-off.png")
:dapp-store (js/require "./resources/images/ui/dapp-store.png")
:ens-header (js/require "./resources/images/ui/ens-header.png")})
(def loaded-images (atom {}))
@ -41,4 +40,4 @@
(if (contains? @loaded-images k)
(get @loaded-images k)
(get (swap! loaded-images assoc k
((get ui k))) k)))
(get ui k)) k)))

View File

@ -16,38 +16,26 @@
(or (object/get js-dependencies/react-native name) {})
#js {}))
(defn lazy-get-react-property [name]
(let [react-property (atom nil)]
(fn []
(if @react-property
@react-property
(reset! react-property (get-react-property name))))))
(defn adapt-class [class]
(when class
(reagent/adapt-react-class class)))
(defn get-class [name]
(let [react-class (atom nil)]
(fn []
(if @react-class
@react-class
(reset! react-class
(adapt-class (get-react-property name)))))))
(adapt-class (get-react-property name)))
(def native-modules (.-NativeModules js-dependencies/react-native))
(def device-event-emitter (.-DeviceEventEmitter js-dependencies/react-native))
(defn dismiss-keyboard! [] ((js-dependencies/dismiss-keyboard)))
(def dismiss-keyboard! js-dependencies/dismiss-keyboard)
(def splash-screen (.-SplashScreen native-modules))
;; React Components
(def app-registry (get-react-property "AppRegistry"))
(def app-state (lazy-get-react-property "AppState"))
(def net-info (lazy-get-react-property "NetInfo"))
(def view ((get-class "View")))
(def app-state (get-react-property "AppState"))
(def net-info (get-react-property "NetInfo"))
(def view (get-class "View"))
(def safe-area-view (get-class "SafeAreaView"))
(def progress-bar (get-class "ProgressBarAndroid"))
@ -56,14 +44,11 @@
(def scroll-view-class (get-class "ScrollView"))
(def keyboard-avoiding-view-class (get-class "KeyboardAvoidingView"))
(def refresh-control (get-class "RefreshControl"))
(def text-class ((get-class "Text")))
(def text-class (get-class "Text"))
(def text-input-class (get-class "TextInput"))
(def image-class (get-class "Image"))
(def picker-obj (lazy-get-react-property "Picker"))
(defn picker-class [] (adapt-class (picker-obj)))
(defn picker-item-class [] (adapt-class (.-Item (picker-obj))))
(def picker-class (get-class "Picker"))
(def picker-item-class (adapt-class (.-Item (get-react-property "Picker"))))
(defn valid-source? [source]
(or (not (map? source))
@ -73,13 +58,12 @@
(defn image [{:keys [source] :as props}]
(when (valid-source? source)
(let [source (if (fn? source) (source) source)]
[(image-class) (assoc props :source source)])))
[image-class props]))
(def switch-class (get-class "Switch"))
(defn switch [props]
[(switch-class) props])
[switch-class props])
(def touchable-highlight-class (get-class "TouchableHighlight"))
(def touchable-without-feedback-class (get-class "TouchableWithoutFeedback"))
@ -87,22 +71,22 @@
(def activity-indicator-class (get-class "ActivityIndicator"))
(defn activity-indicator [props]
[(activity-indicator-class) props])
[activity-indicator-class props])
(def modal (get-class "Modal"))
(def pan-responder (lazy-get-react-property "PanResponder"))
(def animated (lazy-get-react-property "Animated"))
(def pan-responder (.-PanResponder js-dependencies/react-native))
(def animated (.-Animated js-dependencies/react-native))
(defn animated-view-class []
(reagent/adapt-react-class (.-View (animated))))
(def animated-view-class
(reagent/adapt-react-class (.-View animated)))
(defn animated-view [props & content]
(vec (conj content props (animated-view-class))))
(vec (conj content props animated-view-class)))
(def dimensions (lazy-get-react-property "Dimensions"))
(def keyboard (lazy-get-react-property "Keyboard"))
(def linking (lazy-get-react-property "Linking"))
(def dimensions (.-Dimensions js-dependencies/react-native))
(def keyboard (.-Keyboard js-dependencies/react-native))
(def linking (.-Linking js-dependencies/react-native))
(def desktop-notification (.-DesktopNotification (.-NativeModules js-dependencies/react-native)))
(def max-font-size-multiplier 1.25)
@ -153,7 +137,7 @@
(swap! text-input-refs disj @input-ref))
:reagent-render
(fn [options text]
[(text-input-class)
[text-input-class
(merge
{:underline-color-android :transparent
:max-font-size-multiplier max-font-size-multiplier
@ -186,33 +170,33 @@
:style style}]))
(defn touchable-opacity [props content]
[(touchable-opacity-class) props content])
[touchable-opacity-class props content])
(defn touchable-highlight [props content]
[(touchable-highlight-class)
[touchable-highlight-class
(merge {:underlay-color :transparent} props)
content])
(defn touchable-without-feedback [props content]
[(touchable-without-feedback-class)
[touchable-without-feedback-class
props
content])
(defn get-dimensions [name]
(js->clj (.get (dimensions) name) :keywordize-keys true))
(js->clj (.get dimensions name) :keywordize-keys true))
(defn list-item [component]
(reagent/as-element component))
(defn value->picker-item [{:keys [value label]}]
[(picker-item-class) {:value (or value "") :label (or label value "")}])
[picker-item-class {:value (or value "") :label (or label value "")}])
(defn picker [{:keys [style on-change selected enabled data]}]
(into
[(picker-class) (merge (when style {:style style})
(when enabled {:enabled enabled})
(when on-change {:on-value-change on-change})
(when selected {:selected-value selected}))]
[picker-class (merge (when style {:style style})
(when enabled {:enabled enabled})
(when on-change {:on-value-change on-change})
(when selected {:selected-value selected}))]
(map value->picker-item data)))
;; Image picker
@ -228,7 +212,7 @@
([images-fn]
(show-image-picker images-fn nil))
([images-fn media-type]
(let [image-picker (.-default (image-picker-class))]
(let [image-picker (.-default image-picker-class)]
(-> image-picker
(.openPicker (clj->js {:multiple false :mediaType (or media-type "any")}))
(.then images-fn)
@ -254,12 +238,12 @@
(defn keyboard-avoiding-view [props & children]
(let [view-element (if platform/ios?
[(keyboard-avoiding-view-class) (merge {:behavior :padding} props)]
[keyboard-avoiding-view-class (merge {:behavior :padding} props)]
[view props])]
(vec (concat view-element children))))
(defn scroll-view [props & children]
(vec (conj children props (scroll-view-class))))
(vec (conj children props scroll-view-class)))
(views/defview with-activity-indicator
[{:keys [timeout style enabled? preview]} comp]
@ -346,7 +330,7 @@
:height 100
:z-index -1000}])
children (conj children bottom-background)]
(apply vector (safe-area-view) props children))))
(apply vector safe-area-view props children))))
(defmethod create-main-screen-view :default [_]
view)

View File

@ -55,7 +55,6 @@
"eth-phishing-detect": "1.1.13",
"events": "1.1.1",
"google-breakpad": "git+https://github.com/status-im/google-breakpad.git#v0.9.0",
"homoglyph-finder": "1.1.1",
"i18n-js": "^3.1.0",
"identicon.js": "git+https://github.com/status-im/identicon.js.git#v1.2.1-status",
"js-sha3": "^0.8.0",

View File

@ -4192,11 +4192,6 @@ home-or-tmp@^3.0.0:
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb"
integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=
homoglyph-finder@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/homoglyph-finder/-/homoglyph-finder-1.1.1.tgz#53c3671a618e003a26fa3f87dc2b179e95568fa8"
integrity sha1-U8NnGmGOADom+j+H3CsXnpVWj6g=
hosted-git-info@^2.1.4:
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"

View File

@ -1,5 +1,4 @@
(ns status-im.react-native.resources
(:require-macros [status-im.utils.js-require :as js-require]))
(ns status-im.react-native.resources)
(def ui
{:empty-hashtags "images/ui/empty-hashtags.png"

View File

@ -47,8 +47,6 @@
(def scroll-view-class (get-web-class "ScrollView"))
(def keyboard-avoiding-view-class (get-web-class "KeyboardAvoidingView"))
(def refresh-control nil)
(def text-class ((get-web-class "Text")))
(def text-input-class (get-web-class "TextInput"))
(def image-class (get-web-class "Image"))

View File

@ -1908,7 +1908,7 @@
);
runOnlyForDeploymentPostprocessing = 0;
shellPath = /bin/sh;
shellScript = "set -o errexit\nexport BUNDLE_COMMAND=\"ram-bundle\"\nexport BUNDLE_CONFIG=\"packager/config.js\"\nexport NODE_BINARY=\"node\"\nexport NODE_ARGS=\" --max-old-space-size=16384 \"\n\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
shellScript = "set -o errexit\nexport NODE_BINARY=\"node\"\nexport NODE_ARGS=\" --max-old-space-size=16384 \"\n\n../node_modules/react-native/scripts/react-native-xcode.sh\n";
};
2EAC54E16AB243C3EBBFE1BA /* [CP] Check Pods Manifest.lock */ = {
isa = PBXShellScriptBuildPhase;

View File

@ -18,7 +18,6 @@
"eth-phishing-detect": "1.1.13",
"events": "1.1.1",
"hi-base32": "0.5.0",
"homoglyph-finder": "1.1.1",
"i18n-js": "^3.1.0",
"identicon.js": "git+https://github.com/status-im/identicon.js.git#v1.2.1-status",
"js-sha3": "^0.8.0",

View File

@ -3590,11 +3590,6 @@ home-or-tmp@^3.0.0:
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb"
integrity sha1-V6j+JM8zzdUkhgoVgh3cJchmcfs=
homoglyph-finder@1.1.1:
version "1.1.1"
resolved "https://registry.yarnpkg.com/homoglyph-finder/-/homoglyph-finder-1.1.1.tgz#53c3671a618e003a26fa3f87dc2b179e95568fa8"
integrity sha1-U8NnGmGOADom+j+H3CsXnpVWj6g=
hosted-git-info@^2.1.4:
version "2.7.1"
resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047"

View File

@ -41,7 +41,7 @@ let
# Keep this filter as restrictive as possible in order to avoid unnecessary rebuilds and limit closure size
mkFilter {
dirRootsToInclude = [
"android" "mobile_files" "packager" "resources"
"android" "mobile_files" "resources"
"translations" "status-modules"
];
dirsToExclude = [ ".git" ".svn" "CVS" ".hg" ".gradle" "build" "intermediates" "libs" "obj" ];

View File

@ -37,7 +37,6 @@ in stdenv.mkDerivation {
dirRootsToInclude = [
"mobile_files"
"modules/react-native-status"
"packager"
"resources"
];
dirsToExclude = [ ".git" ".svn" "CVS" ".hg" ".gradle" "build" "intermediates" "libs" "obj" ];

View File

@ -1,35 +0,0 @@
const modulePaths = require('./modulePaths');
const resolve = require('path').resolve;
const fs = require('fs');
const { getDefaultConfig } = require("metro-config");
// Update the following line if the root folder of your app is somewhere else.
const ROOT_FOLDER = resolve(__dirname, '..');
module.exports = (async () => {
const {
resolver: { sourceExts, assetExts }
} = await getDefaultConfig();
return {
transformer: {
babelTransformerPath: require.resolve("react-native-svg-transformer"),
getTransformOptions: async () => {
const moduleMap = {};
modulePaths.forEach(path => {
if (fs.existsSync(path)) {
moduleMap[resolve(path)] = true;
}
});
return {
preloadedModules: moduleMap,
transform: { inlineRequires: { blacklist: moduleMap } },
}
},
},
projectRoot:ROOT_FOLDER,
resolver: {
assetExts: assetExts.filter(ext => ext !== "svg"),
sourceExts: [...sourceExts, "svg"]
}
};
})();

View File

@ -1,415 +0,0 @@
module.exports = [
"node_modules/react-native/Libraries/Core/InitializeCore.js",
"index.android.js",
"index.ios.js",
"node_modules/react-native-config/index.js",
"node_modules/react-native/Libraries/react-native/react-native-implementation.js",
"node_modules/react-native/Libraries/BatchedBridge/NativeModules.js",
"node_modules/invariant/browser.js",
"node_modules/react-native/Libraries/BatchedBridge/BatchedBridge.js",
"node_modules/react-native/Libraries/BatchedBridge/MessageQueue.js",
"node_modules/react-native/Libraries/Utilities/stringifySafe.js",
"node_modules/react-native/Libraries/Utilities/defineLazyObjectProperty.js",
"node_modules/react-native/Libraries/EventEmitter/RCTDeviceEventEmitter.js",
"node_modules/react-native/Libraries/vendor/emitter/EventSubscriptionVendor.js",
"node_modules/react-native/Libraries/vendor/emitter/EventEmitter.js",
"node_modules/react-native/Libraries/vendor/emitter/EmitterSubscription.js",
"node_modules/react-native/Libraries/vendor/emitter/EventSubscription.js",
"node_modules/react-native/Libraries/ReactNative/UIManager.js",
"node_modules/react-native/Libraries/Utilities/Platform.android.js",
"node_modules/react-native/Libraries/ReactNative/UIManagerProperties.js",
"node_modules/react-native/Libraries/Components/ActivityIndicator/ActivityIndicator.js",
"node_modules/react-native/Libraries/Components/ProgressBarAndroid/ProgressBarAndroid.android.js",
"node_modules/react-native/Libraries/react-native/React.js",
"node_modules/react/index.js",
"node_modules/object-assign/index.js",
"node_modules/react/cjs/react.production.min.js",
"node_modules/react/node_modules/prop-types/checkPropTypes.js",
"node_modules/react/node_modules/prop-types/lib/ReactPropTypesSecret.js",
"node_modules/react-native/Libraries/ReactNative/requireNativeComponent.js",
"node_modules/react-native/Libraries/Renderer/shims/createReactNativeComponentClass.js",
"node_modules/react-native/Libraries/Renderer/shims/ReactNativeViewConfigRegistry.js",
"node_modules/react-native/Libraries/ReactNative/getNativeComponentAttributes.js",
"node_modules/react-native/node_modules/fbjs/lib/warning.js",
"node_modules/@babel/runtime/helpers/objectSpread.js",
"node_modules/@babel/runtime/helpers/defineProperty.js",
"node_modules/react-native/Libraries/Components/View/ReactNativeStyleAttributes.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewStylePropTypes.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedLayoutPropTypes.js",
"node_modules/react-native/node_modules/prop-types/index.js",
"node_modules/react-native/node_modules/prop-types/factoryWithTypeCheckers.js",
"node_modules/react-native/node_modules/prop-types/lib/ReactPropTypesSecret.js",
"node_modules/react-native/node_modules/prop-types/checkPropTypes.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedShadowPropTypesIOS.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedColorPropType.js",
"node_modules/react-native/Libraries/Color/normalizeColor.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTransformPropTypes.js",
"node_modules/react-native/Libraries/Utilities/deprecatedPropType.js",
"node_modules/react-native/Libraries/Text/TextStylePropTypes.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedImageStylePropTypes.js",
"node_modules/react-native/Libraries/StyleSheet/processTransform.js",
"node_modules/react-native/Libraries/Utilities/differ/sizesDiffer.js",
"node_modules/react-native/Libraries/StyleSheet/processColor.js",
"node_modules/react-native/Libraries/Image/AssetRegistry.js",
"node_modules/react-native/Libraries/Utilities/PixelRatio.js",
"node_modules/react-native/Libraries/Utilities/Dimensions.js",
"node_modules/react-native/Libraries/Utilities/DeviceInfo.js",
"node_modules/react-native/Libraries/Components/View/View.js",
"node_modules/react-native/Libraries/Components/View/ViewNativeComponent.js",
"node_modules/react-native/Libraries/Text/TextAncestor.js",
"node_modules/react-native/Libraries/StyleSheet/StyleSheet.js",
"node_modules/react-native/Libraries/StyleSheet/flattenStyle.js",
"node_modules/react-native/Libraries/StyleSheet/StyleSheetValidation.js",
"node_modules/react-native/Libraries/vendor/core/merge.js",
"node_modules/react-native/Libraries/vendor/core/mergeInto.js",
"node_modules/react-native/Libraries/vendor/core/mergeHelpers.js",
"node_modules/react-native/Libraries/Components/View/ReactNativeViewAttributes.js",
"node_modules/react-native/Libraries/Components/Touchable/Touchable.js",
"node_modules/react-native/node_modules/fbjs/lib/keyMirror.js",
"node_modules/react-native/Libraries/EventEmitter/NativeEventEmitter.js",
"node_modules/react-native/Libraries/Renderer/shims/ReactNative.js",
"node_modules/react-native/Libraries/Core/setUpGlobals.js",
"node_modules/react-native/Libraries/Core/polyfillES6Collections.js",
"node_modules/react-native/Libraries/vendor/core/_shouldPolyfillES6Collection.js",
"node_modules/react-native/Libraries/Utilities/PolyfillFunctions.js",
"node_modules/react-native/Libraries/Core/setUpSystrace.js",
"node_modules/react-native/Libraries/Core/setUpErrorHandling.js",
"node_modules/react-native/Libraries/Core/ExceptionsManager.js",
"node_modules/stacktrace-parser/index.js",
"node_modules/stacktrace-parser/lib/stacktrace-parser.js",
"node_modules/react-native/Libraries/Network/fetch.js",
"node_modules/react-native/Libraries/vendor/core/whatwg-fetch.js",
"node_modules/react-native/Libraries/Core/checkNativeVersion.js",
"node_modules/react-native/Libraries/Core/ReactNativeVersionCheck.js",
"node_modules/react-native/Libraries/Core/ReactNativeVersion.js",
"node_modules/react-native/Libraries/Core/polyfillPromise.js",
"node_modules/react-native/Libraries/Promise.js",
"node_modules/promise/setimmediate/done.js",
"node_modules/promise/setimmediate/core.js",
"node_modules/promise/setimmediate/es6-extensions.js",
"node_modules/promise/setimmediate/rejection-tracking.js",
"node_modules/react-native/Libraries/Core/setUpRegeneratorRuntime.js",
"node_modules/regenerator-runtime/runtime.js",
"node_modules/react-native/Libraries/Core/setUpTimers.js",
"node_modules/react-native/Libraries/Core/Timers/JSTimers.js",
"node_modules/react-native/node_modules/fbjs/lib/ExecutionEnvironment.js",
"node_modules/react-native/Libraries/Core/setUpXHR.js",
"node_modules/react-native/Libraries/Blob/BlobManager.js",
"node_modules/react-native/Libraries/Blob/Blob.js",
"node_modules/react-native/Libraries/Blob/BlobRegistry.js",
"node_modules/event-target-shim/lib/event-target.js",
"node_modules/event-target-shim/lib/commons.js",
"node_modules/event-target-shim/lib/custom-event-target.js",
"node_modules/event-target-shim/lib/event-wrapper.js",
"node_modules/react-native/Libraries/Network/FormData.js",
"node_modules/base64-js/index.js",
"node_modules/react-native/Libraries/WebSocket/WebSocket.js",
"node_modules/react-native/Libraries/WebSocket/WebSocketEvent.js",
"node_modules/react-native/Libraries/Blob/File.js",
"node_modules/react-native/Libraries/Core/setUpAlert.js",
"node_modules/react-native/Libraries/Core/setUpGeolocation.js",
"node_modules/react-native/Libraries/Utilities/logError.js",
"node_modules/react-native/Libraries/Core/setUpBatchedBridge.js",
"node_modules/react-native/Libraries/Utilities/RCTLog.js",
"node_modules/react-native/Libraries/Utilities/infoLog.js",
"node_modules/react-native/Libraries/Core/setUpSegmentFetcher.js",
"node_modules/react-native/Libraries/AppState/AppState.js",
"node_modules/react-native/Libraries/JSInspector/JSInspector.js",
"node_modules/react-native/Libraries/JSInspector/NetworkAgent.js",
"node_modules/react-native/Libraries/JSInspector/InspectorAgent.js",
"node_modules/react-native/Libraries/EventEmitter/RCTEventEmitter.js",
"node_modules/react-native/Libraries/Utilities/differ/deepDiffer.js",
"node_modules/react-native/Libraries/Components/TextInput/TextInputState.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewAccessibility.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedEdgeInsetsPropType.js",
"node_modules/react-native/Libraries/Animated/src/Animated.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValue.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedInterpolation.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedWithChildren.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedNode.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedValueXY.js",
"node_modules/react-native/Libraries/Animated/src/AnimatedImplementation.js",
"node_modules/react-native/Libraries/Animated/src/Easing.js",
"node_modules/react-native/Libraries/Animated/src/AnimatedEvent.js",
"node_modules/react-native/Libraries/Animated/src/createAnimatedComponent.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedProps.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedStyle.js",
"node_modules/react-native/Libraries/Animated/src/nodes/AnimatedTransform.js",
"node_modules/react-native/Libraries/Components/Keyboard/Keyboard.js",
"node_modules/react-native/Libraries/Utilities/dismissKeyboard.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedViewPropTypes.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedStyleSheetPropType.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/deprecatedCreateStrictShapeTypeChecker.js",
"node_modules/react-native/Libraries/Components/View/PlatformViewPropTypes.android.js",
"node_modules/react-native/Libraries/Animated/src/components/AnimatedText.js",
"node_modules/react-native/Libraries/Text/Text.js",
"node_modules/react-native/Libraries/DeprecatedPropTypes/DeprecatedTextPropTypes.js",
"node_modules/react-native/Libraries/Animated/src/components/AnimatedView.js",
"node_modules/react-native/Libraries/Components/DrawerAndroid/DrawerLayoutAndroid.android.js",
"node_modules/react-native/Libraries/Components/StatusBar/StatusBar.js",
"node_modules/react-native/Libraries/Utilities/warnOnce.js",
"node_modules/react-native/Libraries/ReactNative/AppContainer.js",
"node_modules/react-native/Libraries/ReactNative/I18nManager.js",
"node_modules/react-native/Libraries/Interaction/PanResponder.js",
"node_modules/react-native/Libraries/ReactNative/AppRegistry.js",
"node_modules/react-native/Libraries/ReactNative/renderApplication.js",
"node_modules/react-native/Libraries/Utilities/BackHandler.android.js",
"node_modules/react-native/Libraries/BugReporting/BugReporting.js",
"node_modules/react-native/Libraries/Utilities/SceneTracker.js",
"node_modules/react-native/Libraries/Linking/Linking.js",
"node_modules/react-native/Libraries/Network/NetInfo.js",
"node_modules/react-native/Libraries/Share/Share.js",
"node_modules/react-native-fs/FS.common.js",
"node_modules/react-native-keychain/index.js",
"node_modules/fbjs/lib/warning.js",
"node_modules/fbjs/lib/emptyFunction.js",
"node_modules/fbjs/lib/invariant.js",
"node_modules/fbjs/lib/emptyObject.js",
"node_modules/realm/lib/index.js",
"node_modules/realm/lib/user-methods.js",
"node_modules/realm/lib/errors.js",
"node_modules/realm/lib/permission-api.js",
"node_modules/realm/lib/extensions.js",
"node_modules/realm/lib/collection-methods.js",
"node_modules/create-react-class/index.js",
"node_modules/create-react-class/factory.js",
"node_modules/prop-types/index.js",
"node_modules/prop-types/factoryWithTypeCheckers.js",
"node_modules/prop-types/lib/ReactPropTypesSecret.js",
"node_modules/prop-types/checkPropTypes.js",
"node_modules/react-native-securerandom/index.js",
"node_modules/i18n-js/app/assets/javascripts/i18n.js",
"node_modules/react-native-languages/index.js",
"node_modules/react-native-camera/src/index.js",
"node_modules/react-native-camera/src/Camera.js",
"node_modules/react-native-camera/node_modules/prop-types/index.js",
"node_modules/react-native-camera/node_modules/prop-types/factoryWithTypeCheckers.js",
"node_modules/react-native-camera/node_modules/prop-types/lib/ReactPropTypesSecret.js",
"node_modules/react-native-camera/node_modules/prop-types/checkPropTypes.js",
"node_modules/react-native-camera/src/RNCamera.js",
"node_modules/react-native-camera/src/FaceDetector.js",
"node_modules/react-native-svg/index.js",
"node_modules/react-native-svg/elements/Rect.js",
"node_modules/react-native-svg/lib/extract/extractProps.js",
"node_modules/react-native-svg/lib/extract/extractFill.js",
"node_modules/react-native-svg/lib/extract/extractBrush.js",
"node_modules/react-native-svg/lib/extract/extractColor.js",
"node_modules/react-native-svg/lib/extract/extractOpacity.js",
"node_modules/react-native-svg/lib/extract/extractStroke.js",
"node_modules/react-native-svg/lib/extract/extractLengthList.js",
"node_modules/react-native-svg/lib/extract/extractClipPath.js",
"node_modules/react-native-svg/lib/extract/extractResponder.js",
"node_modules/react-native-svg/lib/extract/extractTransform.js",
"node_modules/react-native-svg/lib/Matrix2D.js",
"node_modules/react-native-svg/lib/extract/transform.js",
"node_modules/react-native-svg/elements/Shape.js",
"node_modules/react-native-svg/lib/SvgTouchableMixin.js",
"node_modules/react-native-svg/elements/Circle.js",
"node_modules/react-native-svg/elements/Ellipse.js",
"node_modules/react-native-svg/elements/Polygon.js",
"node_modules/react-native-svg/elements/Path.js",
"node_modules/react-native-svg/lib/extract/extractPolyPoints.js",
"node_modules/react-native-svg/elements/Polyline.js",
"node_modules/react-native-svg/elements/Line.js",
"node_modules/react-native-svg/elements/Svg.js",
"node_modules/react-native-svg/lib/extract/extractViewBox.js",
"node_modules/react-native-svg/elements/G.js",
"node_modules/react-native-svg/lib/extract/extractText.js",
"node_modules/react-native-svg/elements/Text.js",
"node_modules/react-native-svg/elements/TSpan.js",
"node_modules/react-native-svg/elements/TextPath.js",
"node_modules/react-native-svg/elements/Use.js",
"node_modules/react-native-svg/elements/Image.js",
"node_modules/react-native-svg/elements/Symbol.js",
"node_modules/react-native-svg/elements/Defs.js",
"node_modules/react-native-svg/elements/LinearGradient.js",
"node_modules/react-native-svg/lib/extract/extractGradient.js",
"node_modules/react-native-svg/lib/units.js",
"node_modules/react-native-svg/elements/RadialGradient.js",
"node_modules/react-native-svg/elements/Stop.js",
"node_modules/react-native-svg/elements/ClipPath.js",
"node_modules/react-native-svg/elements/Pattern.js",
"node_modules/react-native-svg/elements/Mask.js",
"node_modules/react-native-firebase/dist/index.js",
"node_modules/react-native-firebase/dist/modules/core/firebase.js",
"node_modules/react-native-firebase/dist/utils/apps.js",
"node_modules/react-native-firebase/dist/modules/core/app.js",
"node_modules/react-native-firebase/dist/utils/internals.js",
"node_modules/react-native-firebase/dist/modules/admob/index.js",
"node_modules/react-native-firebase/dist/utils/ModuleBase.js",
"node_modules/react-native-firebase/dist/utils/native.js",
"node_modules/react-native-firebase/dist/utils/events.js",
"node_modules/react-native-firebase/dist/utils/emitter/EventEmitter.js",
"node_modules/react-native-firebase/dist/utils/emitter/EventSubscriptionVendor.js",
"node_modules/react-native-firebase/dist/utils/emitter/EmitterSubscription.js",
"node_modules/react-native-firebase/dist/utils/emitter/EventSubscription.js",
"node_modules/react-native-firebase/dist/utils/log.js",
"node_modules/react-native-firebase/dist/modules/admob/Interstitial.js",
"node_modules/react-native-firebase/dist/modules/admob/AdRequest.js",
"node_modules/react-native-firebase/dist/utils/index.js",
"node_modules/react-native-firebase/dist/modules/admob/RewardedVideo.js",
"node_modules/react-native-firebase/dist/modules/admob/VideoOptions.js",
"node_modules/react-native-firebase/dist/modules/admob/Banner.js",
"node_modules/react-native-firebase/dist/modules/admob/AdMobComponent.js",
"node_modules/react-native-firebase/node_modules/prop-types/index.js",
"node_modules/react-native-firebase/node_modules/prop-types/factoryWithTypeCheckers.js",
"node_modules/react-native-firebase/node_modules/prop-types/lib/ReactPropTypesSecret.js",
"node_modules/react-native-firebase/node_modules/prop-types/checkPropTypes.js",
"node_modules/react-native-firebase/dist/modules/admob/EventTypes.js",
"node_modules/react-native-firebase/dist/modules/admob/NativeExpress.js",
"node_modules/react-native-firebase/dist/modules/auth/index.js",
"node_modules/react-native-firebase/dist/modules/auth/User.js",
"node_modules/react-native-firebase/dist/modules/auth/phone/ConfirmationResult.js",
"node_modules/react-native-firebase/dist/modules/auth/phone/PhoneAuthListener.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/EmailAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/PhoneAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/GoogleAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/GithubAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/OAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/TwitterAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/auth/providers/FacebookAuthProvider.js",
"node_modules/react-native-firebase/dist/modules/analytics/index.js",
"node_modules/react-native-firebase/dist/modules/config/index.js",
"node_modules/react-native-firebase/dist/modules/crashlytics/index.js",
"node_modules/react-native-firebase/dist/modules/database/index.js",
"node_modules/react-native-firebase/dist/modules/database/Reference.js",
"node_modules/react-native-firebase/dist/modules/database/Query.js",
"node_modules/react-native-firebase/dist/modules/database/DataSnapshot.js",
"node_modules/react-native-firebase/dist/modules/database/OnDisconnect.js",
"node_modules/react-native-firebase/dist/utils/ReferenceBase.js",
"node_modules/react-native-firebase/dist/utils/SyncTree.js",
"node_modules/react-native-firebase/dist/modules/database/transaction.js",
"node_modules/react-native-firebase/dist/modules/firestore/index.js",
"node_modules/react-native-firebase/dist/modules/firestore/CollectionReference.js",
"node_modules/react-native-firebase/dist/modules/firestore/DocumentReference.js",
"node_modules/react-native-firebase/dist/modules/firestore/DocumentSnapshot.js",
"node_modules/react-native-firebase/dist/modules/firestore/FieldPath.js",
"node_modules/react-native-firebase/dist/modules/firestore/Path.js",
"node_modules/react-native-firebase/dist/modules/firestore/Blob.js",
"node_modules/react-native-firebase/dist/utils/Base64.js",
"node_modules/react-native-firebase/dist/modules/firestore/GeoPoint.js",
"node_modules/react-native-firebase/dist/modules/firestore/FieldValue.js",
"node_modules/react-native-firebase/dist/modules/firestore/Query.js",
"node_modules/react-native-firebase/dist/modules/firestore/QuerySnapshot.js",
"node_modules/react-native-firebase/dist/modules/firestore/DocumentChange.js",
"node_modules/react-native-firebase/dist/modules/firestore/WriteBatch.js",
"node_modules/react-native-firebase/dist/modules/firestore/TransactionHandler.js",
"node_modules/react-native-firebase/dist/modules/firestore/Transaction.js",
"node_modules/react-native-firebase/dist/modules/functions/index.js",
"node_modules/react-native-firebase/dist/modules/functions/HttpsError.js",
"node_modules/react-native-firebase/dist/modules/iid/index.js",
"node_modules/react-native-firebase/dist/modules/invites/index.js",
"node_modules/react-native-firebase/dist/modules/invites/Invitation.js",
"node_modules/react-native-firebase/dist/modules/invites/AndroidInvitation.js",
"node_modules/react-native-firebase/dist/modules/links/index.js",
"node_modules/react-native-firebase/dist/modules/links/DynamicLink.js",
"node_modules/react-native-firebase/dist/modules/links/AnalyticsParameters.js",
"node_modules/react-native-firebase/dist/modules/links/AndroidParameters.js",
"node_modules/react-native-firebase/dist/modules/links/IOSParameters.js",
"node_modules/react-native-firebase/dist/modules/links/ITunesParameters.js",
"node_modules/react-native-firebase/dist/modules/links/NavigationParameters.js",
"node_modules/react-native-firebase/dist/modules/links/SocialParameters.js",
"node_modules/react-native-firebase/dist/modules/messaging/index.js",
"node_modules/react-native-firebase/dist/modules/messaging/RemoteMessage.js",
"node_modules/react-native-firebase/dist/modules/notifications/index.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidAction.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidRemoteInput.js",
"node_modules/react-native-firebase/dist/modules/notifications/types.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidChannel.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidChannelGroup.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidNotifications.js",
"node_modules/react-native-firebase/dist/modules/notifications/IOSNotifications.js",
"node_modules/react-native-firebase/dist/modules/notifications/Notification.js",
"node_modules/react-native-firebase/dist/modules/notifications/AndroidNotification.js",
"node_modules/react-native-firebase/dist/modules/notifications/IOSNotification.js",
"node_modules/react-native-firebase/dist/modules/perf/index.js",
"node_modules/react-native-firebase/dist/modules/perf/Trace.js",
"node_modules/react-native-firebase/dist/modules/perf/HttpMetric.js",
"node_modules/react-native-firebase/dist/modules/storage/index.js",
"node_modules/react-native-firebase/dist/modules/storage/reference.js",
"node_modules/react-native-firebase/dist/modules/storage/task.js",
"node_modules/react-native-firebase/dist/modules/utils/index.js",
"node_modules/react-native-firebase/dist/version.js",
"node_modules/react-navigation/src/react-navigation.js",
"node_modules/react-navigation/src/createNavigationContainer.js",
"node_modules/react-navigation/src/NavigationActions.js",
"node_modules/react-navigation/src/getNavigation.js",
"node_modules/react-navigation/src/routers/getNavigationActionCreators.js",
"node_modules/react-navigation/src/utils/invariant.js",
"node_modules/react-navigation/src/getChildNavigation.js",
"node_modules/react-navigation/src/getChildEventSubscriber.js",
"node_modules/react-navigation/src/getChildRouter.js",
"node_modules/react-navigation/src/utils/docsUrl.js",
"node_modules/react-navigation/src/routers/pathUtils.js",
"node_modules/path-to-regexp/index.js",
"node_modules/path-to-regexp/node_modules/isarray/index.js",
"node_modules/react-lifecycles-compat/react-lifecycles-compat.cjs.js",
"node_modules/react-navigation/src/StateUtils.js",
"node_modules/react-navigation/src/navigators/createNavigator.js",
"node_modules/react-navigation/src/navigators/createKeyboardAwareNavigator.js",
"node_modules/react-navigation/src/views/NavigationContext.js",
"node_modules/create-react-context/lib/index.js",
"node_modules/create-react-context/lib/implementation.js",
"node_modules/gud/index.js",
"node_modules/react-navigation-stack/dist/index.js",
"node_modules/react-navigation-stack/dist/navigators/createContainedStackNavigator.js",
"node_modules/react-navigation-stack/dist/navigators/createStackNavigator.js",
"node_modules/react-navigation-stack/dist/views/StackView/StackView.js",
"node_modules/react-navigation-stack/dist/views/StackView/StackViewLayout.js",
"node_modules/react-navigation-stack/dist/utils/clamp.js",
"node_modules/react-navigation-stack/dist/views/StackView/StackViewCard.js",
"node_modules/react-navigation-stack/dist/views/StackView/createPointerEventsContainer.js",
"node_modules/react-navigation-stack/dist/utils/invariant.js",
"node_modules/react-native-screens/src/screens.native.js",
"node_modules/react-navigation-stack/dist/views/Header/Header.js",
"node_modules/react-navigation-stack/dist/views/Header/HeaderTitle.js",
"node_modules/react-navigation-stack/dist/views/Header/HeaderBackButton.js",
"node_modules/react-navigation-stack/dist/views/TouchableItem.js",
"node_modules/react-navigation-stack/dist/views/assets/back-icon.png",
"node_modules/react-navigation-stack/dist/views/Header/ModularHeaderBackButton.js",
"node_modules/react-navigation-stack/dist/views/Header/HeaderStyleInterpolator.js",
"node_modules/react-navigation-stack/dist/utils/getSceneIndicesForInterpolationInputRange.js",
"node_modules/react-navigation-stack/dist/views/StackView/StackViewTransitionConfigs.js",
"node_modules/react-navigation-stack/dist/views/StackView/StackViewStyleInterpolator.js",
"node_modules/react-navigation-stack/dist/utils/ReactNativeFeatures.js",
"node_modules/react-navigation-stack/dist/views/Transitioner.js",
"node_modules/react-navigation-stack/dist/views/ScenesReducer.js",
"node_modules/react-navigation-stack/dist/utils/shallowEqual.js",
"node_modules/react-navigation/src/navigators/createContainedSwitchNavigator.js",
"node_modules/react-navigation/src/navigators/createSwitchNavigator.js",
"node_modules/react-navigation/src/routers/SwitchRouter.js",
"node_modules/react-navigation/src/routers/getScreenForRouteName.js",
"node_modules/react-is/index.js",
"node_modules/react-is/cjs/react-is.production.min.js",
"node_modules/react-navigation/src/routers/createConfigGetter.js",
"node_modules/react-navigation/src/routers/validateScreenOptions.js",
"node_modules/react-navigation/src/routers/StackActions.js",
"node_modules/react-navigation/src/routers/validateRouteConfigMap.js",
"node_modules/react-navigation/src/views/SwitchView/SwitchView.js",
"node_modules/react-navigation/src/views/SceneView.js",
"node_modules/react-navigation-drawer/dist/index.js",
"node_modules/react-navigation-drawer/dist/navigators/createDrawerNavigator.js",
"node_modules/react-navigation-drawer/dist/routers/DrawerRouter.js",
"node_modules/react-navigation-drawer/dist/routers/DrawerActions.js",
"node_modules/react-navigation-drawer/dist/views/DrawerView.js",
"node_modules/react-native-drawer-layout-polyfill/dist/index.android.js",
"node_modules/react-navigation-drawer/dist/views/DrawerSidebar.js",
"node_modules/react-navigation-drawer/dist/utils/invariant.js",
"node_modules/react-navigation-drawer/dist/views/DrawerNavigatorItems.js",
"node_modules/react-navigation-drawer/dist/views/TouchableItem.js",
"node_modules/react-navigation-tabs/src/index.js",
"node_modules/react-navigation-tabs/src/navigators/createBottomTabNavigator.js",
"node_modules/react-navigation-tabs/src/utils/createTabNavigator.js",
"node_modules/react-navigation-tabs/src/views/BottomTabBar.js",
"node_modules/react-navigation-tabs/src/views/CrossFadeIcon.js",
"node_modules/react-navigation-tabs/src/utils/withDimensions.js",
"node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js",
"node_modules/react-navigation-tabs/src/views/ResourceSavingScene.js",
"node_modules/react-navigation/src/routers/StackRouter.js",
"node_modules/react-navigation/src/routers/KeyGenerator.js",
"node_modules/react-navigation/src/routers/TabRouter.js",
"node_modules/react-navigation/src/utils/withDefaultValue.js",
"node_modules/react-navigation/src/views/NavigationEvents.js",
"node_modules/react-navigation/src/views/withNavigation.js",
"node_modules/react-navigation/src/views/withOrientation.js",
"resources/images/ui/dapp-store.png"];

View File

@ -1,5 +1,4 @@
(ns status-im.i18n-resources
(:require-macros [status-im.utils.js-require :as js-require])
(:require [status-im.react-native.js-dependencies :as rn-dependencies]))
(def default-device-language
@ -12,14 +11,14 @@
(conj #{:en} default-device-language)))
(def prod-translations
{:en (js-require/js-require "status-modules/translations/en.json")
:es_419 (js-require/js-require "status-modules/translations/es_419.json")
:fa (js-require/js-require "status-modules/translations/fa.json")
:ko (js-require/js-require "status-modules/translations/ko.json")
:ms (js-require/js-require "status-modules/translations/ms.json")
:pl (js-require/js-require "status-modules/translations/pl.json")
:ru (js-require/js-require "status-modules/translations/ru.json")
:zh_Hans_CN (js-require/js-require "status-modules/translations/zh_Hans_CN.json")})
{:en (js/require "status-modules/translations/en.json")
:es_419 (js/require "status-modules/translations/es_419.json")
:fa (js/require "status-modules/translations/fa.json")
:ko (js/require "status-modules/translations/ko.json")
:ms (js/require "status-modules/translations/ms.json")
:pl (js/require "status-modules/translations/pl.json")
:ru (js/require "status-modules/translations/ru.json")
:zh_Hans_CN (js/require "status-modules/translations/zh_Hans_CN.json")})
(defn valid-language [lang]
(if (contains? prod-translations lang)
@ -30,7 +29,7 @@
(defn require-translation [lang-key]
(when-let [lang (valid-language lang-key)]
((get prod-translations lang))))
(get prod-translations lang)))
;; translations
(def translations-by-locale

View File

@ -1,41 +1,40 @@
(ns status-im.react-native.js-dependencies
(:require-macros [status-im.utils.js-require :as js-require]))
(ns status-im.react-native.js-dependencies)
(def config (js-require/js-require "react-native-config"))
(def fs (js-require/js-require "react-native-fs"))
(def http-bridge (js-require/js-require "react-native-http-bridge"))
(def keychain (js-require/js-require "react-native-keychain"))
(def qr-code (js-require/js-require "qrcode"))
(def config (js/require "react-native-config"))
(def fs (js/require "react-native-fs"))
(def http-bridge (js/require "react-native-http-bridge"))
(def keychain (js/require "react-native-keychain"))
(def qr-code (js/require "qrcode"))
(def react-native (js/require "react-native"))
(def realm (js/require "realm"))
(def webview-bridge (js/require "react-native-webview-bridge"))
(def webview #js {:WebView #js {}})
(def EventEmmiter (fn [] #js {}))
(def securerandom (js-require/js-require "react-native-securerandom"))
(defn secure-random [] (.-generateSecureRandom (securerandom)))
(def fetch-polyfill (js-require/js-require "react-native-fetch-polyfill"))
(defn fetch [] (.-default (fetch-polyfill)))
(def EventEmmiter #js {})
(def securerandom (js/require "react-native-securerandom"))
(def secure-random (.-generateSecureRandom securerandom))
(def fetch-polyfill (js/require "react-native-fetch-polyfill"))
(def fetch (.-default fetch-polyfill))
(def i18n (js/require "i18n-js"))
(def react-native-languages (.-default (js/require "react-native-languages")))
(def desktop-linking (.-DesktopLinking (.-NativeModules react-native)))
(def desktop-menu (js/require "react-native-desktop-menu"))
(def desktop-config (js/require "react-native-desktop-config"))
(def desktop-shortcuts (js/require "react-native-desktop-shortcuts"))
(def react-native-firebase (fn [] #js {}))
(def touchid (fn [] #js {}))
(def camera (fn [] #js {:default #js {:constants {:Aspect "Portrait"}}}))
(def status-keycard (fn [] #js {:default #js {}}))
(def dialogs (fn [] #js {}))
(def dismiss-keyboard (fn [] #js {}))
(def image-crop-picker (fn [] #js {}))
(def image-resizer (fn [] #js {}))
(def react-native-firebase #js {})
(def touchid #js {})
(def camera #js {:default #js {:constants {:Aspect "Portrait"}}})
(def status-keycard #js {:default #js {}})
(def dialogs #js {})
(def dismiss-keyboard #js {})
(def image-crop-picker #js {})
(def image-resizer #js {})
(def svg #js {})
(def snoopy (fn [] #js {}))
(def snoopy-filter (fn [] #js {}))
(def snoopy-bars (fn [] #js {}))
(def snoopy-buffer (fn [] #js {}))
(def background-timer (fn [] #js {:setTimeout (fn [cb ms] (js/setTimeout cb ms))}))
(def snoopy #js {})
(def snoopy-filter #js {})
(def snoopy-bars #js {})
(def snoopy-buffer #js {})
(def background-timer #js {:setTimeout (fn [cb ms] (js/setTimeout cb ms))})
(def react-navigation (js/require "react-navigation"))
(def react-native-navigation-twopane (js/require "react-native-navigation-twopane"))
(def react-native-shake (fn [] #js {}))
(def react-native-mail (fn [] #js {:mail (fn [])}))
(def react-native-shake #js {})
(def react-native-mail #js {:mail (fn [])})

View File

@ -1,43 +1,43 @@
(ns status-im.react-native.js-dependencies
(:require-macros [status-im.utils.js-require :as js-require]))
(ns status-im.react-native.js-dependencies)
(def config (js-require/js-require "react-native-config"))
(def fs (js-require/js-require "react-native-fs"))
(def http-bridge (js-require/js-require "react-native-http-bridge"))
(def keychain (js-require/js-require "react-native-keychain"))
(def qr-code (js-require/js-require "qrcode"))
(def config (js/require "react-native-config"))
(def fs (js/require "react-native-fs"))
(def http-bridge (js/require "react-native-http-bridge"))
(def keychain (js/require "react-native-keychain"))
(def qr-code (js/require "qrcode"))
(def react-native (js/require "react-native"))
(def status-keycard (js-require/js-require "react-native-status-keycard"))
(def status-keycard (js/require "react-native-status-keycard"))
(def realm (js/require "realm"))
(def webview-bridge (js-require/js-require "react-native-webview-bridge"))
(def touchid-class (js-require/js-require "react-native-touch-id"))
(defn touchid [] (.-default (touchid-class)))
(def EventEmmiter (js-require/js-require "react-native/Libraries/vendor/emitter/EventEmitter"))
(def securerandom (js-require/js-require "react-native-securerandom"))
(defn secure-random [] (.-generateSecureRandom (securerandom)))
(def fetch-polyfill (js-require/js-require "react-native-fetch-polyfill"))
(defn fetch [] (.-default (fetch-polyfill)))
(def webview-bridge (js/require "react-native-webview-bridge"))
(def touchid-class (js/require "react-native-touch-id"))
(def touchid (.-default touchid-class))
;(defn webview [] (js/require "react-native-webview"))
(def EventEmmiter (js/require "react-native/Libraries/vendor/emitter/EventEmitter"))
(def securerandom (js/require "react-native-securerandom"))
(def secure-random (.-generateSecureRandom securerandom))
(def fetch-polyfill (js/require "react-native-fetch-polyfill"))
(def fetch (.-default fetch-polyfill))
(def i18n (js/require "i18n-js"))
(def react-native-languages (.-default (js/require "react-native-languages")))
(def camera (js-require/js-require "react-native-camera"))
(def dialogs (js-require/js-require "react-native-dialogs"))
(def dismiss-keyboard (js-require/js-require "dismissKeyboard"))
(def image-crop-picker (js-require/js-require "react-native-image-crop-picker"))
(def image-resizer (js-require/js-require "react-native-image-resizer"))
(def react-native-firebase (js-require/js-require "react-native-firebase"))
(def camera (js/require "react-native-camera"))
(def dialogs (js/require "react-native-dialogs"))
(def dismiss-keyboard (js/require "dismissKeyboard"))
(def image-crop-picker (js/require "react-native-image-crop-picker"))
(def image-resizer (js/require "react-native-image-resizer"))
(def react-native-firebase (js/require "react-native-firebase"))
(def snoopy (js/require "rn-snoopy"))
(def snoopy-filter (js/require "rn-snoopy/stream/filter"))
(def snoopy-bars (js/require "rn-snoopy/stream/bars"))
(def snoopy-buffer (js/require "rn-snoopy/stream/buffer"))
(def background-timer-class (js/require "react-native-background-timer"))
(def background-timer (.-default background-timer-class))
(def svg (js/require "react-native-svg"))
(def snoopy (js-require/js-require "rn-snoopy"))
(def snoopy-filter (js-require/js-require "rn-snoopy/stream/filter"))
(def snoopy-bars (js-require/js-require "rn-snoopy/stream/bars"))
(def snoopy-buffer (js-require/js-require "rn-snoopy/stream/buffer"))
(def background-timer-class (js-require/js-require "react-native-background-timer"))
(defn background-timer [] (.-default (background-timer-class)))
(def react-navigation (js/require "react-navigation"))
(def react-native-navigation-twopane (js/require "react-native-navigation-twopane"))
(def react-native-shake (js-require/js-require "react-native-shake"))
(def react-native-screens (js-require/js-require "react-native-screens"))
(def mail-class (js-require/js-require "react-native-mail"))
(defn react-native-mail [] (.-default (mail-class)))
(def react-native-shake (js/require "react-native-shake"))
(def react-native-screens (js/require "react-native-screens"))
(def mail-class (js/require "react-native-mail"))
(def react-native-mail (.-default mail-class))
(def desktop-linking #js {:addEventListener (fn [])})
(def desktop-menu #js {:addEventListener (fn [])})
(def desktop-config #js {:addEventListener (fn [])})

View File

@ -15,8 +15,4 @@ if [ ! -z "$METRO_PID" ]; then
[[ $term == 'y' ]] && kill $METRO_PID
fi
if [ $TARGET_OS == 'ios' ] || [ $TARGET_OS == 'android' ]; then
react-native start --config packager/config.js
else
react-native start
fi
react-native start

View File

@ -28,7 +28,7 @@
(reagent/create-class
{:component-did-mount
(fn [this]
(.addListener (react/keyboard)
(.addListener react/keyboard
"keyboardDidShow"
(fn [e]
(let [h (.. e -endCoordinates -height)]
@ -36,24 +36,24 @@
(when-not (= h @keyboard-height)
(dispatch [:set :keyboard-height h])
(dispatch [:set :keyboard-max-height h])))))
(.addListener (react/keyboard)
(.addListener react/keyboard
"keyboardDidHide"
(fn [_]
(dispatch [:show-tab-bar])
(when-not (zero? @keyboard-height)
(dispatch [:set :keyboard-height 0]))))
(.hide react/splash-screen)
(.useScreens (rn-dependencies/react-native-screens))
(.addEventListener (react/app-state) "change" app-state-change-handler)
(.useScreens rn-dependencies/react-native-screens)
(.addEventListener react/app-state "change" app-state-change-handler)
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.addEventListener (rn-dependencies/react-native-shake)
(.addEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake)
(dispatch [:set-initial-props (reagent/props this)]))
:component-will-unmount
(fn []
(.stop (react/http-bridge))
(.removeEventListener (react/app-state) "change" app-state-change-handler)
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler)
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change))
:display-name "root"
:reagent-render views/main})))

View File

@ -64,7 +64,7 @@
:bioauth-message (get-error-message code)}))
(defn- do-get-supported [callback]
(-> (.isSupported (rn/touchid))
(-> (.isSupported rn/touchid)
(.then #(callback (or (keyword %) android-default-support)))
(.catch #(callback nil))))
@ -79,7 +79,7 @@
([cb]
(authenticate cb nil))
([cb {:keys [reason ios-fallback-label]}]
(-> (.authenticate (rn/touchid) reason (authenticate-options ios-fallback-label))
(-> (.authenticate rn/touchid reason (authenticate-options ios-fallback-label))
(.then #(cb success-result))
(.catch #(cb (generate-error-result %))))))

View File

@ -57,7 +57,7 @@
(defn check-if-phishing-url [{:keys [history history-index] :as browser}]
(let [history-host (http/url-host (try (nth history history-index) (catch js/Error _)))]
(cond-> browser history-host (assoc :unsafe? ((js-dependencies/phishing-detect) history-host)))))
(cond-> browser history-host (assoc :unsafe? (js-dependencies/phishing-detect history-host)))))
(defn- content->hash [hex]
(when (and hex (not= hex "0x"))
@ -151,7 +151,7 @@
(defmethod storage-gateway :ipfs
[{:keys [hash]}]
(let [base32hash (-> (.encode (js-dependencies/hi-base32) (alphabase.base58/decode hash))
(let [base32hash (-> (.encode js-dependencies/hi-base32 (alphabase.base58/decode hash))
(string/replace #"=" "")
(string/lower-case))]
(str base32hash ".infura.status.im")))

View File

@ -21,7 +21,7 @@
(string/replace text
#":([a-z_\-+0-9]*):"
(fn [[original emoji-id]]
(if-let [emoji-map (object/get (object/get (dependencies/emojis) "lib") emoji-id)]
(if-let [emoji-map (object/get (object/get dependencies/emojis "lib") emoji-id)]
(object/get emoji-map "char")
original)))))

View File

@ -125,7 +125,7 @@
(open-realm (last schemas) file-name encryption-key))
(defn keccak512-array [key]
(.array (.-keccak512 (js-dependencies/js-sha3)) key))
(.array (.-keccak512 js-dependencies/js-sha3) key))
(defn merge-Uint8Arrays [arr1 arr2]
(let [arr1-length (.-length arr1)
@ -136,7 +136,7 @@
arr))
(defn db-encryption-key [password encryption-key]
(let [TextEncoder (.-TextEncoder (js-dependencies/text-encoding))
(let [TextEncoder (.-TextEncoder js-dependencies/text-encoding)
password-array (.encode
(new TextEncoder)
password)]

View File

@ -24,12 +24,12 @@
(reagent/create-class
{:component-did-mount
(fn [this]
(.addEventListener (react/app-state) "change" app-state-change-handler)
(.addEventListener react/app-state "change" app-state-change-handler)
(re-frame/dispatch [:set-initial-props (reagent/props this)]))
:component-will-unmount
(fn []
(.stop (react/http-bridge))
(.removeEventListener (react/app-state) "change" app-state-change-handler))
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler))
:display-name "root"
:reagent-render views/main})
(reagent/create-class

View File

@ -6,25 +6,25 @@
;; Utility functions for encoding
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(defn right-pad [x]
(let [len (count x)
to-pad (- 64 (mod len 64))]
(if (= 64 to-pad)
x
(.rightPad (utils) x (+ len to-pad)))))
(.rightPad utils x (+ len to-pad)))))
(defn left-pad [x]
(let [len (count x)
to-pad (- 64 (mod len 64))]
(if (= 64 to-pad)
x
(.leftPad (utils) x (+ len to-pad)))))
(.leftPad utils x (+ len to-pad)))))
(defn to-two-complement [x]
(when x
(subs (.toTwosComplement (utils) x) 2)))
(subs (.toTwosComplement utils x) 2)))
(defn utf8-to-hex [x]
(when x
@ -35,11 +35,11 @@
(defn bytes-to-hex [x]
(when x
(subs (.bytesToHex (utils) x) 2)))
(subs (.bytesToHex utils x) 2)))
(defn number-to-hex [x]
(when x
(subs (.numberToHex (utils) x) 2)))
(subs (.numberToHex utils x) 2)))
(defn hex-to-utf8 [x]
(ethereum/hex-to-utf8 (str "0x" x)))
@ -48,9 +48,9 @@
(when x
(let [hex-x (str "0x" x)]
(try
(.hexToNumber (utils) hex-x)
(.hexToNumber utils hex-x)
(catch :default err
(.hexToNumberString (utils) hex-x))))))
(.hexToNumberString utils hex-x))))))
(defn is-hex? [value]
(when value

View File

@ -4,20 +4,20 @@
[status-im.js-dependencies :as dependencies]
[status-im.utils.money :as money]))
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(defn sha3 [s]
(when s
(.sha3 (utils) (str s))))
(.sha3 utils (str s))))
(defn utf8-to-hex [s]
(try
(.utf8ToHex (utils) (str s))
(.utf8ToHex utils (str s))
(catch :default err nil)))
(defn hex-to-utf8 [s]
(try
(.hexToUtf8 (utils) s)
(.hexToUtf8 utils s)
(catch :default err nil)))
;; IDs standardized in https://github.com/ethereum/EIPs/blob/master/EIPS/eip-155.md#list-of-chain-ids
@ -83,7 +83,7 @@
(defn address? [s]
(when s
(.isAddress (utils) s)))
(.isAddress utils s)))
(defn network->chain-id [network]
(get-in network [:config :NetworkId]))

View File

@ -7,7 +7,7 @@
(:require [clojure.string :as string]
[status-im.js-dependencies :as dependencies]))
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(def hex-prefix "0x")
@ -16,7 +16,7 @@
[address]
(when address
(.toChecksumAddress
(utils)
utils
(if (string/starts-with? address hex-prefix)
address
(str hex-prefix address)))))
@ -24,4 +24,4 @@
(defn valid-address-checksum?
"Checks address checksum validity."
[address]
(.checkAddressChecksum (utils) address))
(.checkAddressChecksum utils address))

View File

@ -1,8 +1,8 @@
(ns status-im.ethereum.encode
(:require [status-im.js-dependencies :as dependencies]))
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(defn uint
[x]
(.numberToHex (utils) x))
(.numberToHex utils x))

View File

@ -107,7 +107,7 @@
(def CUD-url "https://chaos-unicorn-day.org")
(defn open-chaos-unicorn-day-link []
(.openURL (react/linking) CUD-url))
(.openURL react/linking CUD-url))
(handlers/register-handler-fx
:multiaccounts.ui/chaos-mode-switched

View File

@ -4,9 +4,8 @@
[status-im.utils.config :as config]
[status-im.utils.platform :as platform]))
(defn keycard [] (.-default (js-dependencies/status-keycard)))
(defn event-emitter []
(.-DeviceEventEmitter js-dependencies/react-native))
(defonce keycard (.-default js-dependencies/status-keycard))
(defonce event-emitter (.-DeviceEventEmitter js-dependencies/react-native))
(defn- error-object->map [object]
{:code (.-code object)
@ -15,24 +14,24 @@
(defn check-nfc-support []
(when (and config/hardwallet-enabled?
platform/android?)
(.. (keycard)
(.. keycard
nfcIsSupported
(then #(re-frame/dispatch [:hardwallet.callback/check-nfc-support-success %])))))
(defn check-nfc-enabled []
(when (and config/hardwallet-enabled?
platform/android?)
(.. (keycard)
(.. keycard
nfcIsEnabled
(then #(re-frame/dispatch [:hardwallet.callback/check-nfc-enabled-success %])))))
(defn open-nfc-settings []
(when platform/android?
(.openNfcSettings (keycard))))
(.openNfcSettings keycard)))
(defn remove-event-listeners []
(doseq [event ["keyCardOnConnected" "keyCardOnDisconnected"]]
(.removeAllListeners (event-emitter) event)))
(.removeAllListeners event-emitter event)))
(defn register-card-events []
(when (and config/hardwallet-enabled?
@ -42,38 +41,38 @@
(re-frame/dispatch [:hardwallet.callback/on-register-card-events
{:on-card-connected
(.addListener (event-emitter)
(.addListener event-emitter
"keyCardOnConnected"
#(re-frame/dispatch [:hardwallet.callback/on-card-connected %]))
:on-card-disconnected
(.addListener (event-emitter)
(.addListener event-emitter
"keyCardOnDisconnected"
#(re-frame/dispatch [:hardwallet.callback/on-card-disconnected %]))}])))
(defn get-application-info [{:keys [pairing on-success]}]
(.. (keycard)
(.. keycard
(getApplicationInfo (str pairing))
(then #(re-frame/dispatch [:hardwallet.callback/on-get-application-info-success % on-success]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-get-application-info-error (error-object->map %)]))))
(defn install-applet []
(when config/hardwallet-enabled?
(.. (keycard)
(.. keycard
installApplet
(then #(re-frame/dispatch [:hardwallet.callback/on-install-applet-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-install-applet-error (error-object->map %)])))))
(defn init-card [pin]
(when config/hardwallet-enabled?
(.. (keycard)
(.. keycard
(init pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-init-card-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-init-card-error (error-object->map %)])))))
(defn install-applet-and-init-card [pin]
(when config/hardwallet-enabled?
(.. (keycard)
(.. keycard
(installAppletAndInitCard pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-install-applet-and-init-card-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-install-applet-and-init-card-error (error-object->map %)])))))
@ -81,7 +80,7 @@
(defn pair
[{:keys [password]}]
(when password
(.. (keycard)
(.. keycard
(pair password)
(then #(re-frame/dispatch [:hardwallet.callback/on-pair-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-pair-error (error-object->map %)])))))
@ -89,7 +88,7 @@
(defn generate-mnemonic
[{:keys [pairing words]}]
(when pairing
(.. (keycard)
(.. keycard
(generateMnemonic pairing words)
(then #(re-frame/dispatch [:hardwallet.callback/on-generate-mnemonic-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-generate-mnemonic-error (error-object->map %)])))))
@ -97,7 +96,7 @@
(defn generate-and-load-key
[{:keys [mnemonic pairing pin]}]
(when pairing
(.. (keycard)
(.. keycard
(generateAndLoadKey mnemonic pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-generate-and-load-key-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-generate-and-load-key-error (error-object->map %)])))))
@ -105,7 +104,7 @@
(defn unblock-pin
[{:keys [puk new-pin pairing]}]
(when (and pairing new-pin puk)
(.. (keycard)
(.. keycard
(unblockPin pairing puk new-pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-unblock-pin-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-unblock-pin-error (error-object->map %)])))))
@ -113,7 +112,7 @@
(defn verify-pin
[{:keys [pin pairing]}]
(when (and pairing (not-empty pin))
(.. (keycard)
(.. keycard
(verifyPin pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-verify-pin-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-verify-pin-error (error-object->map %)])))))
@ -121,7 +120,7 @@
(defn change-pin
[{:keys [current-pin new-pin pairing]}]
(when (and pairing current-pin new-pin)
(.. (keycard)
(.. keycard
(changePin pairing current-pin new-pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-change-pin-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-change-pin-error (error-object->map %)])))))
@ -129,28 +128,28 @@
(defn unpair
[{:keys [pin pairing]}]
(when (and pairing pin)
(.. (keycard)
(.. keycard
(unpair pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-unpair-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-unpair-error (error-object->map %)])))))
(defn delete
[]
(.. (keycard)
(.. keycard
(delete)
(then #(re-frame/dispatch [:hardwallet.callback/on-delete-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-delete-error (error-object->map %)]))))
(defn remove-key
[{:keys [pin pairing]}]
(.. (keycard)
(.. keycard
(removeKey pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-remove-key-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-remove-key-error (error-object->map %)]))))
(defn remove-key-with-unpair
[{:keys [pin pairing]}]
(.. (keycard)
(.. keycard
(removeKeyWithUnpair pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-remove-key-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-remove-key-error (error-object->map %)]))))
@ -158,7 +157,7 @@
(defn unpair-and-delete
[{:keys [pin pairing]}]
(when (and pairing pin)
(.. (keycard)
(.. keycard
(unpairAndDelete pairing pin)
(then #(re-frame/dispatch [:hardwallet.callback/on-delete-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-delete-error (error-object->map %)])))))
@ -166,7 +165,7 @@
(defn get-keys
[{:keys [pairing pin on-success]}]
(when (and pairing (not-empty pin))
(.. (keycard)
(.. keycard
(getKeys pairing pin)
(then #(re-frame/dispatch [(or on-success :hardwallet.callback/on-get-keys-success) %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-get-keys-error (error-object->map %)])))))
@ -174,7 +173,7 @@
(defn sign
[{:keys [pairing pin hash]}]
(when (and pairing pin hash)
(.. (keycard)
(.. keycard
(sign pairing pin hash)
(then #(re-frame/dispatch [:hardwallet.callback/on-sign-success %]))
(catch #(re-frame/dispatch [:hardwallet.callback/on-sign-error (error-object->map %)])))))

View File

@ -246,7 +246,7 @@
(fx/defn recovery-phrase-learn-more-pressed
{:events [:keycard.onboarding.recovery-phrase.ui/learn-more-pressed]}
[_]
(.openURL (react/linking) "https://keycard.status.im"))
(.openURL react/linking "https://keycard.status.im"))
(fx/defn recovery-phrase-cancel-pressed
{:events [:keycard.onboarding.recovery-phrase.ui/cancel-pressed]}

View File

@ -27,29 +27,29 @@
(reagent/create-class
{:component-did-mount
(fn [this]
(.addListener (react/keyboard)
(.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)
(.addListener react/keyboard
"keyboardWillHide"
#(when-not (= 0 @keyboard-height)
(dispatch [:set :keyboard-height 0])))
(.hide react/splash-screen)
(.useScreens (rn-dependencies/react-native-screens))
(.addEventListener (react/app-state) "change" app-state-change-handler)
(.useScreens rn-dependencies/react-native-screens)
(.addEventListener react/app-state "change" app-state-change-handler)
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change)
(.addEventListener (rn-dependencies/react-native-shake)
(.addEventListener rn-dependencies/react-native-shake
"ShakeEvent"
on-shake)
(dispatch [:set-initial-props (reagent/props this)]))
:component-will-unmount
(fn []
(.stop (react/http-bridge))
(.removeEventListener (react/app-state) "change" app-state-change-handler)
(.stop react/http-bridge)
(.removeEventListener react/app-state "change" app-state-change-handler)
(.removeEventListener rn-dependencies/react-native-languages "change" on-languages-change))
:display-name "root"
:reagent-render views/main})))

View File

@ -1,14 +1,12 @@
(ns status-im.js-dependencies
(:require-macros [status-im.utils.js-require :as js-require]))
(ns status-im.js-dependencies)
(def Chance (js-require/js-require "chance"))
(def emojis (js-require/js-require "emojilib"))
(def phishing-detect (js-require/js-require "eth-phishing-detect"))
(def homoglyph-finder (js-require/js-require "homoglyph-finder"))
(def identicon-js (js-require/js-require "identicon.js"))
(def Web3 (js-require/js-require "web3"))
(defn web3-prototype [] (.-prototype (Web3)))
(def text-encoding (js-require/js-require "text-encoding"))
(def js-sha3 (js-require/js-require "js-sha3"))
(def web3-utils (js-require/js-require "web3-utils"))
(def hi-base32 (js-require/js-require "hi-base32"))
(def Chance (js/require "chance"))
(def emojis (js/require "emojilib"))
(def phishing-detect (js/require "eth-phishing-detect"))
(def identicon-js (js/require "identicon.js"))
(def Web3 (js/require "web3"))
(def web3-prototype (.-prototype Web3))
(def text-encoding (js/require "text-encoding"))
(def js-sha3 (js/require "js-sha3"))
(def web3-utils (js/require "web3-utils"))
(def hi-base32 (js/require "hi-base32"))

View File

@ -11,8 +11,8 @@
[status-im.ui.screens.mobile-network-settings.events :as mobile-network]))
(defn is-connected? [callback]
(when (react-components/net-info)
(.then (.fetch (.-isConnected (react-components/net-info)))
(when react-components/net-info
(.then (.fetch (.-isConnected react-components/net-info))
(fn [is-connected?]
(log/debug "Is connected?" is-connected?)
(callback is-connected?)))))
@ -23,23 +23,23 @@
on-success #(callback {:type (:type info) :expensive? %})]
(if platform/ios?
(on-success false)
(.. (react-components/net-info)
(.. react-components/net-info
isConnectionExpensive
(then on-success)
(catch (fn [error] (log/warn "isConnectionExpensive: " error))))))))
(defn net-info [callback]
(when (react-components/net-info)
(.then (.getConnectionInfo (react-components/net-info))
(when react-components/net-info
(.then (.getConnectionInfo react-components/net-info)
(wrap-net-info callback))))
(defn add-connection-listener [listener]
(when (react-components/net-info)
(.addEventListener (.-isConnected (react-components/net-info)) "connectionChange" listener)))
(when react-components/net-info
(.addEventListener (.-isConnected react-components/net-info) "connectionChange" listener)))
(defn add-net-info-listener [listener]
(when (react-components/net-info)
(.addEventListener (react-components/net-info) "connectionChange"
(when react-components/net-info
(.addEventListener react-components/net-info "connectionChange"
(wrap-net-info listener))))
(re-frame/reg-fx

View File

@ -9,7 +9,7 @@
[status-im.utils.platform :as platform]))
(when-not platform/desktop?
(def firebase (object/get (rn/react-native-firebase) "default")))
(def firebase (object/get rn/react-native-firebase "default")))
(defn message-handler-fn []
;; message-js is firebase.messaging.RemoteMessage: https://github.com/invertase/react-native-firebase-docs/blob/master/docs/messaging/reference/RemoteMessage.md

View File

@ -27,12 +27,12 @@
(when-not platform/desktop?
(defn firebase [] (object/get (rn/react-native-firebase) "default")))
(def firebase (object/get rn/react-native-firebase "default")))
;; NOTE: Only need to explicitly request permissions on iOS.
(defn request-permissions []
(when-not platform/desktop?
(-> (.requestPermission (.messaging (firebase)))
(-> (.requestPermission (.messaging firebase))
(.then
(fn [_]
(log/debug "notifications-granted"))
@ -162,14 +162,12 @@
(when-let [msg-id (:id decoded-payload)]
;; We must prefix the notification ID, otherwise it will
;; cause a crash in iOS
{:notificationId (str "hash:" msg-id)})))
firebase (firebase)]
{:notificationId (str "hash:" msg-id)})))]
(firebase.notifications.Notification.
native-notification (.notifications firebase))))
(defn display-notification [{:keys [title body] :as params}]
(let [notification (build-notification params)
firebase (firebase)]
(let [notification (build-notification params)]
(when platform/android?
(.. notification
(-android.setChannelId channel-id)
@ -186,15 +184,14 @@
(log/debug "Display Notification error" title body error))))))
(defn get-fcm-token []
(-> (.getToken (.messaging (firebase)))
(-> (.getToken (.messaging firebase))
(.then (fn [x]
(log/debug "get-fcm-token:" x)
(re-frame/dispatch
[:notifications.callback/get-fcm-token-success x])))))
(defn create-notification-channel []
(let [firebase (firebase)
channel (firebase.notifications.Android.Channel.
(let [channel (firebase.notifications.Android.Channel.
channel-id
channel-name
firebase.notifications.Android.Importance.High)]
@ -274,7 +271,7 @@
It is only needed to handle PNs from legacy clients
(which use firebase.notifications API)"
(log/debug "Handle initial push notifications")
(.. (firebase)
(.. firebase
notifications
getInitialNotification
(then (fn [event]
@ -284,7 +281,7 @@
(defn setup-token-refresh-callback []
(.onTokenRefresh
(.messaging (firebase))
(.messaging firebase)
(fn [x]
(log/debug "onTokenRefresh:" x)
(re-frame/dispatch [:notifications.callback/get-fcm-token-success x]))))
@ -296,7 +293,7 @@
"we can remove this method"
(log/debug "calling onNotification")
(.onNotification
(.notifications (firebase))
(.notifications firebase)
(fn [message-js]
(log/debug "handle-on-notification-callback called")
(let [decoded-payload (decode-notification-payload message-js)]
@ -308,7 +305,7 @@
(defn setup-on-message-callback []
(log/debug "calling onMessage")
(.onMessage
(.messaging (firebase))
(.messaging firebase)
(fn [message-js]
(log/debug "handle-on-message-callback called")
(let [decoded-payload (decode-notification-payload message-js)]
@ -320,7 +317,7 @@
(defn setup-on-notification-opened-callback []
(log/debug "setup-on-notification-opened-callback")
(.. (firebase)
(.. firebase
notifications
(onNotificationOpened handle-notification-open-event)))

View File

@ -6,7 +6,7 @@
(def ^:const privacy-policy-link "https://www.iubenda.com/privacy-policy/45710059")
(defn open-privacy-policy-link! []
(.openURL (react/linking) privacy-policy-link))
(.openURL react/linking privacy-policy-link))
(re-frame/reg-fx
:privacy-policy/open-privacy-policy-link

View File

@ -10,17 +10,17 @@
(def max-snt-amount 1000000)
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(defn to-wei
[s]
(when s
(.toWei (utils) s)))
(.toWei utils s)))
(defn from-wei
[s]
(when s
(.fromWei (utils) s)))
(.fromWei utils s)))
(defn tribute-status
[{:keys [system-tags tribute-to-talk] :as contact}]

View File

@ -6,7 +6,7 @@
([anim callback] (.start anim callback)))
(defn anim-loop [animation]
(.loop (react/animated) animation))
(.loop react/animated animation))
(defn interpolate [anim-value config]
(.interpolate anim-value (clj->js config)))
@ -19,31 +19,31 @@
useNativeDriver)))
(defn timing [anim-value config]
(.timing (react/animated)
(.timing react/animated
anim-value
(clj->js (add-native-driver config))))
(defn spring [anim-value config]
(.spring (react/animated)
(.spring react/animated
anim-value
(clj->js (add-native-driver config))))
(defn decay [anim-value config]
(.decay (react/animated)
(.decay react/animated
anim-value
(clj->js (add-native-driver config))))
(defn anim-sequence [animations]
(.sequence (react/animated) (clj->js animations)))
(.sequence react/animated (clj->js animations)))
(defn parallel [animations]
(.parallel (react/animated) (clj->js animations)))
(.parallel react/animated (clj->js animations)))
(defn anim-delay [duration]
(.delay (react/animated) duration))
(.delay react/animated duration))
(defn event [config]
(.event (react/animated) (clj->js [nil, config])))
(.event react/animated (clj->js [nil, config])))
(defn add-listener [anim-value listener]
(.addListener anim-value listener))

View File

@ -107,7 +107,7 @@
(when platform/iphone-x?
[react/view
{:style tabs.styles/ios-titles-cover}])]
[(react/safe-area-view) {:flex 1}]])
[react/safe-area-view {:flex 1}]])
(defn tabs-animation-wrapper-android
[keyboard-shown? view-id content]
@ -156,12 +156,12 @@
(when platform/android?
(reset!
listeners
[(.addListener (react/keyboard) "keyboardDidShow"
[(.addListener react/keyboard "keyboardDidShow"
(fn []
(reset! keyboard-shown? true)
(animate visible?
disappearance-duration 0)))
(.addListener (react/keyboard) "keyboardDidHide"
(.addListener react/keyboard "keyboardDidHide"
(fn []
(reset! keyboard-shown? false)
(animate visible? appearance-duration

View File

@ -80,7 +80,7 @@
(defn swipe-pan-responder [opts]
(.create
(react/pan-responder)
react/pan-responder
(clj->js
{:onMoveShouldSetPanResponder (fn [_ state]
(or (< 10 (js/Math.abs (.-dx state)))

View File

@ -4,10 +4,10 @@
[clojure.walk :as walk]
[status-im.react-native.js-dependencies :as js-dependencies]))
(defn default-camera [] (.-default (js-dependencies/camera)))
(def default-camera (.-default js-dependencies/camera))
(defn constants [t]
(-> (default-camera)
(-> default-camera
(object/get "constants")
(object/get t)
(js->clj)
@ -18,15 +18,15 @@
(def torch-modes (constants "TorchMode"))
(defn set-torch [state]
(set! (.-torchMode (default-camera)) (get torch-modes state)))
(set! (.-torchMode default-camera) (get torch-modes state)))
(defn request-access-ios [then else]
(-> (.checkVideoAuthorizationStatus (default-camera))
(-> (.checkVideoAuthorizationStatus default-camera)
(.then (fn [allowed?] (if allowed? (then) (else))))
(.catch else)))
(defn camera [props]
(reagent/create-element (default-camera) (clj->js (merge {:inverted true} props))))
(reagent/create-element default-camera (clj->js (merge {:inverted true} props))))
(defn get-qr-code-data [code]
(.-data code))

View File

@ -1,10 +1,10 @@
(ns status-im.ui.components.dialog
(:require [status-im.react-native.js-dependencies :as rn-dependencies]))
(defn dialogs [] (.-default (rn-dependencies/dialogs)))
(def dialogs (.-default rn-dependencies/dialogs))
(defn show [{:keys [title options cancel-text on-cancel]}]
(.. (dialogs)
(.. dialogs
(showPicker title nil (clj->js {:items (mapv #(select-keys % [:label])
options)
:negativeText cancel-text

View File

@ -220,7 +220,7 @@
[{:keys [data] :as props}]
{:pre [(or (nil? data)
(sequential? data))]}
[(flat-list-class)
[flat-list-class
(merge (base-list-props props)
props
{:data (wrap-data data)})])
@ -259,7 +259,7 @@
[{:keys [sections render-section-header-fn render-section-footer-fn style] :as props
:or {render-section-header-fn default-render-section-header
style {}}}]
[(section-list-class)
[section-list-class
(merge (base-list-props props)
props
(when render-section-footer-fn

View File

@ -41,13 +41,13 @@
:options [{:label (i18n/label :t/browsing-open-in-status)
:action #(re-frame/dispatch [:browser.ui/open-url link])}
{:label (i18n/label (platform-web-browser))
:action #(.openURL (react/linking) (http/normalize-url link))}]
:action #(.openURL react/linking (http/normalize-url link))}]
:cancel-text (i18n/label :t/browsing-cancel)}))
(defn browse-in-web-browser [link]
(show {:title (i18n/label :t/browsing-title)
:options [{:label (i18n/label (platform-web-browser))
:action #(.openURL (react/linking) (http/normalize-url link))}]
:action #(.openURL react/linking (http/normalize-url link))}]
:cancel-text (i18n/label :t/browsing-cancel)}))
(defn browse-dapp [link]

View File

@ -4,7 +4,7 @@
[status-im.ui.components.camera :as camera]
[status-im.react-native.js-dependencies :as js-dependencies]))
(defn permissions-class [] (.-PermissionsAndroid js-dependencies/react-native))
(def permissions-class (.-PermissionsAndroid js-dependencies/react-native))
(def permissions-map
{:read-external-storage "android.permission.READ_EXTERNAL_STORAGE"
@ -22,7 +22,7 @@
:as options}]
(if platform/android?
(let [permissions (mapv #(get permissions-map %) permissions)]
(-> (.requestMultiple (permissions-class) (clj->js permissions))
(-> (.requestMultiple permissions-class (clj->js permissions))
(.then #(if (all-granted? (js->clj %))
(on-allowed)
(on-denied)))

View File

@ -9,7 +9,7 @@
(defn qr-code [{:keys [size value]}]
(let [uri (reagent/atom nil)]
(.toString (rn-dependencies/qr-code) value #(reset! uri %2))
(.toString rn-dependencies/qr-code value #(reset! uri %2))
(fn []
(when @uri
[svg/svgxml {:xml @uri :width size :height size}]))))

View File

@ -8,7 +8,7 @@
(def webview-bridge-class
(memoize
(fn []
(reagent/adapt-react-class (.-default (js-dependencies/webview-bridge))))))
(reagent/adapt-react-class (.-default js-dependencies/webview-bridge)))))
(defn module [] (.-WebViewBridgeModule (.-NativeModules js-dependencies/react-native)))

View File

@ -1,7 +1,6 @@
(ns status-im.ui.screens.add-new.new-public-chat.db
(:require [clojure.string :as string]
[cljs.spec.alpha :as spec]
[status-im.utils.homoglyph :as utils]
status-im.utils.db))
(spec/def ::name :global/not-empty-string)

View File

@ -18,7 +18,7 @@
(i18n/label :t/browsing-site-blocked-title)]
[react/nested-text {:style styles/description-text}
(i18n/label :t/browsing-site-blocked-description1)
[{:on-press #(.openURL (react/linking) "status-im://chat/public/status")
[{:on-press #(.openURL react/linking "status-im://chat/public/status")
:style styles/chat-link-text}
"#status"]
(i18n/label :t/browsing-site-blocked-description2)]

View File

@ -42,7 +42,7 @@
:on-press #(when (and (security/safe-link? text)
(security/safe-link-text? (-> message :content :text)))
(if platform/desktop?
(.openURL (react/linking) (http/normalize-url text))
(.openURL react/linking (http/normalize-url text))
(re-frame/dispatch [:browser.ui/message-link-pressed text])))})
:tag (fn [text {:keys [outgoing]}]
{:style {:color (if outgoing colors/white colors/blue)

View File

@ -179,12 +179,12 @@
[term-point
(i18n/label :t/ens-terms-point-9 {:address contract})]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link {:on-press #(.openURL (react/linking) (etherscan-url contract))}
[link {:on-press #(.openURL react/linking (etherscan-url contract))}
(i18n/label :t/etherscan-lookup)]]
[term-point
(i18n/label :t/ens-terms-point-10)]
[react/view {:style {:align-items :center :margin-top 16 :margin-bottom 8}}
[link {:on-press #(.openURL (react/linking) (etherscan-url (:mainnet ethereum.ens/ens-registries)))}
[link {:on-press #(.openURL react/linking (etherscan-url (:mainnet ethereum.ens/ens-registries)))}
(i18n/label :t/etherscan-lookup)]]]]))
;; Registration

View File

@ -12,9 +12,9 @@
(defview application-info [visible?]
(letsubs [info [:hardwallet-application-info]
error [:hardwallet-application-info-error]]
[(react/modal) {:visible @visible?
:transparent false
:on-request-close #()}
[react/modal {:visible @visible?
:transparent false
:on-request-close #()}
[react/view {:padding 20
:justify-content :center}
[react/text {:style {:font-size 18

View File

@ -59,7 +59,7 @@
[nfc-disabled])]
(if (= setup-step :begin)
[react/view styles/bottom-container
[react/touchable-highlight {:on-press #(.openURL (react/linking) "https://hardwallet.status.im")}
[react/touchable-highlight {:on-press #(.openURL react/linking "https://hardwallet.status.im")}
[react/view styles/product-info-container
[react/text {:style styles/product-info-text}
(i18n/label :t/product-information)]

View File

@ -115,7 +115,7 @@
[react/view
[action-row {:icon :main-icons/info
:label :t/help-capitalized
:on-press #(.openURL (react/linking) "https://hardwallet.status.im")}]
:on-press #(.openURL react/linking "https://hardwallet.status.im")}]
(when pairing
[react/view
[action-row {:icon :main-icons/add

View File

@ -20,7 +20,7 @@
[status-im.ui.screens.hardwallet.setup.styles :as styles]
[status-im.utils.security :as security]))
(defn event-emitter [] (.-DeviceEventEmitter js-dependencies/react-native))
(defonce event-emitter (.-DeviceEventEmitter js-dependencies/react-native))
(defview secret-keys []
(letsubs [secrets [:hardwallet-secrets]]
@ -323,14 +323,14 @@
:button-label :t/help-capitalized
:show-icon? true
:button-container-style {:background-color colors/white}
:on-press #(.openURL (react/linking) "https://hardwallet.status.im")}])
:on-press #(.openURL react/linking "https://hardwallet.status.im")}])
(defn card-already-linked []
[card-with-button-view {:text-label :t/card-already-linked
:button-label :t/help-capitalized
:show-icon? true
:button-container-style {:background-color colors/white}
:on-press #(.openURL (react/linking) "https://hardwallet.status.im")}])
:on-press #(.openURL react/linking "https://hardwallet.status.im")}])
(defview error []
(letsubs [error [:hardwallet-setup-error]]
@ -379,7 +379,7 @@
(when @listener
(.removeListener @listener))
(reset! listener
(.addListener (event-emitter)
(.addListener event-emitter
"keycardInstallationProgress"
(fn [params]
(when @progress-bar
@ -395,10 +395,10 @@
(i18n/label :t/taking-long-hold-phone-connected)]]
[react/view styles/progress-bar-container
(if (contains? #{:blank :init} card-state)
[(react/progress-bar) {:styleAttr "Horizontal"
:indeterminate false
:progress 0
:ref #(reset! progress-bar %)}]
[react/progress-bar {:styleAttr "Horizontal"
:indeterminate false
:progress 0
:ref #(reset! progress-bar %)}]
[react/activity-indicator {:animating true
:size :large}])]]))

View File

@ -13,7 +13,7 @@
:title :t/faq
:accessibility-label :faq-button
:on-press
#(.openURL (react/linking)
#(.openURL react/linking
(if platform/desktop?
"https://status.im/docs/FAQ-desktop.html"
"https://status.im/docs/FAQs.html"))

View File

@ -28,7 +28,7 @@
:useNativeDriver true})))))
(defn swipe-pan-responder [animated-offset-x end-offset-x chat-id swiped?]
(.create (react/pan-responder)
(.create react/pan-responder
(clj->js {:onMoveShouldSetPanResponder on-start
:onPanResponderMove (on-move animated-offset-x end-offset-x swiped?)
:onPanResponderRelease (on-release animated-offset-x end-offset-x chat-id swiped?)

View File

@ -46,7 +46,7 @@
:text-align :center}}
(i18n/label :t/keycard-onboarding-intro-text)]]
[react/view
[react/touchable-highlight {:on-press #(.openURL (react/linking) "https://keycard.status.im")}
[react/touchable-highlight {:on-press #(.openURL react/linking "https://keycard.status.im")}
[react/view {:flex-direction :row
:align-items :center
:justify-content :center}

View File

@ -47,7 +47,7 @@
:text-align :center}}
(i18n/label :t/keycard-recovery-intro-text)]]
[react/view {:margin-top 33}
[react/touchable-highlight {:on-press #(.openURL (react/linking) "https://keycard.status.im")}
[react/touchable-highlight {:on-press #(.openURL react/linking "https://keycard.status.im")}
[react/view {:flex-direction :row
:align-items :center
:justify-content :center}

View File

@ -331,7 +331,7 @@
:style {:width 144
:height 120}}]
[react/view {:margin-top 40}
[react/touchable-highlight {:on-press #(.openURL (react/linking) "https://keycard.status.im")}
[react/touchable-highlight {:on-press #(.openURL react/linking "https://keycard.status.im")}
[react/view {:flex-direction :row
:align-items :center
:justify-content :center}

View File

@ -181,7 +181,7 @@
(defn info-section []
[react/view {:style styles/info-section}
[react/touchable-highlight {:on-press #(.openURL (react/linking) "https://status.im/tutorials/pairing.html")}
[react/touchable-highlight {:on-press #(.openURL react/linking "https://status.im/tutorials/pairing.html")}
[react/text {:style styles/info-section-text} (i18n/label :t/learn-more)]]])
(defn installations-list [installations]

View File

@ -1,8 +1,7 @@
(ns status-im.ui.screens.profile.db
(:require [cljs.spec.alpha :as spec]
[clojure.string :as string]
[status-im.chat.constants :as chat.constants]
[status-im.utils.homoglyph :as homoglyph]))
[status-im.chat.constants :as chat.constants]))
(defn correct-name? [username]
(when-let [username (some-> username (string/trim))]

View File

@ -326,7 +326,7 @@
fiat-value disable-button? state]}
[:tribute-to-talk/settings-ui]]
[react/keyboard-avoiding-view {:style styles/container}
[(react/safe-area-view) {:style {:flex 1}}
[react/safe-area-view {:style {:flex 1}}
[status-bar/status-bar]
[toolbar/toolbar
nil

View File

@ -152,7 +152,7 @@
;; TODO commented out for now, uncomment when notifications-settings view
;; is populated. Then remove :on-press below
;; :on-press #(re-frame/dispatch [:navigate-to :notifications-settings])
:on-press #(.openURL (react/linking) "app-settings://notification/status-im")
:on-press #(.openURL react/linking "app-settings://notification/status-im")
:accessories [:chevron]}
{:icon :main-icons/mobile
:title :t/sync-settings
@ -198,8 +198,8 @@
content (flat-list-content
preferred-name registrar tribute-to-talk
active-contacts-count show-backup-seed?)]
[(react/safe-area-view) {:style {:flex 1
:margin-bottom tabs.styles/tabs-diff}}
[react/safe-area-view {:style {:flex 1
:margin-bottom tabs.styles/tabs-diff}}
[status-bar/status-bar {:type :main}]
[large-toolbar/minimized-toolbar
(header-in-toolbar multiaccount)

View File

@ -89,7 +89,7 @@
active? (reagent.core/atom true)]
(if platform/android?
[react/view common-styles/modal
[(react/modal)
[react/modal
{:transparent true
:animation-type :slide
:on-request-close (fn []

View File

@ -104,7 +104,7 @@
(reagent/create-class
{:component-did-mount
(fn []
(.addEventListener (react/dimensions)
(.addEventListener react/dimensions
"change"
(fn [dimensions]
(let [two-pane-enabled? (dimensions/fit-two-pane?)]

View File

@ -71,8 +71,8 @@
(reagent/create-class
{:component-did-mount (fn [_]
;;NOTE(goranjovic): keyboardDidShow is for android and keyboardWillShow for ios
(.addListener (react/keyboard) "keyboardDidShow" handler)
(.addListener (react/keyboard) "keyboardWillShow" handler))
(.addListener react/keyboard "keyboardDidShow" handler)
(.addListener react/keyboard "keyboardWillShow" handler))
:reagent-render (fn [opts] (render-send-transaction-view
(assoc opts :amount-input amount-input)))})))

View File

@ -215,7 +215,7 @@
[(actions/opts [{:label (i18n/label :t/copy-transaction-hash)
:action #(react/copy-to-clipboard hash)}
{:label (i18n/label :t/open-on-etherscan)
:action #(.openURL (react/linking) url)}])])
:action #(.openURL react/linking url)}])])
(defview transaction-details-view [hash address]
(letsubs [{:keys [url type confirmations confirmations-progress

View File

@ -6,7 +6,7 @@
(def config
(memoize
(fn []
(js->clj (.-default (rn-dependencies/config)) :keywordize-keys true))))
(js->clj (.-default rn-dependencies/config) :keywordize-keys true))))
(defn get-config
([k] (get (config) k))

View File

@ -6,7 +6,7 @@
(declare window)
(defn add-event-listener []
(.addEventListener (react/dimensions)
(.addEventListener react/dimensions
"change"
#(do
(re-frame/dispatch [:update-window-dimensions %]))))

View File

@ -7,7 +7,7 @@
:email/send
;; https://github.com/chirag04/react-native-mail#example
(fn [[opts callback]]
(.mail (dependencies/react-native-mail)
(.mail dependencies/react-native-mail
(clj->js opts)
callback)))

View File

@ -2,21 +2,21 @@
(:require [status-im.react-native.js-dependencies :as rn-dependencies]))
(defn move-file [src dst]
(.moveFile (rn-dependencies/fs) src dst))
(.moveFile rn-dependencies/fs src dst))
(defn read-file [path encoding on-read on-error]
(-> (.readFile (rn-dependencies/fs) path encoding)
(-> (.readFile rn-dependencies/fs path encoding)
(.then on-read)
(.catch on-error)))
(defn read-dir [path]
(.readDir (rn-dependencies/fs) path))
(.readDir rn-dependencies/fs path))
(defn mkdir [path]
(.mkdir (rn-dependencies/fs) path))
(.mkdir rn-dependencies/fs path))
(defn unlink [path]
(.unlink (rn-dependencies/fs) path))
(.unlink rn-dependencies/fs path))
(defn file-exists? [path]
(.exists (rn-dependencies/fs) path))
(.exists rn-dependencies/fs path))

View File

@ -1,5 +0,0 @@
(ns status-im.utils.homoglyph
(:require [status-im.js-dependencies :as dependencies]))
(defn matches [s1 s2]
(.isMatches (dependencies/homoglyph-finder) s1 s2))

View File

@ -18,7 +18,7 @@
([url body on-success on-error]
(raw-post url body on-success on-error nil))
([url body on-success on-error {:keys [timeout-ms]}]
(-> ((rn-dependencies/fetch)
(-> (rn-dependencies/fetch
url
(clj->js {:method "POST"
:headers {"Cache-Control" "no-cache"}
@ -42,7 +42,7 @@
([url data on-success on-error]
(post url data on-success on-error nil))
([url data on-success on-error {:keys [valid-response? timeout-ms headers]}]
(-> ((rn-dependencies/fetch)
(-> (rn-dependencies/fetch
url
(clj->js (merge {:method "POST"
:body data
@ -82,7 +82,7 @@
([url on-success on-error]
(raw-get url on-success on-error nil))
([url on-success on-error {:keys [timeout-ms]}]
(-> ((rn-dependencies/fetch)
(-> (rn-dependencies/fetch
url
(clj->js {:method "GET"
:headers {"Cache-Control" "no-cache"}
@ -107,7 +107,7 @@
([url on-success on-error params]
(get url on-success on-error params nil))
([url on-success on-error {:keys [valid-response? timeout-ms]} headers]
(-> ((rn-dependencies/fetch)
(-> (rn-dependencies/fetch
url
(clj->js {:method "GET"
:headers (merge {"Cache-Control" "no-cache"} headers)

View File

@ -9,5 +9,5 @@
:size default-size})))
([hash options]
(str "data:image/png;base64,"
(let [identicon-js (dependencies/identicon-js)]
(let [identicon-js dependencies/identicon-js]
(str (new identicon-js hash options))))))

View File

@ -4,7 +4,7 @@
[status-im.react-native.js-dependencies :as rn-dependencies]))
(defn- resize [path max-width max-height on-resize on-error]
(let [resize-fn (-> (rn-dependencies/image-resizer)
(let [resize-fn (-> rn-dependencies/image-resizer
(object/get "default")
(object/get "createResizedImage"))]
(-> (resize-fn path max-width max-height "JPEG" 75 0 nil)

View File

@ -1,9 +0,0 @@
(ns status-im.utils.js-require)
(defmacro js-require [module-name]
(let [js-module (gensym)]
`(let [~js-module (atom nil)]
(fn []
(if (deref ~js-module)
(deref ~js-module)
(reset! ~js-module (js/require ~module-name)))))))

View File

@ -37,7 +37,7 @@
;; to an address (`server`) property.
(defn enum-val [enum-name value-name]
(get-in (js->clj (rn/keychain)) [enum-name value-name]))
(get-in (js->clj rn/keychain) [enum-name value-name]))
;; We need a more strict access mode for keychain entries that save user password.
;; iOS
@ -72,13 +72,13 @@
;; Android only
(defn- secure-hardware-available? [callback]
(-> (.getSecurityLevel (rn/keychain))
(-> (.getSecurityLevel rn/keychain)
(.then (fn [level] (callback (= level keychain-secure-hardware))))))
;; iOS only
(defn- device-encrypted? [callback]
(-> (.canImplyAuthentication
(rn/keychain)
rn/keychain
(clj->js
{:authenticationType
(enum-val "ACCESS_CONTROL" "BIOMETRY_ANY_OR_DEVICE_PASSCODE")}))
@ -86,7 +86,7 @@
;; Stores the password for the address to the Keychain
(defn save-user-password [address password callback]
(-> (.setInternetCredentials (rn/keychain) address address password keychain-secure-hardware (clj->js keychain-restricted-availability))
(-> (.setInternetCredentials rn/keychain address address password keychain-secure-hardware (clj->js keychain-restricted-availability))
(.then callback)))
(defn handle-callback [callback result]
@ -97,7 +97,7 @@
;; Gets the password for a specified address from the Keychain
(defn get-user-password [address callback]
(if (or platform/ios? platform/android?)
(-> (.getInternetCredentials (rn/keychain) address)
(-> (.getInternetCredentials rn/keychain address)
(.then (partial handle-callback callback)))
(callback))) ;; no-op for Desktop
@ -105,7 +105,7 @@
;; (example of usage is logout or signing in w/o "save-password")
(defn clear-user-password [address callback]
(if (or platform/ios? platform/android?)
(-> (.resetInternetCredentials (rn/keychain) address)
(-> (.resetInternetCredentials rn/keychain address)
(.then callback))
(callback true))) ;; no-op for Desktop
@ -148,14 +148,14 @@
(defn store [encryption-key]
(log/debug "storing encryption key")
(-> (.setGenericPassword
(rn/keychain)
rn/keychain
username
(.stringify js/JSON encryption-key))
(.then (constantly encryption-key))))
(defn create []
(log/debug "no key exists, creating...")
(.. ((rn/secure-random) key-bytes)
(.. (rn/secure-random key-bytes)
(then bytes->js-array)))
(defn handle-not-found []
@ -175,7 +175,7 @@
(js/Promise.
(fn [on-success _]
(on-success (security/unmask @generic-password))))
(.. (.getGenericPassword (rn/keychain))
(.. (.getGenericPassword rn/keychain)
(then
(fn [res]
(if res
@ -196,10 +196,10 @@
(defn reset []
(log/debug "resetting key...")
(.resetGenericPassword (rn/keychain)))
(.resetGenericPassword rn/keychain))
(defn set-username []
(when platform/desktop? (.setUsername (rn/keychain) username)))
(when platform/desktop? (.setUsername rn/keychain username)))
;;;; Effects

View File

@ -30,7 +30,7 @@
(defn bignumber [n]
(when n
(try
(.toBigNumber (dependencies/web3-prototype) (normalize (str n)))
(.toBigNumber dependencies/web3-prototype (normalize (str n)))
(catch :default err nil))))
(defn valid? [bn]
@ -40,42 +40,37 @@
(defn str->wei [s]
(when-let [ns (normalize s)]
(try
(.toWei (dependencies/web3-prototype) ns "ether")
(.toWei dependencies/web3-prototype ns "ether")
(catch :default err nil))))
(defn to-decimal [s]
(when s
(try
(.toDecimal (dependencies/web3-prototype) (normalize s))
(.toDecimal dependencies/web3-prototype (normalize s))
(catch :default err nil))))
(defn from-decimal [n] (when n (str "1" (string/join (repeat n "0")))))
(def eth-units
(let [units (atom nil)]
(fn []
(or @units
(reset!
units
{:wei (bignumber "1")
:kwei (bignumber (from-decimal 3))
:mwei (bignumber (from-decimal 6))
:gwei (bignumber (from-decimal 9))
:szabo (bignumber (from-decimal 12))
:finney (bignumber (from-decimal 15))
:eth (bignumber (from-decimal 18))
:keth (bignumber (from-decimal 21))
:meth (bignumber (from-decimal 24))
:geth (bignumber (from-decimal 27))
:teth (bignumber (from-decimal 30))})))))
{:wei (bignumber "1")
:kwei (bignumber (from-decimal 3))
:mwei (bignumber (from-decimal 6))
:gwei (bignumber (from-decimal 9))
:szabo (bignumber (from-decimal 12))
:finney (bignumber (from-decimal 15))
:eth (bignumber (from-decimal 18))
:keth (bignumber (from-decimal 21))
:meth (bignumber (from-decimal 24))
:geth (bignumber (from-decimal 27))
:teth (bignumber (from-decimal 30))})
(defn wei-> [unit n]
(when-let [bn (bignumber n)]
(.dividedBy bn ((eth-units) unit))))
(.dividedBy bn (eth-units unit))))
(defn ->wei [unit n]
(when-let [bn (bignumber n)]
(.times bn ((eth-units) unit))))
(.times bn (eth-units unit))))
(defn to-fixed [bn]
(when bn

View File

@ -33,9 +33,9 @@
(defn no-backup-directory []
(cond
android? (str (.-DocumentDirectoryPath (rn-dependencies/fs))
android? (str (.-DocumentDirectoryPath rn-dependencies/fs)
"/../no_backup")
ios? (.-LibraryDirectoryPath (rn-dependencies/fs))))
ios? (.-LibraryDirectoryPath rn-dependencies/fs)))
(defn android-version>= [v]
(and android? (>= version v)))

View File

@ -3,20 +3,17 @@
[status-im.js-dependencies :as dependencies]
[status-im.utils.datetime :as datetime]))
(defn chance []
(let [Chance (dependencies/Chance)]
(Chance.)))
(def chance (dependencies/Chance.))
(defn guid []
(.guid (chance)))
(.guid chance))
(defn id []
(str (datetime/timestamp) "-" (.guid (chance))))
(str (datetime/timestamp) "-" (.guid chance)))
(defn rand-gen
[seed]
(let [Chance (dependencies/Chance)]
(Chance. seed)))
(dependencies/Chance. seed))
(defn seeded-rand-int
[gen n] (.integer gen #js {:min 0 :max (dec n)}))

View File

@ -2,10 +2,10 @@
(:require [status-im.react-native.js-dependencies :as js-dependencies]
[status-im.utils.config :as config]))
(defn snoopy [] (.-default (js-dependencies/snoopy)))
(defn sn-filter [] (.-default (js-dependencies/snoopy-filter)))
(defn bars [] (.-default (js-dependencies/snoopy-bars)))
(defn buffer [] (.-default (js-dependencies/snoopy-buffer)))
(def snoopy (.-default js-dependencies/snoopy))
(def sn-filter (.-default js-dependencies/snoopy-filter))
(def bars (.-default js-dependencies/snoopy-bars))
(def buffer (.-default js-dependencies/snoopy-buffer))
(defn create-filter [f]
(fn [message]
@ -54,18 +54,16 @@
(defn threshold-warnings
[{:keys [filter-fn label tick? print-events? threshold events threshold-message]}]
(.subscribe (((bars)
(.subscribe ((bars
(fn [a] (.-length a))
threshold
tick?
true
label
threshold-message)
(((buffer))
(((sn-filter)
(create-filter filter-fn)
print-events?)
events)))))
((buffer) ((sn-filter (create-filter filter-fn)
print-events?)
events)))))
;; In order to enable snoopy set SNOOPY=1 in .env file.
;; By default events are not printed and you will see warnings only when
@ -75,9 +73,9 @@
;; and then collect printed data in logs.
(defn subscribe! []
(when config/snoopy-enabled?
(let [emitter-class (js-dependencies/EventEmmiter)
(let [emitter-class js-dependencies/EventEmmiter
emitter (emitter-class.)
events (.stream (snoopy) emitter)]
events (.stream snoopy emitter)]
(threshold-warnings
{:filter-fn (constantly true)
:label "all messages"

View File

@ -147,15 +147,15 @@
and handles incoming url if the app has been started by clicking on a link"
[]
(log/debug "universal-links: initializing")
(.. (react/linking)
(.. react/linking
(getInitialURL)
(then dispatch-url))
(.. (react/linking)
(.. react/linking
(addEventListener "url" url-event-listener)))
(defn finalize
"Remove event listener for url"
[]
(log/debug "universal-links: finalizing")
(.. (react/linking)
(.. react/linking
(removeEventListener "url" url-event-listener)))

View File

@ -84,7 +84,7 @@
(defn set-timeout [cb ms]
(if platform/desktop?
(js/setTimeout cb ms)
(.setTimeout (rn-dependencies/background-timer) cb ms)))
(.setTimeout rn-dependencies/background-timer cb ms)))
(defn unread-messages-count
"display actual # if less than 1K, round to the lowest thousand if between 1 and 10K, otherwise 10K+ for anything larger"
@ -109,14 +109,14 @@
(defn clear-timeout [id]
(if platform/desktop?
(js/clearTimeout id)
(.clearTimeout (rn-dependencies/background-timer) id)))
(.clearTimeout rn-dependencies/background-timer id)))
(defn set-interval [cb ms]
(if platform/desktop?
(js/setInterval cb ms)
(.setInterval (rn-dependencies/background-timer) cb ms)))
(.setInterval rn-dependencies/background-timer cb ms)))
(defn clear-interval [id]
(if platform/desktop?
(js/clearInterval id)
(.clearInterval (rn-dependencies/background-timer) id)))
(.clearInterval rn-dependencies/background-timer id)))

View File

@ -3,7 +3,7 @@
(:require [status-im.ethereum.abi-spec :as abi-spec]
[status-im.js-dependencies :as dependencies]))
(defn utils [] (dependencies/web3-utils))
(def utils dependencies/web3-utils)
(def most-significant-bit 0x80)
(def biggest-int-per-byte 0x7F)
@ -23,7 +23,7 @@
(defn encode-hex [num]
(reduce (fn [hex current-bit]
(str hex
(.leftPad (utils)
(.leftPad utils
(abi-spec/number-to-hex current-bit)
2)))
""

View File

@ -66,7 +66,7 @@
(defn use-default-eth-gas [fx]
(assoc-in fx [:db :wallet :send-transaction :gas]
(ethereum/default-transaction-gas)))
ethereum/default-transaction-gas))
(re-frame/reg-fx
:resolve-address

View File

@ -1,19 +1,19 @@
(ns status-im.react-native.js-dependencies)
(def action-button (fn [] #js {:default #js {:Item #js {}}}))
(def config (fn [] #js {:default #js {}}))
(def camera (fn [] #js {:default #js {:constants #js {}}}))
(def dialogs (fn [] #js {}))
(def dismiss-keyboard (fn [] #js {}))
(def emoji-picker (fn [] #js {:default #js {}}))
(def fs (fn [] #js {}))
(def http-bridge (fn [] #js {}))
(def action-button #js {:default #js {:Item #js {}}})
(def config #js {:default #js {}})
(def camera #js {:default #js {:constants #js {}}})
(def dialogs #js {})
(def dismiss-keyboard #js {})
(def emoji-picker #js {:default #js {}})
(def fs #js {})
(def http-bridge #js {})
(def i18n #js {:locale "en"})
(def react-native-languages #js {:language "en", :addEventListener (fn []), :removeEventListener (fn [])})
(def image-crop-picker (fn [] #js {}))
(def image-resizer (fn [] #js {}))
(def qr-code (fn [] #js {}))
(def svg (fn [] #js {}))
(def image-crop-picker #js {})
(def image-resizer #js {})
(def qr-code #js {})
(def svg #js {})
(def react-native
#js {:NativeModules #js {}
@ -24,35 +24,34 @@
(def realm #js {:schemaVersion (fn [])
:defaultPath "/tmp/realm"
:close (fn [])})
(def vector-icons (fn [] #js {:default #js {}}))
(def webview-bridge (fn [] #js {:default #js {}}))
(def webview (fn [] #js {:WebView #js {}}))
(def touchid (fn [] #js {}))
(def status-keycard (fn [] #js {:default #js {}}))
(def vector-icons #js {:default #js {}})
(def webview-bridge #js {:default #js {}})
(def webview #js {:WebView #js {}})
(def svg #js {:default #js {}})
(def status-keycard #js {:default #js {}})
(defrecord Notification [])
(def react-native-firebase (fn [] #js {:default #js {:notifications #js {:Notification Notification}}}))
(def react-native-firebase #js {:default #js {:notifications #js {:Notification Notification}}})
(def desktop-linking #js {:addEventListener (fn [])})
(def desktop-shortcuts #js {:addEventListener (fn [])})
(def snoopy (fn [] #js {:default #js {}}))
(def snoopy-filter (fn [] #js {:default #js {}}))
(def snoopy-bars (fn [] #js {:default #js {}}))
(def snoopy-buffer (fn [] #js {:default #js {}}))
(def snoopy #js {:default #js {}})
(def snoopy-filter #js {:default #js {}})
(def snoopy-bars #js {:default #js {}})
(def snoopy-buffer #js {:default #js {}})
(def fetch #js {})
(def fetch (fn [] #js {}))
(def background-timer #js {:setTimeout js/setTimeout
:setInterval js/setInterval
:clearTimeout js/clearTimeout
:clearInterval js/clearInterval})
(def background-timer (fn [] #js {:setTimeout js/setTimeout
:setInterval js/setInterval
:clearTimeout js/clearTimeout
:clearInterval js/clearInterval}))
(def keychain (fn [] #js {:setGenericPassword (constantly (.resolve js/Promise true))}))
(def secure-random (fn [] #(.resolve js/Promise (clj->js (range 0 %)))))
(def keychain #js {:setGenericPassword (constantly (.resolve js/Promise true))})
(def secure-random #(.resolve js/Promise (clj->js (range 0 %))))
(def react-navigation #js {:NavigationActions #js {}})
(def desktop-menu #js {})
(def desktop-config #js {})
(def react-native-mail (fn [] #js {:mail #js {}}))
(def react-native-mail #js {:mail #js {}})
(def react-native-navigation-twopane #js {})

View File

@ -14,7 +14,7 @@
(deftest key-does-not-exists
(async
done
(with-redefs [rn/keychain (fn [] #js {:getGenericPassword (constantly (.resolve js/Promise nil))})]
(with-redefs [rn/keychain #js {:getGenericPassword (constantly (.resolve js/Promise nil))}]
(testing "it returns a valid key"
(.. (keychain/get-encryption-key)
(then (fn [k]
@ -24,10 +24,10 @@
(is (not err))
(done))))))))
(deftest key-does-exists
(deftest key-does-exist
(async
done
(with-redefs [rn/keychain (fn [] #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json (range 64 128))}))})]
(with-redefs [rn/keychain #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json (range 64 128))}))}]
(testing "it returns a valid key"
(.. (keychain/get-encryption-key)
(then (fn [k]
@ -40,7 +40,7 @@
(deftest key-is-weak
(async
done
(with-redefs [rn/keychain (fn [] #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json weak-key)}))})
(with-redefs [rn/keychain #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json weak-key)}))}
keychain/generic-password (atom nil)]
(testing "it returns a valid key"
(.. (keychain/get-encryption-key)
@ -55,7 +55,7 @@
(deftest safe-key-is-not-valid
(async
done
(with-redefs [rn/keychain (fn [] #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json weak-key)}))})
(with-redefs [rn/keychain #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password (key->json weak-key)}))}
keychain/generic-password (atom nil)]
(testing "it returns a valid key"
(.. (keychain/safe-get-encryption-key)
@ -69,7 +69,7 @@
(deftest safe-key-is-nil
(async
done
(with-redefs [rn/keychain (fn [] #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password nil}))})
(with-redefs [rn/keychain #js {:getGenericPassword (constantly (.resolve js/Promise #js {:password nil}))}
keychain/generic-password (atom nil)]
(testing "it returns a valid key"
(.. (keychain/safe-get-encryption-key)