Update react navigation and rework wrapper
Get rid of navigation wrapper Use new API to declare navigation Update tabbar component Update to use new navigation events Add ios presentation modal Navigation cleanups Android specific updates Use letsubs for stack subscriptions Keycard did load event backward compatibility Fix tabbar and wallet on-focus bad rebase Do not keep welcome screen into the stack Comment outdated test Fix rebase on home PR Cancel back button on screens which can't be popped Signed-off-by: Gheorghe Pinzaru <feross95@gmail.com>
This commit is contained in:
parent
61d465a343
commit
d823a2082a
|
@ -296,6 +296,10 @@ dependencies {
|
|||
implementation jscFlavor
|
||||
}
|
||||
|
||||
// react-native-screens
|
||||
implementation 'androidx.appcompat:appcompat:1.1.0-rc01'
|
||||
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0-alpha02'
|
||||
|
||||
implementation 'androidx.multidex:multidex:2.0.1' // only needed if minSdkVersion is less than 21 (https://developer.android.com/studio/build/multidex)
|
||||
implementation project(':react-native-dialogs')
|
||||
// Force using exact RN version instead of relying on gradle dependency resolution
|
||||
|
|
|
@ -34,8 +34,10 @@
|
|||
"react-native/Libraries/vendor/emitter/EventEmitter"
|
||||
"react-native-background-timer"
|
||||
"react-native-fetch-polyfill"
|
||||
"react-navigation"
|
||||
"react-native-navigation-twopane"
|
||||
"@react-navigation/native"
|
||||
"@react-navigation/stack"
|
||||
"@react-navigation/bottom-tabs"
|
||||
;; "react-native-navigation-twopane"
|
||||
"hi-base32"
|
||||
"functional-red-black-tree"
|
||||
"react-native-mail"
|
||||
|
@ -74,9 +76,8 @@
|
|||
"react-native-desktop-notification"
|
||||
"react-native-desktop-gesture-handler"
|
||||
"web3-utils"
|
||||
"react-navigation"
|
||||
"functional-red-black-tree"
|
||||
"react-native-navigation-twopane"
|
||||
;; "react-native-navigation-twopane"
|
||||
"hi-base32"]
|
||||
|
||||
;; Resoures
|
||||
|
|
|
@ -246,10 +246,9 @@
|
|||
;; KeyboardAvoidingView
|
||||
|
||||
(defn keyboard-avoiding-view [props & children]
|
||||
(let [view-element (if platform/ios?
|
||||
[keyboard-avoiding-view-class (merge {:behavior :padding} props)]
|
||||
[view props])]
|
||||
(vec (concat view-element children))))
|
||||
(into [keyboard-avoiding-view-class
|
||||
(merge (when platform/ios? {:behavior :padding}) props)]
|
||||
children))
|
||||
|
||||
(defn scroll-view [props & children]
|
||||
(vec (conj children props scroll-view-class)))
|
||||
|
@ -271,51 +270,7 @@
|
|||
[activity-indicator {:animating true}]])
|
||||
comp)))
|
||||
|
||||
(defn navigation-wrapper
|
||||
"Wraps component so that it will be shown only when current-screen is one of views"
|
||||
[{:keys [component views current-view hide?]
|
||||
:or {hide? false}}]
|
||||
(let [current-view? (if (set? views)
|
||||
(views current-view)
|
||||
(= views current-view))
|
||||
|
||||
style (if current-view?
|
||||
{:flex 1
|
||||
:zIndex 0}
|
||||
{:opacity 0
|
||||
:flex 0
|
||||
:zIndex -1})
|
||||
|
||||
component' (if (fn? component) [component] component)]
|
||||
|
||||
(when (or (not hide?) (and hide? current-view?))
|
||||
(if hide?
|
||||
component'
|
||||
[view style (if (fn? component) [component] component)]))))
|
||||
|
||||
(defn with-empty-preview [comp]
|
||||
[with-activity-indicator
|
||||
{:preview [view {}]}
|
||||
comp])
|
||||
|
||||
(def safe-area-provider (adapt-class (object/get js-dependencies/safe-area-context "SafeAreaProvider")))
|
||||
(def safe-area-consumer (adapt-class (object/get js-dependencies/safe-area-context "SafeAreaConsumer")))
|
||||
|
||||
(defn create-main-screen-view [current-view]
|
||||
(fn [props & children]
|
||||
(apply
|
||||
vector
|
||||
(adapt-class (object/get js-dependencies/safe-area-context "SafeAreaView"))
|
||||
(cond-> props
|
||||
(= current-view :qr-scanner)
|
||||
(assoc :background-color :black))
|
||||
children)))
|
||||
|
||||
(defn main-screen-modal-view [current-view & components]
|
||||
[(create-main-screen-view current-view)
|
||||
styles/flex
|
||||
[keyboard-avoiding-view
|
||||
(merge {:flex 1 :flex-direction :column}
|
||||
(when platform/android?
|
||||
{:background-color :white}))
|
||||
(apply vector view styles/flex components)]])
|
||||
(def safe-area-view (adapt-class (object/get js-dependencies/safe-area-context "SafeAreaView")))
|
||||
|
|
4
deps.edn
4
deps.edn
|
@ -8,12 +8,12 @@
|
|||
:sha "b0d3b0f016f217c6a397a54e5eba9486471fb172"
|
||||
:deps/manifest :deps}
|
||||
com.andrewmcveigh/cljs-time {:mvn/version "0.5.2"}
|
||||
binaryage/oops {:mvn/version "0.7.0"}
|
||||
status-im/timbre {:mvn/version "4.10.0-2-status"}
|
||||
com.taoensso/encore {:mvn/version "2.94.0"}
|
||||
hickory {:mvn/version "0.7.1"}
|
||||
cljs-bean {:mvn/version "1.3.0"}
|
||||
mvxcvi/alphabase {:mvn/version "1.0.0"}
|
||||
rasom/cljs-react-navigation {:mvn/version "0.1.4"}}
|
||||
mvxcvi/alphabase {:mvn/version "1.0.0"}}
|
||||
|
||||
:aliases
|
||||
{:dev {:extra-deps
|
||||
|
|
|
@ -244,9 +244,11 @@ PODS:
|
|||
- React-cxxreact (= 0.61.5)
|
||||
- React-jsi (= 0.61.5)
|
||||
- ReactCommon/jscallinvoker (= 0.61.5)
|
||||
- RNCMaskedView (0.1.6):
|
||||
- React
|
||||
- RNFS (2.14.1):
|
||||
- React
|
||||
- RNGestureHandler (1.5.2):
|
||||
- RNGestureHandler (1.5.3):
|
||||
- React
|
||||
- RNImageCropPicker (0.25.3):
|
||||
- QBImagePickerController
|
||||
|
@ -257,7 +259,9 @@ PODS:
|
|||
- React
|
||||
- RNLanguages (3.0.2):
|
||||
- React
|
||||
- RNScreens (1.0.0-alpha.23):
|
||||
- RNReanimated (1.7.0):
|
||||
- React
|
||||
- RNScreens (2.0.0-alpha.25):
|
||||
- React
|
||||
- RNSVG (9.11.1):
|
||||
- React
|
||||
|
@ -310,11 +314,13 @@ DEPENDENCIES:
|
|||
- React-RCTVibration (from `../node_modules/react-native/Libraries/Vibration`)
|
||||
- ReactCommon/jscallinvoker (from `../node_modules/react-native/ReactCommon`)
|
||||
- ReactCommon/turbomodule/core (from `../node_modules/react-native/ReactCommon`)
|
||||
- "RNCMaskedView (from `../node_modules/@react-native-community/masked-view`)"
|
||||
- RNFS (from `../node_modules/react-native-fs`)
|
||||
- RNGestureHandler (from `../node_modules/react-native-gesture-handler`)
|
||||
- RNImageCropPicker (from `../node_modules/react-native-image-crop-picker`)
|
||||
- RNKeychain (from `../node_modules/react-native-keychain`)
|
||||
- RNLanguages (from `../node_modules/react-native-languages`)
|
||||
- RNReanimated (from `../node_modules/react-native-reanimated`)
|
||||
- RNScreens (from `../node_modules/react-native-screens`)
|
||||
- RNSVG (from `../node_modules/react-native-svg`)
|
||||
- SQLCipher (~> 3.0)
|
||||
|
@ -399,6 +405,8 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native/Libraries/Vibration"
|
||||
ReactCommon:
|
||||
:path: "../node_modules/react-native/ReactCommon"
|
||||
RNCMaskedView:
|
||||
:path: "../node_modules/@react-native-community/masked-view"
|
||||
RNFS:
|
||||
:path: "../node_modules/react-native-fs"
|
||||
RNGestureHandler:
|
||||
|
@ -409,6 +417,8 @@ EXTERNAL SOURCES:
|
|||
:path: "../node_modules/react-native-keychain"
|
||||
RNLanguages:
|
||||
:path: "../node_modules/react-native-languages"
|
||||
RNReanimated:
|
||||
:path: "../node_modules/react-native-reanimated"
|
||||
RNScreens:
|
||||
:path: "../node_modules/react-native-screens"
|
||||
RNSVG:
|
||||
|
@ -455,12 +465,14 @@ SPEC CHECKSUMS:
|
|||
React-RCTText: 9ccc88273e9a3aacff5094d2175a605efa854dbe
|
||||
React-RCTVibration: a49a1f42bf8f5acf1c3e297097517c6b3af377ad
|
||||
ReactCommon: 198c7c8d3591f975e5431bec1b0b3b581aa1c5dd
|
||||
RNCMaskedView: a88953beefbd347a29072d9eba90e42945fe291e
|
||||
RNFS: a8fbe7060fa49157d819466404794ad9c58e58cf
|
||||
RNGestureHandler: 946a7691e41df61e2c4b1884deab41a4cdc3afff
|
||||
RNGestureHandler: 02905abe54e1f6e59c081a10b4bd689721e17aa6
|
||||
RNImageCropPicker: bfb3ea9c8622f290532e2fe63f369e0d5a52f597
|
||||
RNKeychain: 216f37338fcb9e5c3a2530f1e3295f737a690cb1
|
||||
RNLanguages: 962e562af0d34ab1958d89bcfdb64fafc37c513e
|
||||
RNScreens: f28b48b8345f2f5f39ed6195518291515032a788
|
||||
RNReanimated: 031fe8d9ea93c2bd689a40f05320ef9d96f74d7f
|
||||
RNScreens: 031d10e2b648afc9546f16b6a786d2efc6870310
|
||||
RNSVG: be27aa7c58819f97399388ae53d7fa0572f32c7f
|
||||
RSKImageCropper: a446db0e8444a036b34f3c43db01b2373baa4b2a
|
||||
SQLCipher: f9fcf29b2e59ced7defc2a2bdd0ebe79b40d4990
|
||||
|
|
|
@ -6,7 +6,11 @@
|
|||
"start": "react-native start"
|
||||
},
|
||||
"dependencies": {
|
||||
"@react-native-community/masked-view": "^0.1.6",
|
||||
"@react-native-community/netinfo": "^4.4.0",
|
||||
"@react-navigation/bottom-tabs": "^5.1.1",
|
||||
"@react-navigation/native": "^5.0.9",
|
||||
"@react-navigation/stack": "^5.1.1",
|
||||
"bignumber.js": "git+https://github.com/status-im/bignumber.js.git#v4.0.2-status",
|
||||
"buffer": "^5.4.2",
|
||||
"chance": "^1.1.0",
|
||||
|
@ -27,15 +31,16 @@
|
|||
"react-native-dialogs": "^1.0.4",
|
||||
"react-native-fetch-polyfill": "^1.1.2",
|
||||
"react-native-fs": "^2.14.1",
|
||||
"react-native-gesture-handler": "^1.3.0",
|
||||
"react-native-gesture-handler": "^1.5.3",
|
||||
"react-native-image-crop-picker": "^0.25.0",
|
||||
"react-native-image-resizer": "git+https://github.com/status-im/react-native-image-resizer.git#1.0.0-1-status",
|
||||
"react-native-keychain": "git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status",
|
||||
"react-native-languages": "^3.0.2",
|
||||
"react-native-mail": "git+https://github.com/status-im/react-native-mail.git#v4.0.0-status",
|
||||
"react-native-navigation-twopane": "git+https://github.com/status-im/react-native-navigation-twopane.git#v0.0.2-status",
|
||||
"react-native-safe-area-context": "^0.6.0",
|
||||
"react-native-screens": "^1.0.0-alpha.23",
|
||||
"react-native-reanimated": "^1.7.0",
|
||||
"react-native-safe-area-context": "^0.7.3",
|
||||
"react-native-screens": "^2.0.0-alpha.25",
|
||||
"react-native-shake": "^3.3.1",
|
||||
"react-native-splash-screen": "^3.2.0",
|
||||
"react-native-status-keycard": "git+https://github.com/status-im/react-native-status-keycard.git#v2.5.20",
|
||||
|
@ -43,7 +48,6 @@
|
|||
"react-native-touch-id": "^4.4.1",
|
||||
"react-native-webview": "^6.11.1",
|
||||
"react-native-webview-bridge": "git+https://github.com/status-im/react-native-webview-bridge.git#fix/community-webview",
|
||||
"react-navigation": "^3.11.0",
|
||||
"web3-utils": "^1.2.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
|
|
|
@ -1004,29 +1004,57 @@
|
|||
wcwidth "^1.0.1"
|
||||
ws "^1.1.0"
|
||||
|
||||
"@react-native-community/masked-view@^0.1.6":
|
||||
version "0.1.6"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/masked-view/-/masked-view-0.1.6.tgz#c7f2ac187c1f25aa8c30d11baa8f4398eca3bb84"
|
||||
integrity sha512-PpMoeXwPUoldCRKDuSi+zK5rT+sJTW6ri6RdGPkSKRzU77Q1d9IaR0O5IKvBj0XSdL3p+dcOa05gk35aGDffBQ==
|
||||
|
||||
"@react-native-community/netinfo@^4.4.0":
|
||||
version "4.4.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-native-community/netinfo/-/netinfo-4.4.0.tgz#a18eb9ba082b6aca6add004b4a918250ad7d13bc"
|
||||
integrity sha512-qqNWMOsrDjj/daqV21ID2T8mNUjZD4pdx3PuWyE65gzKh2w+oMnzKb+J0NbLyZPn3wwLwU1+Cpf58A0ff5szjQ==
|
||||
|
||||
"@react-navigation/core@~3.5.1":
|
||||
version "3.5.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-3.5.1.tgz#7a2339fca3496979305fb3a8ab88c2ca8d8c214d"
|
||||
integrity sha512-q7NyhWVYOhVIWqL2GZKa6G78YarXaVTTtOlSDkvy4ZIggo40wZzamlnrJRvsaQX46gsgw45FAWb5SriHh8o7eA==
|
||||
"@react-navigation/bottom-tabs@^5.1.1":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/bottom-tabs/-/bottom-tabs-5.1.1.tgz#04636a6b0c2105228f81d6b05aab285a1fcc7ff9"
|
||||
integrity sha512-3eKoLgBsRKXFQoWv9co6bXr2DjlRDtgaS1XZ/2LpOs27lDthShGdVkWzTVaFZ6aGf6pOhUaeKtd8wX+jkUXk0A==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^3.3.0"
|
||||
path-to-regexp "^1.7.0"
|
||||
query-string "^6.4.2"
|
||||
react-is "^16.8.6"
|
||||
color "^3.1.2"
|
||||
react-native-iphone-x-helper "^1.2.1"
|
||||
|
||||
"@react-navigation/native@~3.6.2":
|
||||
version "3.6.2"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-3.6.2.tgz#3634697b6350cc5189657ae4551f2d52b57fbbf0"
|
||||
integrity sha512-Cybeou6N82ZeRmgnGlu+wzlV3z5BZQR2dmYaNFV1TNLUGHqtvv8E7oNw9uYcz9Ox5LFbiX+FdNTn2d6ZPlK0kg==
|
||||
"@react-navigation/core@^5.2.1":
|
||||
version "5.2.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/core/-/core-5.2.1.tgz#8fae1b40b3fbaeb70c6182e00899a2e4d281a12f"
|
||||
integrity sha512-fRezZDtVFMfPtCkFUXFZlhrtECXuuFE9t2LnSyZdm3hZXBf7Gp6KvcMrlzAVXC/n8YCDSqhtDYz7EbF2gX6DJg==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^3.0.1"
|
||||
react-native-safe-area-view "^0.14.1"
|
||||
react-native-screens "^1.0.0 || ^1.0.0-alpha"
|
||||
"@react-navigation/routers" "^5.1.0"
|
||||
escape-string-regexp "^2.0.0"
|
||||
query-string "^6.10.1"
|
||||
react-is "^16.12.0"
|
||||
shortid "^2.2.15"
|
||||
use-subscription "^1.3.0"
|
||||
|
||||
"@react-navigation/native@^5.0.9":
|
||||
version "5.0.9"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/native/-/native-5.0.9.tgz#bbd22928f0fbe808a96dd525ebeb9a1aa0b82900"
|
||||
integrity sha512-iiCBWKv5zQ/PdvGhUEqMyDU30KK8PL2yXIG0j0CCTXriwRebJ1GPhBtfJdDFkSzzFt9Mhxgmok/+GJV8HqvJqA==
|
||||
dependencies:
|
||||
"@react-navigation/core" "^5.2.1"
|
||||
|
||||
"@react-navigation/routers@^5.1.0":
|
||||
version "5.1.0"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/routers/-/routers-5.1.0.tgz#ec741e734d501b7024120bef3d109b17f69a7b6b"
|
||||
integrity sha512-sY+eCIcWheflQIfGMSnWomnjP8d+7ZPmH1dKZ1pRezTqLWVlCFntQfQSr2FfM5LLVWty4gZ/K9D+o6UT4ntc3w==
|
||||
dependencies:
|
||||
shortid "^2.2.15"
|
||||
|
||||
"@react-navigation/stack@^5.1.1":
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/@react-navigation/stack/-/stack-5.1.1.tgz#4fff1dc3fec66d7b71cfc31691d6e83d8777d5f8"
|
||||
integrity sha512-tQV4SNESAeqViItGFT8bLrCGWxYfSjw4uXGrCokzSBOMtrdUwINwXDqo40LZt/KZOT0kVN6MdzHq57ILB1LsGA==
|
||||
dependencies:
|
||||
color "^3.1.2"
|
||||
react-native-iphone-x-helper "^1.2.1"
|
||||
|
||||
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0":
|
||||
version "2.0.1"
|
||||
|
@ -1724,7 +1752,7 @@ collection-visit@^1.0.0:
|
|||
map-visit "^1.0.0"
|
||||
object-visit "^1.0.0"
|
||||
|
||||
color-convert@^1.9.0:
|
||||
color-convert@^1.9.0, color-convert@^1.9.1:
|
||||
version "1.9.3"
|
||||
resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8"
|
||||
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
||||
|
@ -1736,11 +1764,32 @@ color-name@1.1.3:
|
|||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25"
|
||||
integrity sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=
|
||||
|
||||
color-name@^1.0.0:
|
||||
version "1.1.4"
|
||||
resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
|
||||
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
||||
|
||||
color-string@^1.5.2:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/color-string/-/color-string-1.5.3.tgz#c9bbc5f01b58b5492f3d6857459cb6590ce204cc"
|
||||
integrity sha512-dC2C5qeWoYkxki5UAXapdjqO672AM4vZuPGRQfO8b5HKuKGBbKWpITyDYN7TOFKvRW7kOgAn3746clDBMDJyQw==
|
||||
dependencies:
|
||||
color-name "^1.0.0"
|
||||
simple-swizzle "^0.2.2"
|
||||
|
||||
color-support@^1.1.3:
|
||||
version "1.1.3"
|
||||
resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2"
|
||||
integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==
|
||||
|
||||
color@^3.1.2:
|
||||
version "3.1.2"
|
||||
resolved "https://registry.yarnpkg.com/color/-/color-3.1.2.tgz#68148e7f85d41ad7649c5fa8c8106f098d229e10"
|
||||
integrity sha512-vXTJhHebByxZn3lDvDJYw4lR5+uB3vuoHsuYA5AKuxRVn5wzzIfQKGLBmgdVRHKTJYeK5rvJcHnrd0Li49CFpg==
|
||||
dependencies:
|
||||
color-convert "^1.9.1"
|
||||
color-string "^1.5.2"
|
||||
|
||||
colorette@^1.0.7:
|
||||
version "1.1.0"
|
||||
resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.1.0.tgz#1f943e5a357fac10b4e0f5aaef3b14cdc1af6ec7"
|
||||
|
@ -2203,6 +2252,11 @@ escape-string-regexp@1.0.5, escape-string-regexp@^1.0.5:
|
|||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
|
||||
integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=
|
||||
|
||||
escape-string-regexp@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344"
|
||||
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
|
||||
|
||||
eslint-plugin-jsx-a11y@5.1.1:
|
||||
version "5.1.1"
|
||||
resolved "https://registry.yarnpkg.com/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-5.1.1.tgz#5c96bb5186ca14e94db1095ff59b3e2bd94069b1"
|
||||
|
@ -2817,18 +2871,11 @@ hmac-drbg@^1.0.0:
|
|||
minimalistic-assert "^1.0.0"
|
||||
minimalistic-crypto-utils "^1.0.1"
|
||||
|
||||
hoist-non-react-statics@^2.3.1, hoist-non-react-statics@^2.5.0:
|
||||
hoist-non-react-statics@^2.3.1:
|
||||
version "2.5.5"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz#c5903cf409c0dfd908f388e619d86b9c1174cb47"
|
||||
integrity sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==
|
||||
|
||||
hoist-non-react-statics@^3.0.1, hoist-non-react-statics@^3.3.0:
|
||||
version "3.3.0"
|
||||
resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.0.tgz#b09178f0122184fb95acf525daaecb4d8f45958b"
|
||||
integrity sha512-0XsbTXxgiaCDYDIWFcwkmerZPSwywfUqYmwT4jzewKTQSWoE6FCMoUVOeBJWK3E/CrWbxRG3m5GzY4lnIwGRBA==
|
||||
dependencies:
|
||||
react-is "^16.7.0"
|
||||
|
||||
home-or-tmp@^3.0.0:
|
||||
version "3.0.0"
|
||||
resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-3.0.0.tgz#57a8fe24cf33cdd524860a15821ddc25c86671fb"
|
||||
|
@ -2982,6 +3029,11 @@ is-arrayish@^0.2.1:
|
|||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d"
|
||||
integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=
|
||||
|
||||
is-arrayish@^0.3.1:
|
||||
version "0.3.2"
|
||||
resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.3.2.tgz#4574a2ae56f7ab206896fb431eaeed066fdf8f03"
|
||||
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
||||
|
||||
is-buffer@^1.1.5:
|
||||
version "1.1.6"
|
||||
resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
|
||||
|
@ -3128,11 +3180,6 @@ is-wsl@^1.1.0:
|
|||
resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-1.1.0.tgz#1f16e4aa22b04d1336b66188a66af3c600c3a66d"
|
||||
integrity sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=
|
||||
|
||||
isarray@0.0.1:
|
||||
version "0.0.1"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-0.0.1.tgz#8a18acfca9a8f4177e09abfc6038939b05d1eedf"
|
||||
integrity sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=
|
||||
|
||||
isarray@1.0.0, isarray@~1.0.0:
|
||||
version "1.0.0"
|
||||
resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
|
||||
|
@ -4060,6 +4107,11 @@ nan@^2.12.1:
|
|||
resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c"
|
||||
integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==
|
||||
|
||||
nanoid@^2.1.0:
|
||||
version "2.1.11"
|
||||
resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-2.1.11.tgz#ec24b8a758d591561531b4176a01e3ab4f0f0280"
|
||||
integrity sha512-s/snB+WGm6uwi0WjsZdaVcuf3KJXlfGl2LcxgwkEwJF0D/BWzVWAZW/XY4bFaiR7s0Jk3FPvlnepg1H1b1UwlA==
|
||||
|
||||
nanomatch@^1.2.9:
|
||||
version "1.2.13"
|
||||
resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
|
||||
|
@ -4552,13 +4604,6 @@ path-parse@^1.0.6:
|
|||
resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c"
|
||||
integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==
|
||||
|
||||
path-to-regexp@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.7.0.tgz#59fde0f435badacba103a84e9d3bc64e96b9937d"
|
||||
integrity sha1-Wf3g9DW62suhA6hOnTvGTpa5k30=
|
||||
dependencies:
|
||||
isarray "0.0.1"
|
||||
|
||||
path-type@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73"
|
||||
|
@ -4681,7 +4726,7 @@ promise@^7.1.1:
|
|||
dependencies:
|
||||
asap "~2.0.3"
|
||||
|
||||
prop-types@^15.6.1, prop-types@^15.6.2, prop-types@^15.7.2:
|
||||
prop-types@^15.6.2, prop-types@^15.7.2:
|
||||
version "15.7.2"
|
||||
resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5"
|
||||
integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ==
|
||||
|
@ -4742,10 +4787,10 @@ query-string@^5.0.1:
|
|||
object-assign "^4.1.0"
|
||||
strict-uri-encode "^1.0.0"
|
||||
|
||||
query-string@^6.4.2:
|
||||
version "6.8.3"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.8.3.tgz#fd9fb7ffb068b79062b43383685611ee47777d4b"
|
||||
integrity sha512-llcxWccnyaWlODe7A9hRjkvdCKamEKTh+wH8ITdTc3OhchaqUZteiSCX/2ablWHVrkVIe04dntnaZJ7BdyW0lQ==
|
||||
query-string@^6.10.1:
|
||||
version "6.11.0"
|
||||
resolved "https://registry.yarnpkg.com/query-string/-/query-string-6.11.0.tgz#dc27a05733d1be66f16d0f83dfa957270f45f66d"
|
||||
integrity sha512-jS+me8X3OEGFTsF6kF+vUUMFG/d3WUCvD7bHhfZP5784nOq1pjj8yau/u86nfOncmcN6ZkSWKWkKAvv/MGxzLA==
|
||||
dependencies:
|
||||
decode-uri-component "^0.2.0"
|
||||
split-on-first "^1.0.0"
|
||||
|
@ -4789,16 +4834,16 @@ react-dom@^16.4.2:
|
|||
prop-types "^15.6.2"
|
||||
scheduler "^0.16.2"
|
||||
|
||||
react-is@^16.7.0, react-is@^16.8.4, react-is@^16.8.6:
|
||||
version "16.10.2"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab"
|
||||
integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==
|
||||
|
||||
react-is@^16.8.1:
|
||||
react-is@^16.12.0, react-is@^16.8.1:
|
||||
version "16.12.0"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.12.0.tgz#2cc0fe0fba742d97fd527c42a13bec4eeb06241c"
|
||||
integrity sha512-rPCkf/mWBtKc97aLL9/txD8DZdemK0vkA3JMLShjlJB3Pj3s+lpf1KaBzMfQrAmhMQB0n1cU/SUGgKKBCe837Q==
|
||||
|
||||
react-is@^16.8.4:
|
||||
version "16.10.2"
|
||||
resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.10.2.tgz#984120fd4d16800e9a738208ab1fba422d23b5ab"
|
||||
integrity sha512-INBT1QEgtcCCgvccr5/86CfD71fw9EPmDxgiJX4I2Ddr6ZsV6iFXsuby+qWJPtmNuMY0zByTsG4468P7nHuNWA==
|
||||
|
||||
react-native-background-timer@^2.1.1:
|
||||
version "2.1.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-background-timer/-/react-native-background-timer-2.1.1.tgz#9a2489681ab2f8033c213c73272e9d4c47572cd5"
|
||||
|
@ -4833,10 +4878,10 @@ react-native-fs@^2.14.1:
|
|||
base-64 "^0.1.0"
|
||||
utf8 "^2.1.1"
|
||||
|
||||
react-native-gesture-handler@^1.3.0:
|
||||
version "1.5.2"
|
||||
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.5.2.tgz#281111550bf1eee10b7feba5278d142169892731"
|
||||
integrity sha512-Xp03dq4XYVTD0xmWx4DW4eX+ox1NQLjHmbykspTdS5FCNIVIOekVXRLFCw1698/v8dYUHApNo6K3s3BCD8fqPA==
|
||||
react-native-gesture-handler@^1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.5.3.tgz#191b44701fab7ba54c27a2438cb5eaa252666e66"
|
||||
integrity sha512-y2/jw0uHAQtEPR02PHAah6tdMymrVtZFoHqjlEWdhK807w2sgU5CySYINK/nOTczd+zB4GMX+9euA3VfbGJ5aA==
|
||||
dependencies:
|
||||
hammerjs "^2.0.8"
|
||||
hoist-non-react-statics "^2.3.1"
|
||||
|
@ -4852,6 +4897,11 @@ react-native-image-crop-picker@^0.25.0:
|
|||
version "1.0.0"
|
||||
resolved "git+https://github.com/status-im/react-native-image-resizer.git#dcbe2e1c461b0dbc265435bfb873f0257c1a1c4a"
|
||||
|
||||
react-native-iphone-x-helper@^1.2.1:
|
||||
version "1.2.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-iphone-x-helper/-/react-native-iphone-x-helper-1.2.1.tgz#645e2ffbbb49e80844bb4cbbe34a126fda1e6772"
|
||||
integrity sha512-/VbpIEp8tSNNHIvstuA3Swx610whci1Zpc9mqNkqn14DkMbw+ORviln2u0XyHG1kPvvwTNGZY6QpeFwxYaSdbQ==
|
||||
|
||||
"react-native-keychain@git+https://github.com/status-im/react-native-keychain.git#v.3.0.0-status":
|
||||
version "3.0.0-rc.3"
|
||||
resolved "git+https://github.com/status-im/react-native-keychain.git#43e5512cabb8ee064fd9e503be943dcf2c7d7669"
|
||||
|
@ -4869,22 +4919,20 @@ react-native-languages@^3.0.2:
|
|||
version "0.0.2"
|
||||
resolved "git+https://github.com/status-im/react-native-navigation-twopane.git#04ed5fddfb46a6a3ee30776987acb4d3b11c27d4"
|
||||
|
||||
react-native-safe-area-context@^0.6.0:
|
||||
version "0.6.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-0.6.0.tgz#f53f5a5bcafb462a8798a26b145e68946389ad60"
|
||||
integrity sha512-blY0akr3ZLTuZFdUotmjV+7LVXpBnd5CGFlNhTiarNNGJoHu79K42IJpUpmtg75iC9aWbSW7QHstlP0xz11V0A==
|
||||
react-native-reanimated@^1.7.0:
|
||||
version "1.7.0"
|
||||
resolved "https://registry.yarnpkg.com/react-native-reanimated/-/react-native-reanimated-1.7.0.tgz#896db2576552ac59d288a1f6c7f00afc171f240c"
|
||||
integrity sha512-FQWSqP605eQVJumuK2HpR+7heF0ZI+qfy4jNguv3Xv8nPFHeIgZaRTXHCEQL2AcuSIj50zy8jGJf5l134QMQWQ==
|
||||
|
||||
react-native-safe-area-view@^0.14.1:
|
||||
version "0.14.8"
|
||||
resolved "https://registry.yarnpkg.com/react-native-safe-area-view/-/react-native-safe-area-view-0.14.8.tgz#ef33c46ff8164ae77acad48c3039ec9c34873e5b"
|
||||
integrity sha512-MtRSIcZNstxv87Jet+UsPhEd1tpGe8cVskDXlP657x6rHpSrbrc+y13ZNXrwAgGNNhqQNX7UJT68ZIq//ZRmvw==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^2.3.1"
|
||||
react-native-safe-area-context@^0.7.3:
|
||||
version "0.7.3"
|
||||
resolved "https://registry.yarnpkg.com/react-native-safe-area-context/-/react-native-safe-area-context-0.7.3.tgz#ad6bd4abbabe195332c53810e4ce5851eb21aa2a"
|
||||
integrity sha512-9Uqu1vlXPi+2cKW/CW6OnHxA76mWC4kF3wvlqzq4DY8hn37AeiXtLFs2WkxH4yXQRrnJdP6ivc65Lz+MqwRZAA==
|
||||
|
||||
"react-native-screens@^1.0.0 || ^1.0.0-alpha", react-native-screens@^1.0.0-alpha.23:
|
||||
version "1.0.0-alpha.23"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-1.0.0-alpha.23.tgz#25d7ea4d11bda4fcde2d1da7ae50271c6aa636e0"
|
||||
integrity sha512-tOxHGQUN83MTmQB4ghoQkibqOdGiX4JQEmeyEv96MKWO/x8T2PJv84ECUos9hD3blPRQwVwSpAid1PPPhrVEaw==
|
||||
react-native-screens@^2.0.0-alpha.25:
|
||||
version "2.0.0-alpha.25"
|
||||
resolved "https://registry.yarnpkg.com/react-native-screens/-/react-native-screens-2.0.0-alpha.25.tgz#790d273b41d8dde37aa3e43bc662444aff18cd20"
|
||||
integrity sha512-IxKOqPxIWwyJhFOvfkxU/NSFzM5PRiyWWL8g0WCPozVU1KNEtJQp7j0sONkTLGQDkGwLbDu0kuGawT1zXMnE5A==
|
||||
dependencies:
|
||||
debounce "^1.2.0"
|
||||
|
||||
|
@ -4909,13 +4957,6 @@ react-native-svg@^9.8.4:
|
|||
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.11.1.tgz#b1ccf48de413ff8c4f476f202aaa3893f4c8b59a"
|
||||
integrity sha512-BmNCM81SSzhj1+N5rYiy7sxrkmybgiT8Cu8yVRB7zVoWze/i1lbCWJah+Gk0OHHwR35ZA31oVKf5jtO4G1n94Q==
|
||||
|
||||
react-native-tab-view@^1.2.0, react-native-tab-view@^1.4.1:
|
||||
version "1.4.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-tab-view/-/react-native-tab-view-1.4.1.tgz#f113cd87485808f0c991abec937f70fa380478b9"
|
||||
integrity sha512-Bke8KkDcDhvB/z0AS7MnQKMD2p6Kwfc1rSKlMOvg9CC5CnClQ2QEnhPSbwegKDYhUkBI92iH/BYy7hNSm5kbUQ==
|
||||
dependencies:
|
||||
prop-types "^15.6.1"
|
||||
|
||||
react-native-touch-id@^4.4.1:
|
||||
version "4.4.1"
|
||||
resolved "https://registry.yarnpkg.com/react-native-touch-id/-/react-native-touch-id-4.4.1.tgz#8b1bb2d04c30bac36bb9696d2d723e719c4a8b08"
|
||||
|
@ -4972,40 +5013,6 @@ react-native@0.61.5:
|
|||
stacktrace-parser "^0.1.3"
|
||||
whatwg-fetch "^3.0.0"
|
||||
|
||||
react-navigation-drawer@~1.4.0:
|
||||
version "1.4.0"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation-drawer/-/react-navigation-drawer-1.4.0.tgz#70f3dd83e3da9cd4ea6e2739526502c823d466b9"
|
||||
integrity sha512-ZyWBozcjB2aZ7vwCALv90cYA2NpDjM+WALaiYRshvPvue8l7cqynePbHK8GhlMGyJDwZqp4MxQmu8u1XAKp3Bw==
|
||||
dependencies:
|
||||
react-native-tab-view "^1.2.0"
|
||||
|
||||
react-navigation-stack@1.5.3:
|
||||
version "1.5.3"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation-stack/-/react-navigation-stack-1.5.3.tgz#cdc9f5a6dbdc55509a15f60d765722573dec1997"
|
||||
integrity sha512-MQcwDVbZUYsTtDJb5cFOSm+K+e7KpUCoROaGoUOR+JHWE3uuaJ3pd/Nu+32a57J98TNBf4qq0+2TPJWl6z6IBg==
|
||||
dependencies:
|
||||
prop-types "^15.7.2"
|
||||
|
||||
react-navigation-tabs@~1.2.0:
|
||||
version "1.2.0"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation-tabs/-/react-navigation-tabs-1.2.0.tgz#602c147029bb4f1c569b26479ddba534fe3ebb19"
|
||||
integrity sha512-I6vq3XX4ub9KhWQzcrggznls+2Z2C6w2ro46vokDGGvJ02CBpQRar7J0ETV29Ot5AJY67HucNUmZdH3yDFckmQ==
|
||||
dependencies:
|
||||
hoist-non-react-statics "^2.5.0"
|
||||
prop-types "^15.6.1"
|
||||
react-native-tab-view "^1.4.1"
|
||||
|
||||
react-navigation@^3.11.0:
|
||||
version "3.13.0"
|
||||
resolved "https://registry.yarnpkg.com/react-navigation/-/react-navigation-3.13.0.tgz#e802bb5174c1ec8b727c69f8e4409ff1351a5250"
|
||||
integrity sha512-r64bTImY2aNye8wtd39ubouVB6ZMJqjVQYKxH4LFmOav4FsI59fQTDN7sZzyJa29owowYw/wVkh+NWGT+tdD1A==
|
||||
dependencies:
|
||||
"@react-navigation/core" "~3.5.1"
|
||||
"@react-navigation/native" "~3.6.2"
|
||||
react-navigation-drawer "~1.4.0"
|
||||
react-navigation-stack "1.5.3"
|
||||
react-navigation-tabs "~1.2.0"
|
||||
|
||||
react-refresh@^0.4.0:
|
||||
version "0.4.2"
|
||||
resolved "https://registry.yarnpkg.com/react-refresh/-/react-refresh-0.4.2.tgz#54a277a6caaac2803d88f1d6f13c1dcfbd81e334"
|
||||
|
@ -5438,6 +5445,13 @@ shellwords@^0.1.1:
|
|||
resolved "https://registry.yarnpkg.com/shellwords/-/shellwords-0.1.1.tgz#d6b9181c1a48d397324c84871efbcfc73fc0654b"
|
||||
integrity sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==
|
||||
|
||||
shortid@^2.2.15:
|
||||
version "2.2.15"
|
||||
resolved "https://registry.yarnpkg.com/shortid/-/shortid-2.2.15.tgz#2b902eaa93a69b11120373cd42a1f1fe4437c122"
|
||||
integrity sha512-5EaCy2mx2Jgc/Fdn9uuDuNIIfWBpzY4XIlhoqtXF6qsf+/+SGZ+FxDdX/ZsMZiWupIWNqAEmiNY4RC+LSmCeOw==
|
||||
dependencies:
|
||||
nanoid "^2.1.0"
|
||||
|
||||
signal-exit@^3.0.0, signal-exit@^3.0.2:
|
||||
version "3.0.2"
|
||||
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
|
||||
|
@ -5466,6 +5480,13 @@ simple-plist@^1.0.0:
|
|||
bplist-parser "0.1.1"
|
||||
plist "^3.0.1"
|
||||
|
||||
simple-swizzle@^0.2.2:
|
||||
version "0.2.2"
|
||||
resolved "https://registry.yarnpkg.com/simple-swizzle/-/simple-swizzle-0.2.2.tgz#a4da6b635ffcccca33f70d17cb92592de95e557a"
|
||||
integrity sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=
|
||||
dependencies:
|
||||
is-arrayish "^0.3.1"
|
||||
|
||||
slash@^2.0.0:
|
||||
version "2.0.0"
|
||||
resolved "https://registry.yarnpkg.com/slash/-/slash-2.0.0.tgz#de552851a1759df3a8f206535442f5ec4ddeab44"
|
||||
|
@ -6039,6 +6060,13 @@ url-set-query@^1.0.0:
|
|||
resolved "https://registry.yarnpkg.com/url-set-query/-/url-set-query-1.0.0.tgz#016e8cfd7c20ee05cafe7795e892bd0702faa339"
|
||||
integrity sha1-AW6M/Xwg7gXK/neV6JK9BwL6ozk=
|
||||
|
||||
use-subscription@^1.3.0:
|
||||
version "1.3.0"
|
||||
resolved "https://registry.yarnpkg.com/use-subscription/-/use-subscription-1.3.0.tgz#3df13a798e826c8d462899423293289a3362e4e6"
|
||||
integrity sha512-buZV7FUtnbOr+65dN7PHK7chHhQGfk/yjgqfpRLoWuHIAc4klAD/rdot2FsPNtFthN1ZydvA8tR/mWBMQ+/fDQ==
|
||||
dependencies:
|
||||
object-assign "^4.1.1"
|
||||
|
||||
use@^3.1.0:
|
||||
version "3.1.1"
|
||||
resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
https://repo.clojars.org/binaryage/devtools/0.9.10/devtools-0.9.10
|
||||
https://repo.clojars.org/binaryage/env-config/0.2.2/env-config-0.2.2
|
||||
https://repo.clojars.org/binaryage/oops/0.7.0/oops-0.7.0
|
||||
https://repo.clojars.org/clj-stacktrace/clj-stacktrace/0.2.5/clj-stacktrace-0.2.5
|
||||
https://repo.clojars.org/clj-time/clj-time/0.11.0/clj-time-0.11.0
|
||||
https://repo.clojars.org/clj-time/clj-time/0.6.0/clj-time-0.6.0
|
||||
|
@ -49,11 +50,9 @@ https://repo.clojars.org/meta-merge/meta-merge/1.0.0/meta-merge-1.0.0
|
|||
https://repo.clojars.org/mvxcvi/alphabase/1.0.0/alphabase-1.0.0
|
||||
https://repo.clojars.org/net/cgrand/macrovich/0.2.0/macrovich-0.2.0
|
||||
https://repo.clojars.org/quoin/quoin/0.1.2/quoin-0.1.2
|
||||
https://repo.clojars.org/rasom/cljs-react-navigation/0.1.4/cljs-react-navigation-0.1.4
|
||||
https://repo.clojars.org/rasom/lein-githooks/0.1.5/lein-githooks-0.1.5
|
||||
https://repo.clojars.org/re-com/re-com/2.1.0/re-com-2.1.0
|
||||
https://repo.clojars.org/re-frame/re-frame/0.10.1/re-frame-0.10.1
|
||||
https://repo.clojars.org/re-frame/re-frame/0.10.4/re-frame-0.10.4
|
||||
https://repo.clojars.org/re-frisk-shell/re-frisk-shell/0.5.2/re-frisk-shell-0.5.2
|
||||
https://repo.clojars.org/re-frisk-sidecar/re-frisk-sidecar/0.5.7/re-frisk-sidecar-0.5.7
|
||||
https://repo.clojars.org/re-frisk/re-frisk/0.5.4/re-frisk-0.5.4
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,28 +1,21 @@
|
|||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/2.1/gradle-base-services-groovy-2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/2.2.1/gradle-base-services-groovy-2.2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/3.1/gradle-base-services-groovy-3.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/2.1/gradle-base-services-2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/2.2.1/gradle-base-services-2.2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/3.1/gradle-base-services-3.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/2.1/gradle-core-2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/2.2.1/gradle-core-2.2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/3.1/gradle-core-3.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-logging/3.1/gradle-logging-3.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/2.1/gradle-messaging-2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/2.2.1/gradle-messaging-2.2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/3.1/gradle-messaging-3.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/2.1/gradle-resources-2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/2.2.1/gradle-resources-2.2.1
|
||||
https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/3.1/gradle-resources-3.1
|
||||
https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.0/annotation-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.0.0/appcompat-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.0.2/appcompat-1.0.2
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0-rc01/appcompat-1.1.0-rc01
|
||||
https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.0.0/core-common-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.0.0/core-runtime-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/asynclayoutinflater/asynclayoutinflater/1.0.0/asynclayoutinflater-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/cardview/cardview/1.0.0/cardview-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.0.0/coordinatorlayout-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.0.1/core-1.0.1
|
||||
https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/customview/customview/1.0.0/customview-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/databinding/databinding-common/3.2.1/databinding-common-3.2.1
|
||||
|
@ -35,26 +28,37 @@ https://dl.google.com/dl/android/maven2/androidx/documentfile/documentfile/1.0.0
|
|||
https://dl.google.com/dl/android/maven2/androidx/drawerlayout/drawerlayout/1.0.0/drawerlayout-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/exifinterface/exifinterface/1.0.0/exifinterface-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.0.0/fragment-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/1.0.0/interpolator-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-core-ui/1.0.0/legacy-support-core-ui-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-core-utils/1.0.0/legacy-support-core-utils-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/legacy/legacy-support-v4/1.0.0/legacy-support-v4-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.0.0/lifecycle-common-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.1.0/lifecycle-common-2.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.0.0/lifecycle-livedata-core-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata/2.0.0/lifecycle-livedata-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.0.0/lifecycle-runtime-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.0.0/lifecycle-viewmodel-2.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/localbroadcastmanager/localbroadcastmanager/1.0.0/localbroadcastmanager-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/media/media/1.0.0/media-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/multidex/multidex/2.0.1/multidex-2.0.1
|
||||
https://dl.google.com/dl/android/maven2/androidx/print/print/1.0.0/print-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/recyclerview/recyclerview/1.0.0/recyclerview-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingpanelayout/1.0.0/slidingpanelayout-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.0.0/swiperefreshlayout-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.1.0-alpha02/swiperefreshlayout-1.1.0-alpha02
|
||||
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.0.0/transition-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.1.0/transition-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.0.0/vectordrawable-animated-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.1.0/vectordrawable-animated-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.0.1/vectordrawable-1.0.1
|
||||
https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.0.0/versionedparcelable-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0
|
||||
https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.0.1/baseLibrary-3.0.1
|
||||
https://dl.google.com/dl/android/maven2/com/android/databinding/baseLibrary/3.2.1/baseLibrary-3.2.1
|
||||
|
@ -179,6 +183,7 @@ https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-tas
|
|||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-vision-common/17.0.2/play-services-vision-common-17.0.2
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-vision-image-label/17.0.2/play-services-vision-image-label-17.0.2
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/gms/play-services-vision/17.0.2/play-services-vision-17.0.2
|
||||
https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/16.0.3/firebase-common-16.0.3
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid-interop/16.0.1/firebase-iid-interop-16.0.1
|
||||
https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-iid/17.0.3/firebase-iid-17.0.3
|
||||
|
@ -520,10 +525,6 @@ https://repo.maven.apache.org/maven2/com/barchart/base/barchart-archon/2.5.10/ba
|
|||
https://repo.maven.apache.org/maven2/com/barchart/udt/barchart-udt-archon/2.3.0/barchart-udt-archon-2.3.0
|
||||
https://repo.maven.apache.org/maven2/com/barchart/udt/barchart-udt-bundle/2.3.0/barchart-udt-bundle-2.3.0
|
||||
https://repo.maven.apache.org/maven2/com/beust/jcommander/1.47/jcommander-1.47
|
||||
https://repo.maven.apache.org/maven2/com/esotericsoftware/kryo/kryo/2.20/kryo-2.20
|
||||
https://repo.maven.apache.org/maven2/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2
|
||||
https://repo.maven.apache.org/maven2/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07
|
||||
https://repo.maven.apache.org/maven2/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-shaded
|
||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0
|
||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.3.1/jackson-annotations-2.3.1
|
||||
https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-core/2.3.1/jackson-core-2.3.1
|
||||
|
@ -565,8 +566,6 @@ https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.
|
|||
https://repo.maven.apache.org/maven2/com/google/errorprone/error_prone_parent/2.3.1/error_prone_parent-2.3.1
|
||||
https://repo.maven.apache.org/maven2/com/google/google/1/google-1
|
||||
https://repo.maven.apache.org/maven2/com/google/google/5/google-5
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-jdk5/17.0/guava-jdk5-17.0
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent-jdk5/17.0/guava-parent-jdk5-17.0
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/10.0.1/guava-parent-10.0.1
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/14.0.1/guava-parent-14.0.1
|
||||
https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/16.0.1/guava-parent-16.0.1
|
||||
|
@ -1718,14 +1717,12 @@ https://repo.maven.apache.org/maven2/org/mortbay/jetty/project/6.1.26/project-6.
|
|||
https://repo.maven.apache.org/maven2/org/mortbay/jetty/servlet-api/2.5-20081211/servlet-api-2.5-20081211
|
||||
https://repo.maven.apache.org/maven2/org/multiverse/multiverse-core/0.7.0/multiverse-core-0.7.0
|
||||
https://repo.maven.apache.org/maven2/org/multiverse/multiverse/0.7.0/multiverse-0.7.0
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/1.2/objenesis-parent-1.2
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/1.3/objenesis-parent-1.3
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/2.1/objenesis-parent-2.1
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/2.5/objenesis-parent-2.5
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/2.6/objenesis-parent-2.6
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/3.0.1/objenesis-parent-3.0.1
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/1.0/objenesis-1.0
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/1.2/objenesis-1.2
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/1.3/objenesis-1.3
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/2.1/objenesis-2.1
|
||||
https://repo.maven.apache.org/maven2/org/objenesis/objenesis/2.5/objenesis-2.5
|
||||
|
@ -1742,14 +1739,12 @@ https://repo.maven.apache.org/maven2/org/osgi/org.osgi.core/4.1.0/org.osgi.core-
|
|||
https://repo.maven.apache.org/maven2/org/osgi/org.osgi.core/4.2.0/org.osgi.core-4.2.0
|
||||
https://repo.maven.apache.org/maven2/org/osgi/org.osgi.core/4.3.1/org.osgi.core-4.3.1
|
||||
https://repo.maven.apache.org/maven2/org/osgi/org.osgi.core/6.0.0/org.osgi.core-6.0.0
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/4.0/asm-parent-4.0
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.1/asm-parent-5.0.1
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.2/asm-parent-5.0.2
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.3/asm-parent-5.0.3
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.4/asm-parent-5.0.4
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.1/asm-parent-5.1
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/6.0/asm-parent-6.0
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/4.0/asm-4.0
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.2/asm-5.0.2
|
||||
https://repo.maven.apache.org/maven2/org/ow2/asm/asm/6.1.1/asm-6.1.1
|
||||
https://repo.maven.apache.org/maven2/org/ow2/ow2/1.3/ow2-1.3
|
||||
|
@ -1773,7 +1768,6 @@ https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.7.5/jcl-over-slf
|
|||
https://repo.maven.apache.org/maven2/org/slf4j/jcl-over-slf4j/1.7.7/jcl-over-slf4j-1.7.7
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.5.6/slf4j-api-1.5.6
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.6.4/slf4j-api-1.6.4
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.19/slf4j-api-1.7.19
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.25/slf4j-api-1.7.25
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.5/slf4j-api-1.7.5
|
||||
|
@ -1781,7 +1775,6 @@ https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.7/slf4j-api-1.7.7
|
|||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-jdk14/1.5.6/slf4j-jdk14-1.5.6
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.5.6/slf4j-parent-1.5.6
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.6.4/slf4j-parent-1.6.4
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.10/slf4j-parent-1.7.10
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.19/slf4j-parent-1.7.19
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.2/slf4j-parent-1.7.2
|
||||
https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.25/slf4j-parent-1.7.25
|
||||
|
|
|
@ -7,7 +7,7 @@ let
|
|||
clojars = "https://repo.clojars.org";
|
||||
fabric-io = "https://maven.fabric.io/public";
|
||||
google = "https://dl.google.com/dl/android/maven2";
|
||||
gradle = "https://repo.gradle.org/gradle/libs-releases-local";
|
||||
gradle = "http://repo.gradle.org/gradle/libs-releases-local";
|
||||
gradlePlugins = "https://plugins.gradle.org/m2";
|
||||
java = "https://maven.java.net/content/repositories/releases";
|
||||
jcenter = "https://jcenter.bintray.com";
|
||||
|
@ -20,244 +20,19 @@ let
|
|||
};
|
||||
|
||||
in {
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/2.1/gradle-base-services-groovy-2.1" =
|
||||
"https://dl.google.com/dl/android/maven2/androidx/activity/activity/1.0.0/activity-1.0.0" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
host = repositories.google;
|
||||
path =
|
||||
"org/gradle/gradle-base-services-groovy/2.1/gradle-base-services-groovy-2.1";
|
||||
type = "jar";
|
||||
"androidx/activity/activity/1.0.0/activity-1.0.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "ccac73bb7184768905f402042c0d8578e9dae007";
|
||||
sha256 = "1wqpy25wdcrywjxld13pna7npwrh6zp8rfjnzgfprb5b5jyjp510";
|
||||
sha1 = "f94af7350c14b899596aefd6c50e381a96d933ba";
|
||||
sha256 = "10lv8v4dg1jfvmhznia10wsgqxi0inbs0cdql0nk3732c9sbx917";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "c19534da0e1547f510fe054d2ca038a743b8ed5b";
|
||||
sha256 = "02iqr1sjhpdb6va8kfsbggmkzns9xhxrkfihz992aalazm81f612";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/2.2.1/gradle-base-services-groovy-2.2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-base-services-groovy/2.2.1/gradle-base-services-groovy-2.2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "60afd5575c876f582bea8062d908ad32758ea811";
|
||||
sha256 = "124idvay5l85b92r5kzm99zq3zkb00g8y6zmp49f4f989lqh29rx";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "5875b51c9d579de53ce05ea89ebf5a823e2fc0f6";
|
||||
sha256 = "0dsd7mdlpabdxc3apazvwbcvnx6d4xrnr5syp3fbmxypvcxys8zg";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services-groovy/3.1/gradle-base-services-groovy-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-base-services-groovy/3.1/gradle-base-services-groovy-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "0f59d4b3ffee0a8ae0455237c50283a1fee8f789";
|
||||
sha256 = "1712qg4qik15fx8a7y1hwwcmrfag2d5c259lrv879xvsnvh5kh3j";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "61adc13a045357c99a7bc8c70ccb6955e80eda7c";
|
||||
sha256 = "0pv1pqlwj8zggxybcvdna77xgc1687zgmz57k5405ffj4bixdbpg";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/2.1/gradle-base-services-2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-base-services/2.1/gradle-base-services-2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "e929a5ad4aa9848ebb5b3dbb2d73585b558b851f";
|
||||
sha256 = "037dj6p24wbw5ncv9981qrkxskl98qlihsvwkvwl7h5vjqfinzvk";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "8078ab01c8acaf7420ee878582c1a3220677cddc";
|
||||
sha256 = "1wcifqjz7lgyi1nsjdkpbpij2rqap4bciwmqx1lw924p0355q07d";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/2.2.1/gradle-base-services-2.2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-base-services/2.2.1/gradle-base-services-2.2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "ec4de94aa2ae0c5a42656a3df23d969524758131";
|
||||
sha256 = "0mf3y655zxkr5l851cbd05p8brv92vk3n81fpir5y3ajc0x88n3s";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "9686a37f845c7b554d0b55724e21e5ff84d9e1c1";
|
||||
sha256 = "0hayad4mynnv4irqabxc4j0vqk17yp5q3r9xfafisv4s0nsk4849";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-base-services/3.1/gradle-base-services-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-base-services/3.1/gradle-base-services-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "9919c78117bd8fe26b67000e25f19e2dac5b423b";
|
||||
sha256 = "19ryx76klirl8ql1kasijwsaykqv2xs70mzdcvw53sg35dhq0min";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "33e7db611deb096e92e5fcf9e9007a9f08002801";
|
||||
sha256 = "146bvpjsw96a1m2y4v3bmsjzmhjm7bq7zlvpdzl1s8g34k0dpn83";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/2.1/gradle-core-2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-core/2.1/gradle-core-2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "bf070cdb93383804cdad252089c473d5cc65dbb2";
|
||||
sha256 = "1iraj3rvsjd5z4qb4g82za5y2p3glpkdb4070wdyr25bywk17mam";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "448579eb9b1ebb52ac3a099baade52876b37c1bf";
|
||||
sha256 = "0mwb51jf2bcdwv6gy5sj4gcq3g81nxjb5d58wghz7l5cwjj1arr0";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/2.2.1/gradle-core-2.2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-core/2.2.1/gradle-core-2.2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "518c5eb230e15e9f3d743489fbb80860e8acec62";
|
||||
sha256 = "0llgyi9wfjhdrx005444pv9ar02bvcgdaq6gzmvyafg8jlp3m8h0";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "60128a00fcf9428e90d59fd65608965e84b66420";
|
||||
sha256 = "1wvpwy5q2i3pvialcip7nz54rbiahq548kkpvr1p6xgn97z9ms8n";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-core/3.1/gradle-core-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-core/3.1/gradle-core-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "26675e59c68aa16f5bde212c8640c41086aae4d7";
|
||||
sha256 = "0mf0cfzlq4cakdmix7bhd0kjlj01lk0678v5w43x4viffffsj090";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "864f9d0156e49d1101759745f0e3ab096533ec01";
|
||||
sha256 = "0k925r1pqk638cia6k9qklkl8mkcfgh3l6pbbxwxmgs43f9insff";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-logging/3.1/gradle-logging-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-logging/3.1/gradle-logging-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "bfc6ca5d69246cb407120e6632a5cacfcbee3ccd";
|
||||
sha256 = "0gjgq9gppzkvd95qxlx2ihybg66nabp2kppkl5b07yk7p1p8j7ss";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "1497c134a31ed4c347ba62be68c86885b64eee2c";
|
||||
sha256 = "1sllfk9rsv55cgbka4h91grn4z6sx9dijwjqrhii4cpl056dwmjj";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/2.1/gradle-messaging-2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-messaging/2.1/gradle-messaging-2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "ff10ff2518c0fe18941e93dae462be088e69e9ef";
|
||||
sha256 = "0v7frbjfi3vmi65zm2n0p7dnyli3cbnacc9zwmhmr6c9klzxlpz1";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "e73cfd37ca09295dd3d106b2dc76494c90bd6fbb";
|
||||
sha256 = "1w92sa0fb51sgpa50014b45lwgw4a7p6fl0qgpag2h1j0gcmlgza";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/2.2.1/gradle-messaging-2.2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-messaging/2.2.1/gradle-messaging-2.2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "40de72142fadcd775596c620aabffaa5983b1e15";
|
||||
sha256 = "1mhqa4hijzb66jpzljli7b937h2baa0bwyj6lwwj0pdm165mpmyr";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "1e1d6ef285891a40a04dfa360e3e53b43e2c1a84";
|
||||
sha256 = "1x7vqdcjrmk279blih6sw5b5pjfsxnag1bmckxmz949isa4xay2b";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-messaging/3.1/gradle-messaging-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-messaging/3.1/gradle-messaging-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "1a02aa908fdc0a53d016981557e651312123174d";
|
||||
sha256 = "13iy1rghsjl1afml5h73d0w9mna51nmnwxqg9q2l1qxlj0ypyyl8";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "e9c31a949e904c40178e9276e0040200067fb9b7";
|
||||
sha256 = "0c7q6fs8ywciif1k4gz40dm17976b8bh9hahi2r2p18j6xb5xpc9";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/2.1/gradle-resources-2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-resources/2.1/gradle-resources-2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "64da665bcaa4edad053ea03e0949f6a3e0d993c6";
|
||||
sha256 = "0kswdhkwl32sc9w2qbpa66sbvhriiax370rbixg1zmfmzw60k5yg";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "4d64f1ac8b345525503ce5a46ab1e345914df583";
|
||||
sha256 = "055iangccx3p83rsi61axggw8fzx1pyl9jk0qirclcyd8nfksjdw";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/2.2.1/gradle-resources-2.2.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-resources/2.2.1/gradle-resources-2.2.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "7d7feabef40c3ac9eb3dc4dc9d55edc879548e49";
|
||||
sha256 = "1wz0mayzk6plh5vvsj8mvxzzn74a163m75wxbdml8llhrn62p21h";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "3fcd7004383a672c97346ad684dd762c547cdccb";
|
||||
sha256 = "1qysny46n4g2xq5dbmlrh6c189jbd8wx7x3jn99bvk01h1lydlhy";
|
||||
};
|
||||
};
|
||||
"https://repo.gradle.org/gradle/libs-releases-local/org/gradle/gradle-resources/3.1/gradle-resources-3.1" =
|
||||
{
|
||||
host = repositories.gradle;
|
||||
path =
|
||||
"org/gradle/gradle-resources/3.1/gradle-resources-3.1";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "2354cec814a016ef061bf68deab493162332b712";
|
||||
sha256 = "0vjy1hdw5gv26g73ck8kh87jkvi7dwczcf7y0dhrr42p9cfzdzcf";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "f8386a67e8e76c43adf65b1923ed26e0ec1ded2a";
|
||||
sha256 = "0c2l6h2s4qfkn0kc07pnv5j4b8wmvbqjrg2shxbi5wsjji2f9px3";
|
||||
sha1 = "ed7a64df6e3fbebf7d3d3dfc30b0f47efcc707f7";
|
||||
sha256 = "0gacyh2zf933lcdkl2drim3knhaj9pgl936q2m256bjw8m19ig6i";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.0.0/annotation-1.0.0" =
|
||||
|
@ -275,6 +50,36 @@ in {
|
|||
sha256 = "05n0yygdjlvvkb67vlfisiasz4xsj55k416dh2m55bvwbxsykahb";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/annotation/annotation/1.1.0/annotation-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/annotation/annotation/1.1.0/annotation-1.1.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "404526f88e3a7efa04f1c99074dfc10aff9061ee";
|
||||
sha256 = "1zlyg49llmpnhmhr4z17wp0q51phw5k6py6v5aal9vw0fyx754rf";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "e3a6fb2f40e3a3842e6b7472628ba4ce416ea4c8";
|
||||
sha256 = "14mnsnd1a6wrzadh8air665ylbb9i9gz1ajhin0nf50gngnn73fk";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/appcompat/appcompat-resources/1.1.0/appcompat-resources-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "04d25219b17a53da24285e9560bbf5c587abee38";
|
||||
sha256 = "1wlhjv2g94w40vczb0vl8avg23hia4ancr95hha6y6xhdkhi2q04";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "a573b2ab146d686244721ef1038d08043f18c67f";
|
||||
sha256 = "0qbk5wi4yd4l4w4f5jdgm9xvszw3jm5qj8by6iya2lb5nhr4v50r";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.0.0/appcompat-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -305,6 +110,36 @@ in {
|
|||
sha256 = "00qdpzv9ajq8dvvyvkqiq8g03023gmjv2a6lz5rcnmjwbvfhq253";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0-rc01/appcompat-1.1.0-rc01" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/appcompat/appcompat/1.1.0-rc01/appcompat-1.1.0-rc01";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "49c937cd4c8edaa42aefa8eb7b9adffc3c5362c3";
|
||||
sha256 = "0gy1y4rw48iljrii6hg34lh9ydb2m8filvych6rmlsy7j5dgps7x";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "62955e0a3c6f4566648f30da6e40e44b01221422";
|
||||
sha256 = "0kv75gf28rm5xbh8dxsaz4vkiz8s5am5bcdxka92wkyv4hx3n4cm";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/appcompat/appcompat/1.1.0/appcompat-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "83765254bf5e6aa04bb1f35960db460afd70b048";
|
||||
sha256 = "1fdp5i5ri67xnvf1r2hcdlkl5rd3g8sqy338lq18xvzq45qn239l";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "351d3409fe51f3d862bd2b1bcc0f3b6ded29460e";
|
||||
sha256 = "1h5m5ajd7b66dilfh8z2zs0zqnglrdm7d5amgzqvvcscljy9jwld";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.0.0/core-common-2.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -320,6 +155,21 @@ in {
|
|||
sha256 = "1n3sqpd398a23jdqwpql9ls0if23vzhaj37fn1j6wllvfwvv702b";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/arch/core/core-common/2.1.0/core-common-2.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/arch/core/core-common/2.1.0/core-common-2.1.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "2b3b788454b0aa77266f2ce191eba3a7768678ca";
|
||||
sha256 = "00fgwnngz2qbicwajshx599l3r0ljjslrjb6qc561g5a1sbb7fw3";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "b3152fc64428c9354344bd89848ecddc09b6f07e";
|
||||
sha256 = "129qclk47ifk57y8d135lfqchx7gffpswfgy55zkw1lx0azkf4py";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/arch/core/core-runtime/2.0.0/core-runtime-2.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -350,6 +200,21 @@ in {
|
|||
sha256 = "12vcz7x5c693gicyr8g1mbm1nq80fvz34n170sxr9pddaw6bdspp";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/cardview/cardview/1.0.0/cardview-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/cardview/cardview/1.0.0/cardview-1.0.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "93a261514381247a8a6bebe171338f9f2f883f27";
|
||||
sha256 = "0v1y3h373chacgpbwi662jq3s58v1bl6z7jrggi8ydaqighg8kp6";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "158dbc2e2bc502815821191b04446b8f663c1874";
|
||||
sha256 = "1izy3bd2vn4rzf3mvgdnf5mdxbfnb664x7xfdnabbmm3496c14qi";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.0.0/collection-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -365,6 +230,21 @@ in {
|
|||
sha256 = "1yf979z85xq8lxr06mqkc31icns9bgh5gf7yrnhj1h9bbixi33cw";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/collection/collection/1.1.0/collection-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/collection/collection/1.1.0/collection-1.1.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "e1eba7bcd8a98744b7850e5c474edebaafba6fbb";
|
||||
sha256 = "1lan6jd3r0g1n5q4z3hizxbq0fd03g1r70jhrkiwdzdclin0dsb7";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "1f27220b47669781457de0d600849a5de0e89909";
|
||||
sha256 = "0wivsgvxlxqcha3sf1s2f8vi0a9a54798llk81sff7a60xa0wak3";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/coordinatorlayout/coordinatorlayout/1.0.0/coordinatorlayout-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -395,6 +275,21 @@ in {
|
|||
sha256 = "167rc0s7c8wlzf6i9d1pd8y4dpmw7m4i5yd4nxgqrb9cq8i0badi";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/core/core/1.1.0/core-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/core/core/1.1.0/core-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "2a6d529fdea6d3525bd70f46b6f1fc1a580a8513";
|
||||
sha256 = "0k3ma57ilij3rp6iq416dndqd42qss7vfz2z8acbfindrlr63r6s";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "b9addd897d6b9c8634fe789bdb82f993171432ae";
|
||||
sha256 = "0zk4av88i842a7754fwsmh49qac9x24irgw3d6dc1qvgb6zczivn";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/cursoradapter/cursoradapter/1.0.0/cursoradapter-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -575,6 +470,21 @@ in {
|
|||
sha256 = "1y0qnp8644b1qx0ag0kzj8w70c09mnqwz9l9g7kk4np63zbk5pb5";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/fragment/fragment/1.1.0/fragment-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/fragment/fragment/1.1.0/fragment-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "753e03826c6efdace71d94ed9d04bf008fa6ad3d";
|
||||
sha256 = "0i15nlfh2lbjyzydby2k32h3fa1sqxbki2jzbmag7p82mhkyny7g";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "5f9efc7569e651415a0958d6b3e6226ef2825c24";
|
||||
sha256 = "15hlv03x61fcs9qcb7m2h8wjh75bpsk6dlpv03l2iwak467qnk51";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/interpolator/interpolator/1.0.0/interpolator-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -650,6 +560,21 @@ in {
|
|||
sha256 = "1z7y6nsqdzv08x4dxbgcjfyj0pvhkgwmwpgkl5pymb84i0c7mbbv";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-common/2.1.0/lifecycle-common-2.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/lifecycle/lifecycle-common/2.1.0/lifecycle-common-2.1.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "de2b915adafa394edd5eadcab6b5089d08fb71f6";
|
||||
sha256 = "0xpjh83m6ikc9rqmhz0sbm9my9bg351qjvmviw6255bs8dh2lb39";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "c67e7807d9cd6c329b9d0218b2ec4e505dd340b7";
|
||||
sha256 = "0hr610gzh7k0hbd4fs3l4hl9bn965hmb3zn2c6rhywxx6gjnpnvn";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-livedata-core/2.0.0/lifecycle-livedata-core-2.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -695,6 +620,21 @@ in {
|
|||
sha256 = "1yrwsjfskismgyq5n1vkqv9gz4m445hz876z1qz6ygqq6vkckbz4";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/lifecycle/lifecycle-runtime/2.1.0/lifecycle-runtime-2.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "87fefa0cd4644709a2afc1f2da09397694bfe8b1";
|
||||
sha256 = "1jwzjl6nwxnqpgmwmpx170ms6ybxygdyhsrxnpabqy9dvc1cz3dg";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "24af6c5162c83b5bf073e16608fd87821422fe48";
|
||||
sha256 = "0arir2aa3qqc74x24qw8slrgbls22ypxbnc33rjp1s35p6bkh5z5";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.0.0/lifecycle-viewmodel-2.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -710,6 +650,21 @@ in {
|
|||
sha256 = "0qn0pkzk70jh5j7w5rf3hy6xxgs3krz2k26g2jmq1bbb3gm0linn";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/lifecycle/lifecycle-viewmodel/2.1.0/lifecycle-viewmodel-2.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "b95d38b7236e5bb4249d74fdab5044c292158342";
|
||||
sha256 = "1d54r4vs36ad9zcixdip1mpr575pqy2lqflp9kkjgqn377ip5ai9";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "682d06cc95e0632efdb9cfcc18828840ac941148";
|
||||
sha256 = "0gajp14n4s37m9n37vs39hmhp6ax13vsra6d4x9qv0mjq5xgnmds";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/loader/loader/1.0.0/loader-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -800,6 +755,21 @@ in {
|
|||
sha256 = "0j25mc0jfdgzw541icbvjns63aj29fd4ch1bkp52fh01mjqnz586";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/savedstate/savedstate/1.0.0/savedstate-1.0.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "3efaae1f3b3dc6c389a390ef716ede40ec63ef06";
|
||||
sha256 = "0z6yiwznp9wslahfxx9nh6nrrv48myfj4nampxw8qygazhi7skc4";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "6d39721808cd67e3d3d0d60f194907615fcaa69c";
|
||||
sha256 = "10rf82xya0cgizx20kpwwbzx0g1jmzx78id0w6f9qmrpkihsa415";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/slidingpanelayout/slidingpanelayout/1.0.0/slidingpanelayout-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -830,6 +800,51 @@ in {
|
|||
sha256 = "13bf0brs7wn9kd0xmjdmjl7fqvbm8p3bpi530vyr7c6916lb6qcp";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/swiperefreshlayout/swiperefreshlayout/1.1.0-alpha02/swiperefreshlayout-1.1.0-alpha02" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/swiperefreshlayout/swiperefreshlayout/1.1.0-alpha02/swiperefreshlayout-1.1.0-alpha02";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "a46229bf11dbdf4d2952357d050b14b6d432c628";
|
||||
sha256 = "0aj4kch3rkx1s5bl6mmvwgvi214ldspgm4g4flx1kkqr46n1x0r8";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "5cb9e619bcf4b8d4c0fae0d8530abcaeee292110";
|
||||
sha256 = "1rh1zdnh1ipb867bsclrrn4z9lx062h98a9q7wzs523yx9ih7y00";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.0.0/transition-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/transition/transition/1.0.0/transition-1.0.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "cba38d22419c84dcf737d666ae0c980f1e521e65";
|
||||
sha256 = "12v826hkvgrm3hzf3x5il92x50gan60gz7x47cq2ykn97ag8ljz7";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "f3556ce8f251984acb24014c3ba055ff235929ff";
|
||||
sha256 = "1380yk8978c19d0rl6hi3f0caac9fg5sy3lvvbnbq6j07xv0y2m0";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/transition/transition/1.1.0/transition-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/transition/transition/1.1.0/transition-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "0c354a924354ceed91673412fb5b6ce326735a63";
|
||||
sha256 = "0paa8lci1xhkd631ak7knk87fbxbxi255clphhb3dy9kqvla2k2x";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "ee403adc3ae340af6461cdd8151b4518c9f5c1b0";
|
||||
sha256 = "0y7kx238yghsrh06ywgw9xm9zaw0izjcgkmxjngnalc78by4r3mx";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.0.0/vectordrawable-animated-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -845,6 +860,21 @@ in {
|
|||
sha256 = "1wbc4cnbbd4hgkmy6l97jpcm47a3gvrz400bb8ipv6ls1b7s1hr6";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable-animated/1.1.0/vectordrawable-animated-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/vectordrawable/vectordrawable-animated/1.1.0/vectordrawable-animated-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "2c40e16427f4e94ea471526868ba5ac4bd13de6d";
|
||||
sha256 = "1ga0l1hbl7l1f8j27yvm4frx6vvgqnb99vh3j1dvfpvhdc8j0si7";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "fcda1161354501471c30a4e077af6b5c4d4eddc6";
|
||||
sha256 = "1y034igcx1xf7qvg6n6hks08gnh0ilj2npnzaj0c7nbi4d82rnkn";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.0.1/vectordrawable-1.0.1" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -860,6 +890,21 @@ in {
|
|||
sha256 = "1ljyf6gymbz9hhcygrmz0va5bmn26ffirq48qcpya44mgfami8sc";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/vectordrawable/vectordrawable/1.1.0/vectordrawable-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "8b15e03d94f7d9a07cbea653ad7f524315d1d507";
|
||||
sha256 = "1cib94wwskg9haj7v9amvlfmwfs7bz723g2wg024irbr45djs3jv";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "eac7a364fff534035a2a6cb17770a1288315f69f";
|
||||
sha256 = "09lfvw1gn16avi726kbpd6d9x2ssih4vyqy2mgybfj8vq0x67za6";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.0.0/versionedparcelable-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -875,6 +920,21 @@ in {
|
|||
sha256 = "1qqw5vnqzyc45x3s3njf8bh1008bprq0l50frbfwq5l0xn9qlhzn";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"androidx/versionedparcelable/versionedparcelable/1.1.0/versionedparcelable-1.1.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "5860ab66f74bffbfcfd51883ddabd477a0b80dc8";
|
||||
sha256 = "1dakq8yjjfxx8jd0h8csg4xx9nvrdrk61m19m2yj6qy01jzcfaf7";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "91acce73e00a17b524f6697f6c3893efb8ea349f";
|
||||
sha256 = "1h8hnymlblgxdbflcbgdhw4q1hcv2myywm2hdf3bf8n218a7f7cs";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/androidx/viewpager/viewpager/1.0.0/viewpager-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -2753,6 +2813,21 @@ in {
|
|||
sha256 = "01xqv2zdy2if0fm28l2kfj86dyj1adq977nvhy8v0kzscvxgv0d0";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/com/google/android/material/material/1.0.0/material-1.0.0" =
|
||||
{
|
||||
host = repositories.google;
|
||||
path =
|
||||
"com/google/android/material/material/1.0.0/material-1.0.0";
|
||||
type = "aar";
|
||||
pom = {
|
||||
sha1 = "2bcf783c3bc66bafc0e1c9ca721d7544659bb6c3";
|
||||
sha256 = "1aqm6mh1448hszv9agcq85wckpyiwjzhpi85wdfij48wsm0zbzy9";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "f83e012c22d2fac8fcf23880d7167832b099fa94";
|
||||
sha256 = "1p0sq4kgxybslqj8044fh056m9fqmp543r5jk7crhdy0lf0y703n";
|
||||
};
|
||||
};
|
||||
"https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-common/16.0.3/firebase-common-16.0.3" =
|
||||
{
|
||||
host = repositories.google;
|
||||
|
@ -7804,62 +7879,6 @@ in {
|
|||
sha256 = "16fyyvalj6al7hxgz7w2x27xzmaw0ldc2wiax0w23ry2gzg4gjwd";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/esotericsoftware/kryo/kryo/2.20/kryo-2.20" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/esotericsoftware/kryo/kryo/2.20/kryo-2.20";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "db5822be831634cb9fc7d3ad60fc2d48e172a1a7";
|
||||
sha256 = "1crg1d2mqqj0m8ddgfwvqpl9vjbpn30baxwi7qymfqh1haxcjzla";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "b596abed147c5c5b985c996094c5c1d6622dcb9f";
|
||||
sha256 = "160ign6lynid1za6xwhi3v8f82q2jdb6snzzcw2hmn54v980ws56";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/esotericsoftware/minlog/minlog/1.2/minlog-1.2" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/esotericsoftware/minlog/minlog/1.2/minlog-1.2";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "67d00f6a12cac438eb96f12fa4e3b32ba452b810";
|
||||
sha256 = "18kpysh9sc3cv7y0rdy3hxrpvnvcw27jcb1sxgyq3di96cma20dg";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "59bfcd171d82f9981a5e242b9e840191f650e209";
|
||||
sha256 = "1wk09rf32radx01aspfmqfdqmna131s7ab4r3j83vl7mm0dcny56";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "c5da38373fa65bd2870ced97ba4d5ccc08be62de";
|
||||
sha256 = "0phw8hmf1x87v68g39rzjbr34ci80sh5sf7m1xkdl4vhyja4nx4a";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "761028ef46da8ec16a16b25ce942463eb1a9f3d5";
|
||||
sha256 = "09k06wnbsxchb9p9jv3fg4jgkzjs5l9xxfhah9bi0n7zar45b635";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-shaded" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/esotericsoftware/reflectasm/reflectasm/1.07/reflectasm-1.07-shaded";
|
||||
type = "jar";
|
||||
jar = {
|
||||
sha1 = "76f11c94a53ee975a0d9154b325c408b210155bd";
|
||||
sha256 = "0xkwgs97pnyw2nm3d84s18dsa886azvw350izjpfsx5jnjnhx9q8";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/fasterxml/jackson/core/jackson-annotations/2.3.0/jackson-annotations-2.3.0" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -8403,32 +8422,6 @@ in {
|
|||
sha256 = "0a38gd0j67siikp3zabrdgfkk7afnzg30pz0yfkvqgyafdg397g0";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/google/guava/guava-jdk5/17.0/guava-jdk5-17.0" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/google/guava/guava-jdk5/17.0/guava-jdk5-17.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "41f020642c6a9151ec18736d1fa01e6606c9be6f";
|
||||
sha256 = "0rnvlc2v46axw2wgy6g838is0jd6srpas5ycwz25pm0kg1i55hgq";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "463f8378feba44df7ba7cd9272d01837dad62b36";
|
||||
sha256 = "0qbc8lg1rqs75jin0afyw9s49qfkybvmdjv8v77a7pdn8xjlbgsr";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/google/guava/guava-parent-jdk5/17.0/guava-parent-jdk5-17.0" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"com/google/guava/guava-parent-jdk5/17.0/guava-parent-jdk5-17.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "955dd912f3b5bd06e6db874b4d90de333745b0fe";
|
||||
sha256 = "0vzvn5h0yrnmis0f195ad108b1g7nglqgy0xq6rmcab34yy0d5js";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/com/google/guava/guava-parent/10.0.1/guava-parent-10.0.1" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -10333,7 +10326,7 @@ in {
|
|||
"javax/validation/validation-api/1.1.0.Final/validation-api-1.1.0.Final";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "0d2ad4d1498d1048abc6c6948fd3f835d8fdafb0";
|
||||
sha1 = "";
|
||||
sha256 = "0772mrm8nw31xj6jg5hwgvy2hsbygn1y61mx615w3rnbwq8ljqxq";
|
||||
};
|
||||
jar = {
|
||||
|
@ -24174,17 +24167,6 @@ in {
|
|||
sha256 = "06520i1ygx33iv11haz7l61m1xgzzhn4c72zjjyqdxirqkqprs7d";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/1.2/objenesis-parent-1.2" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/objenesis/objenesis-parent/1.2/objenesis-parent-1.2";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "033696ac4ff0beb9e5893567e054d8d8e5a0c825";
|
||||
sha256 = "01whfmi39n77njfrpzx30ylcbfq6r5zkxjyby4vfrrazzslqckn8";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/objenesis/objenesis-parent/1.3/objenesis-parent-1.3" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -24255,21 +24237,6 @@ in {
|
|||
sha256 = "1a4iyj3ri4arrbln3bajys08f7bb7jdijm7jha9lf9r5v5alnsf5";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/objenesis/objenesis/1.2/objenesis-1.2" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/objenesis/objenesis/1.2/objenesis-1.2";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "9151e3c73d379b42f879b472bc5eec0b35b1eff8";
|
||||
sha256 = "0jmprfql0vpn2zf2ynfnwrdj72csm8i5bfshz70ih7f02l31nihx";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "bfcb0539a071a4c5a30690388903ac48c0667f2a";
|
||||
sha256 = "0w5s17ynrbwy5w65pv6pip5qspljlj9vvwpdd9ybhjc1awvw4rcc";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/objenesis/objenesis/1.3/objenesis-1.3" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -24506,17 +24473,6 @@ in {
|
|||
sha256 = "0cdr7hlzrlwcfr9r15wmphzxaiadc27s6gb58gvz3jrlxcsv86qw";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/4.0/asm-parent-4.0" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/ow2/asm/asm-parent/4.0/asm-parent-4.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "e7bed114eb05c1759de720bb50308ef2a97c5131";
|
||||
sha256 = "065cyifib7bjmq1cl4syg7qr4lxmkna0ma2abqf92z20xq5gwnj0";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/ow2/asm/asm-parent/5.0.1/asm-parent-5.0.1" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -24583,21 +24539,6 @@ in {
|
|||
sha256 = "053xrln1w9nj0aw23wsiqkgn8569fk6zx7mw8dns9jgcp55hc7br";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/ow2/asm/asm/4.0/asm-4.0" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/ow2/asm/asm/4.0/asm-4.0";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "5e484ac83d98253bf04ce8653aa959e8f0331783";
|
||||
sha256 = "1mw6sx3nv9rz2wvb3g5irsj794zq35x8fn6x74nv2ilyhnpfyg76";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "659add6efc75a4715d738e73f07505246edf4d66";
|
||||
sha256 = "0mx9wb9b4z699hsh33zh7dwyzavk9sly179xqhjb0yx4428dwbgv";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/ow2/asm/asm/5.0.2/asm-5.0.2" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -24915,21 +24856,6 @@ in {
|
|||
sha256 = "0zima9a1p07dw2yd362y701qyd063rl6n2dbfq8yw57p62890yrn";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/slf4j/slf4j-api/1.7.10/slf4j-api-1.7.10";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "e5247e58569e3386a67622e01fcbf189ea902cbf";
|
||||
sha256 = "1c8ldjj2nvyd22xlrdainh1bs90srjrr3p9dg5s2qhk34a6mx75g";
|
||||
};
|
||||
jar = {
|
||||
sha1 = "5b338f206827d88acd890739f400a9b7664e5984";
|
||||
sha256 = "1zib4f8lj0787di7v2j04ad5w4gaxw9v31xzi494s3bl0mqf4qrq";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-api/1.7.19/slf4j-api-1.7.19" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
@ -25027,17 +24953,6 @@ in {
|
|||
sha256 = "11fc0rb40w1s7v2b13gx70njzbiwmrz5bkik9y40698a5x9n583n";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.10/slf4j-parent-1.7.10" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
path =
|
||||
"org/slf4j/slf4j-parent/1.7.10/slf4j-parent-1.7.10";
|
||||
type = "jar";
|
||||
pom = {
|
||||
sha1 = "ed97ed5a64d2851ed1709f94f66fc553d52e310a";
|
||||
sha256 = "1kp2jy8qp7pxl5ysryblngb8w963z256ar7v4r4rpdrg33sygghs";
|
||||
};
|
||||
};
|
||||
"https://repo.maven.apache.org/maven2/org/slf4j/slf4j-parent/1.7.19/slf4j-parent-1.7.19" =
|
||||
{
|
||||
host = repositories.apache;
|
||||
|
|
|
@ -2,6 +2,8 @@
|
|||
:url "https://github.com/status-im/status-react/"
|
||||
:license {:name "Eclipse Public License"
|
||||
:url "http://www.eclipse.org/legal/epl-v10.html"}
|
||||
;; NOTE: Dependecies here are used in CI, till the CI script will be updated
|
||||
;; all deps should be maintained in deps.edn and here.
|
||||
:dependencies [[org.clojure/clojure "1.10.0"]
|
||||
[org.clojure/clojurescript "1.10.520"
|
||||
:exclusions
|
||||
|
@ -19,8 +21,8 @@
|
|||
[com.taoensso/encore "2.94.0"]
|
||||
[hickory "0.7.1"]
|
||||
[cljs-bean "1.3.0"]
|
||||
[mvxcvi/alphabase "1.0.0"]
|
||||
[rasom/cljs-react-navigation "0.1.4"]]
|
||||
[binaryage/oops "0.7.0"]
|
||||
[mvxcvi/alphabase "1.0.0"]]
|
||||
:plugins [[rasom/lein-githooks "0.1.5"]
|
||||
[lein-cljsbuild "1.1.7"]
|
||||
[lein-re-frisk "0.5.8"]
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
(def fs (js/require "react-native-fs"))
|
||||
(def keychain (js/require "react-native-keychain"))
|
||||
(def qr-code (js/require "qrcode"))
|
||||
(def react (js/require "react"))
|
||||
(def react-native (js/require "react-native"))
|
||||
(def status-keycard (js/require "react-native-status-keycard"))
|
||||
(def webview-bridge (js/require "react-native-webview-bridge"))
|
||||
|
@ -26,8 +27,6 @@
|
|||
(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 react-navigation (js/require "react-navigation"))
|
||||
(def react-native-navigation-twopane (js/require "react-native-navigation-twopane"))
|
||||
(def react-native-shake (js/require "react-native-shake"))
|
||||
(def react-native-screens (js/require "react-native-screens"))
|
||||
(def net-info (js/require "@react-native-community/netinfo"))
|
||||
|
@ -40,3 +39,7 @@
|
|||
(def desktop-config #js {:addEventListener (fn [])})
|
||||
(def desktop-shortcuts #js {:addEventListener (fn [])})
|
||||
(def safe-area-context (js/require "react-native-safe-area-context"))
|
||||
|
||||
(def react-navigation-native (js/require "@react-navigation/native"))
|
||||
(def react-navigation-stack (js/require "@react-navigation/stack"))
|
||||
(def react-navigation-bottom-tabs (js/require "@react-navigation/bottom-tabs"))
|
||||
|
|
|
@ -41,8 +41,6 @@
|
|||
(when-not (zero? @keyboard-height)
|
||||
(dispatch [:set :keyboard-height 0]))))
|
||||
(.hide react/splash-screen)
|
||||
;; TODO Temporarily comment away due to current bug https://github.com/kmagiera/react-native-screens/issues/54
|
||||
;(.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
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
(filters/load-filters))))
|
||||
|
||||
(fx/defn offload-all-messages
|
||||
{:events [::offload-all-messages]}
|
||||
[{:keys [db] :as cofx}]
|
||||
(when-let [current-chat-id (:current-chat-id db)]
|
||||
{:db
|
||||
|
@ -156,6 +157,7 @@
|
|||
(mailserver/load-gaps-fx current-chat-id)))))))
|
||||
|
||||
(fx/defn load-messages
|
||||
{:events [::load-messages]}
|
||||
[{:keys [db now] :as cofx}]
|
||||
(when-let [current-chat-id (:current-chat-id db)]
|
||||
(if-not (get-in db [:chats current-chat-id :messages-initialized?])
|
||||
|
|
|
@ -151,7 +151,7 @@
|
|||
(contacts-store/fetch-contacts-rpc cofx #(re-frame/dispatch [::contacts-loaded %])))
|
||||
|
||||
(fx/defn open-contact-toggle-list
|
||||
[{:keys [db :as cofx]}]
|
||||
[{:keys [db] :as cofx}]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db
|
||||
:group/selected-contacts #{}
|
||||
|
|
|
@ -18,5 +18,5 @@
|
|||
(defn init [app-root]
|
||||
(utils.logs/init-logs)
|
||||
(error-handler/register-exception-handler!)
|
||||
(re-frame/dispatch [:init/app-started])
|
||||
(re-frame/dispatch-sync [:init/app-started])
|
||||
(.registerComponent react/app-registry "StatusIm" #(reagent/reactify-component app-root)))
|
||||
|
|
|
@ -110,10 +110,10 @@
|
|||
;; we reset navigation so that navigate back doesn't return
|
||||
;; into the registration flow
|
||||
(navigation/navigate-reset cofx
|
||||
{:index 1
|
||||
:key :profile-stack
|
||||
:actions [{:routeName :my-profile}
|
||||
{:routeName :ens-confirmation}]}))
|
||||
{:index 1
|
||||
:key :profile-stack
|
||||
:routes [{:name :my-profile}
|
||||
{:name :ens-confirmation}]}))
|
||||
|
||||
(defn- on-resolve-owner
|
||||
[registry custom-domain? username address public-key response resolve-last-id* resolve-last-id]
|
||||
|
@ -219,10 +219,9 @@
|
|||
{:db (dissoc db :ens/registration)}
|
||||
;; we reset navigation so that navigate back doesn't return
|
||||
;; into the registration flow
|
||||
(navigation/navigate-reset {:index 1
|
||||
:key :profile-stack
|
||||
:actions [{:routeName :my-profile}
|
||||
{:routeName :ens-main}]})))
|
||||
(navigation/navigate-reset {:index 1
|
||||
:routes [{:name :my-profile}
|
||||
{:name :ens-main}]})))
|
||||
|
||||
(fx/defn switch-domain-type
|
||||
{:events [::switch-domain-type]}
|
||||
|
|
|
@ -145,18 +145,6 @@
|
|||
(update :hardwallet dissoc :application-info))}
|
||||
(multiaccounts.login/open-login key-uid photo-path name public-key)))))
|
||||
|
||||
;; multiaccounts logout module
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:multiaccounts.logout.ui/logout-pressed
|
||||
(fn [cofx _]
|
||||
(multiaccounts.logout/show-logout-confirmation cofx)))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:multiaccounts.logout.ui/logout-confirmed
|
||||
(fn [cofx _]
|
||||
(multiaccounts.logout/logout cofx)))
|
||||
|
||||
;; multiaccounts update module
|
||||
|
||||
(handlers/register-handler-fx
|
||||
|
|
|
@ -102,9 +102,7 @@
|
|||
|
||||
(defn multiaccounts-screen-did-load
|
||||
[{:keys [db]}]
|
||||
{:db (-> db
|
||||
(assoc-in [:hardwallet :setup-step] nil)
|
||||
(dissoc :multiaccounts/login))})
|
||||
{:db (assoc-in db [:hardwallet :setup-step] nil)})
|
||||
|
||||
(defn authentication-method-screen-did-load
|
||||
[{:keys [db]}]
|
||||
|
|
|
@ -186,7 +186,7 @@
|
|||
encryption-public-key
|
||||
{})
|
||||
(if (= flow :import)
|
||||
(navigation/navigate-to-cofx :keycard-recovery-success nil)
|
||||
(navigation/navigate-replace-cofx :keycard-recovery-success nil)
|
||||
(navigation/navigate-to-cofx :welcome nil))))))
|
||||
|
||||
(fx/defn on-generate-and-load-key-success
|
||||
|
|
|
@ -20,7 +20,7 @@
|
|||
|
||||
(fx/defn initialize-app-db
|
||||
"Initialize db to initial state"
|
||||
[{{:keys [view-id hardwallet initial-props desktop/desktop
|
||||
[{{:keys [hardwallet initial-props desktop/desktop
|
||||
supported-biometric-auth network/type app-active-since]} :db now :now}]
|
||||
{:db (assoc app-db
|
||||
:initial-props initial-props
|
||||
|
@ -29,19 +29,12 @@
|
|||
:hardwallet (dissoc hardwallet :secrets)
|
||||
:supported-biometric-auth supported-biometric-auth
|
||||
:app-active-since (or app-active-since now)
|
||||
:view-id view-id)})
|
||||
:multiaccounts/loading true)})
|
||||
|
||||
(fx/defn initialize-views
|
||||
[cofx {:keys [logout?]}]
|
||||
(let [{{:multiaccounts/keys [multiaccounts] :as db} :db} cofx]
|
||||
(cond
|
||||
(empty? multiaccounts)
|
||||
(navigation/navigate-to-cofx cofx :intro nil)
|
||||
|
||||
logout?
|
||||
(navigation/navigate-to-cofx cofx :multiaccounts nil)
|
||||
|
||||
:else
|
||||
(when (and (seq multiaccounts) (not logout?))
|
||||
(let [{:keys [key-uid public-key photo-path name]} (first (#(sort-by :last-sign-in > %) (vals multiaccounts)))]
|
||||
(multiaccounts.login/open-login cofx key-uid photo-path name public-key)))))
|
||||
|
||||
|
@ -57,7 +50,10 @@
|
|||
{}
|
||||
all-multiaccounts)]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db :multiaccounts/multiaccounts multiaccounts)}
|
||||
{:db (-> db
|
||||
(assoc :multiaccounts/multiaccounts multiaccounts)
|
||||
(assoc :multiaccounts/logout? logout?)
|
||||
(assoc :multiaccounts/loading false))}
|
||||
(initialize-views {:logout? logout?}))))
|
||||
|
||||
(fx/defn start-app [cofx]
|
||||
|
|
|
@ -38,7 +38,6 @@
|
|||
#(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)
|
||||
(.addEventListener rn-dependencies/react-native-languages "change" on-languages-change)
|
||||
(.addEventListener rn-dependencies/react-native-shake
|
||||
|
|
|
@ -110,7 +110,7 @@
|
|||
(fx/merge cofx
|
||||
{:db (update db :hardwallet dissoc :flow)}
|
||||
(if (= :import flow)
|
||||
(navigation/navigate-to-cofx :keycard-recovery-success nil)
|
||||
(navigation/navigate-to-cofx :intro-stack {:screen :keycard-recovery-success})
|
||||
(navigation/navigate-to-cofx :welcome nil))))))
|
||||
|
||||
(fx/defn initialize-dapp-permissions
|
||||
|
@ -188,10 +188,11 @@
|
|||
multiaccount (dissoc settings :networks/current-network :networks/networks)
|
||||
network-id (str (get-in networks [current-network :config :NetworkId]))]
|
||||
(fx/merge cofx
|
||||
(cond-> {:db (assoc db
|
||||
:networks/current-network current-network
|
||||
:networks/networks networks
|
||||
:multiaccount multiaccount)}
|
||||
(cond-> {:db (-> db
|
||||
(dissoc :multiaccounts/login)
|
||||
(assoc :networks/current-network current-network
|
||||
:networks/networks networks
|
||||
:multiaccount multiaccount))}
|
||||
(and platform/android?
|
||||
notifications-enabled?)
|
||||
(assoc ::notifications/enable nil)
|
||||
|
@ -244,7 +245,6 @@
|
|||
(when save-password?
|
||||
(keychain/save-user-password key-uid password))
|
||||
(keychain/save-auth-method key-uid (or new-auth-method auth-method))
|
||||
(navigation/navigate-to-cofx :home nil)
|
||||
(when platform/desktop?
|
||||
(chat-model/update-dock-badge-label)))))
|
||||
|
||||
|
@ -252,15 +252,17 @@
|
|||
[{:keys [db] :as cofx}]
|
||||
(let [{:keys [multiaccount :multiaccount/accounts]} db]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db
|
||||
;;NOTE when login the filters are initialized twice
|
||||
;;once for contacts and once for chats
|
||||
;;when creating an account we do it only once by calling
|
||||
;;load-filters directly because we don't have chats and contacts
|
||||
;;later on there is a check that filters have been initialized twice
|
||||
;;so here we set it at 1 already so that it passes the check once it has
|
||||
;;been initialized
|
||||
:filters/initialized 1)
|
||||
{:db (-> db
|
||||
(dissoc :multiaccounts/login)
|
||||
(assoc
|
||||
;;NOTE when login the filters are initialized twice
|
||||
;;once for contacts and once for chats
|
||||
;;when creating an account we do it only once by calling
|
||||
;;load-filters directly because we don't have chats and contacts
|
||||
;;later on there is a check that filters have been initialized twice
|
||||
;;so here we set it at 1 already so that it passes the check once it has
|
||||
;;been initialized
|
||||
:filters/initialized 1))
|
||||
:filters/load-filters [[(:waku-enabled multiaccount) []]]}
|
||||
(finish-keycard-setup)
|
||||
(protocol/initialize-protocol {:mailservers []
|
||||
|
@ -277,17 +279,17 @@
|
|||
(fx/defn multiaccount-login-success
|
||||
[{:keys [db now] :as cofx}]
|
||||
(let [{:keys [key-uid password save-password? creating?]} (:multiaccounts/login db)
|
||||
recovering? (get-in db [:intro-wizard :recovering?])
|
||||
login-only? (not (or creating?
|
||||
recovering?
|
||||
(keycard-setup? cofx)))
|
||||
nodes nil]
|
||||
recovering? (get-in db [:intro-wizard :recovering?])
|
||||
login-only? (not (or creating?
|
||||
recovering?
|
||||
(keycard-setup? cofx)))
|
||||
nodes nil]
|
||||
(log/debug "[multiaccount] multiaccount-login-success"
|
||||
"login-only?" login-only?
|
||||
"recovering?" recovering?)
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(dissoc :multiaccounts/login :connectivity/ui-status-properties)
|
||||
(dissoc :connectivity/ui-status-properties)
|
||||
(update :hardwallet dissoc
|
||||
:on-card-read
|
||||
:card-read-in-progress?
|
||||
|
@ -295,7 +297,7 @@
|
|||
:multiaccount)
|
||||
(assoc :logged-in-since now))
|
||||
::json-rpc/call
|
||||
[{:method "web3_clientVersion"
|
||||
[{:method "web3_clientVersion"
|
||||
:on-success #(re-frame/dispatch [::initialize-web3-client-version %])}]}
|
||||
;;FIXME
|
||||
(when nodes
|
||||
|
@ -304,19 +306,8 @@
|
|||
(login-only-events key-uid password save-password?)
|
||||
(create-only-events))
|
||||
(when recovering?
|
||||
(navigation/navigate-to-cofx :home nil)))))
|
||||
|
||||
(fx/defn open-keycard-login
|
||||
[{:keys [db] :as cofx}]
|
||||
(let [navigation-stack (:navigation-stack db)]
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(assoc-in [:hardwallet :pin :enter-step] :login)
|
||||
(assoc-in [:hardwallet :pin :status] nil)
|
||||
(assoc-in [:hardwallet :pin :login] []))}
|
||||
(if (empty? navigation-stack)
|
||||
(navigation/navigate-to-cofx :multiaccounts nil)
|
||||
(navigation/navigate-to-cofx :keycard-login-pin nil)))))
|
||||
(navigation/navigate-to-cofx :tabs {:screen :chat-stack
|
||||
:params {:screen :home}})))))
|
||||
|
||||
(fx/defn open-login
|
||||
[{:keys [db] :as cofx} key-uid photo-path name public-key]
|
||||
|
@ -336,7 +327,7 @@
|
|||
(fx/defn open-login-callback
|
||||
{:events [:multiaccounts.login.callback/get-user-password-success]}
|
||||
[{:keys [db] :as cofx} password]
|
||||
(let [key-uid (get-in db [:multiaccounts/login :key-uid])
|
||||
(let [key-uid (get-in db [:multiaccounts/login :key-uid])
|
||||
keycard-account? (boolean (get-in db [:multiaccounts/multiaccounts
|
||||
key-uid
|
||||
:keycard-pairing]))]
|
||||
|
@ -346,15 +337,18 @@
|
|||
{:db (update-in db [:multiaccounts/login] assoc
|
||||
:password password
|
||||
:save-password? true)}
|
||||
(navigation/navigate-to-cofx :progress nil)
|
||||
(navigation/navigate-to-cofx :intro-stack {:screen :progress})
|
||||
login)
|
||||
(fx/merge
|
||||
cofx
|
||||
(when keycard-account?
|
||||
{:db (assoc-in db [:hardwallet :pin :enter-step] :login)})
|
||||
(navigation/navigate-to-cofx
|
||||
(if keycard-account? :keycard-login-pin :login)
|
||||
nil)))))
|
||||
{:db (-> db
|
||||
(assoc-in [:hardwallet :pin :enter-step] :login)
|
||||
(assoc-in [:hardwallet :pin :status] nil)
|
||||
(assoc-in [:hardwallet :pin :login] []))})
|
||||
(if keycard-account?
|
||||
(navigation/navigate-to-cofx :intro-stack {:screen :keycard-login-pin})
|
||||
(navigation/navigate-to-cofx :intro-stack {:screen :login}))))))
|
||||
|
||||
(fx/defn get-credentials
|
||||
[{:keys [db] :as cofx} key-uid]
|
||||
|
@ -369,7 +363,7 @@
|
|||
"Auth method: nil - not supported, \"none\" - not selected, \"password\", \"biometric\", \"biometric-prepare\""
|
||||
{:events [:multiaccounts.login/get-auth-method-success]}
|
||||
[{:keys [db] :as cofx} auth-method]
|
||||
(let [key-uid (get-in db [:multiaccounts/login :key-uid])
|
||||
(let [key-uid (get-in db [:multiaccounts/login :key-uid])
|
||||
keycard-multiaccount? (boolean (get-in db [:multiaccounts/multiaccounts key-uid :keycard-pairing]))]
|
||||
(log/debug "[login] get-auth-method-success"
|
||||
"auth-method" auth-method
|
||||
|
@ -383,9 +377,7 @@
|
|||
(get-credentials % key-uid)
|
||||
|
||||
;;nil or "none" or "biometric-prepare"
|
||||
(if keycard-multiaccount?
|
||||
(open-keycard-login %)
|
||||
(open-login-callback % nil))))))
|
||||
(open-login-callback % nil)))))
|
||||
|
||||
(fx/defn biometric-auth-done
|
||||
{:events [:biometric-auth-done]}
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
[status-im.ui.screens.navigation :as navigation]
|
||||
[status-im.utils.keychain.core :as keychain]))
|
||||
|
||||
(fx/defn logout-method [{:keys [db] :as cofx} {:keys [auth-method logout?]}]
|
||||
(fx/defn logout-method
|
||||
[{:keys [db] :as cofx} {:keys [auth-method logout?]}]
|
||||
(let [key-uid (get-in db [:multiaccount :key-uid])]
|
||||
(fx/merge cofx
|
||||
{::logout nil
|
||||
|
@ -21,12 +22,14 @@
|
|||
(init/initialize-app-db))))
|
||||
|
||||
(fx/defn logout
|
||||
{:events [:logout]}
|
||||
{:events [:logout :multiaccounts.logout.ui/logout-confirmed]}
|
||||
[cofx]
|
||||
(logout-method cofx {:auth-method keychain/auth-method-none
|
||||
:logout? true}))
|
||||
|
||||
(fx/defn show-logout-confirmation [_]
|
||||
(fx/defn show-logout-confirmation
|
||||
{:events [:multiaccounts.logout.ui/logout-pressed]}
|
||||
[_]
|
||||
{:ui/show-confirmation
|
||||
{:title (i18n/label :t/logout-title)
|
||||
:content (i18n/label :t/logout-are-you-sure)
|
||||
|
|
|
@ -60,7 +60,6 @@
|
|||
|
||||
;;view
|
||||
(reg-root-key-sub :view-id :view-id)
|
||||
(reg-root-key-sub :navigation-stack :navigation-stack)
|
||||
(reg-root-key-sub :screen-params :navigation/screen-params)
|
||||
(reg-root-key-sub :two-pane-ui-enabled? :two-pane-ui-enabled?)
|
||||
|
||||
|
@ -191,8 +190,15 @@
|
|||
|
||||
(reg-root-key-sub :auth-method :auth-method)
|
||||
|
||||
(reg-root-key-sub :multiaccounts/loading :multiaccounts/loading)
|
||||
|
||||
;;GENERAL ==============================================================================================================
|
||||
|
||||
(re-frame/reg-sub
|
||||
:multiaccount/logged-in?
|
||||
(fn [db]
|
||||
(multiaccounts.model/logged-in? {:db db})))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:connection-stats
|
||||
:<- [:desktop/desktop]
|
||||
|
@ -359,12 +365,6 @@
|
|||
(fn [[params view-id-db] [_ view-id]]
|
||||
(get params (or view-id view-id-db))))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:can-navigate-back?
|
||||
:<- [:navigation-stack]
|
||||
(fn [stack]
|
||||
(> (count stack) 1)))
|
||||
|
||||
(re-frame/reg-sub
|
||||
:delete-swipe-position
|
||||
:<- [:animations]
|
||||
|
|
|
@ -3,10 +3,14 @@
|
|||
[status-im.ui.components.status-bar.styles :as styles]
|
||||
[status-im.utils.platform :as platform]))
|
||||
|
||||
(def route->bar-type (merge {:qr-scanner {:type :black}}
|
||||
(when platform/ios?
|
||||
{:new-chat {:type :black}
|
||||
:new-public-chat {:type :black}})))
|
||||
|
||||
;; TODO: Integrate into navigation
|
||||
(defn get-config [view-id]
|
||||
(or (get {:qr-scanner {:type :black}}
|
||||
view-id)
|
||||
{:type :main}))
|
||||
(get route->bar-type view-id {:type :main}))
|
||||
|
||||
(defn set-status-bar
|
||||
"If more than one `StatusBar` is rendered, the one which was mounted last will
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
[status-im.ui.components.animation :as animation]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[reagent.core :as reagent]
|
||||
[oops.core :refer [oget]]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.ui.components.icons.vector-icons :as vector-icons]
|
||||
|
@ -10,7 +11,9 @@
|
|||
[status-im.i18n :as i18n]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(defonce visible? (animation/create-value 1))
|
||||
(defonce visible? (animation/create-value 0))
|
||||
|
||||
(defonce minimized-state (reagent/atom nil))
|
||||
(defonce last-to-value (atom 1))
|
||||
|
||||
(defn animate
|
||||
|
@ -27,6 +30,20 @@
|
|||
:useNativeDriver true})
|
||||
callback))))
|
||||
|
||||
(defn main-tab? [view-id]
|
||||
(contains?
|
||||
#{:home :wallet :open-dapp :my-profile :wallet-onboarding-setup}
|
||||
view-id))
|
||||
|
||||
(defn minimize-bar [route-name]
|
||||
(if (main-tab? route-name)
|
||||
(do
|
||||
(reset! minimized-state false)
|
||||
(animate visible? 150 0))
|
||||
(do
|
||||
(reset! minimized-state true)
|
||||
(animate visible? 150 1))))
|
||||
|
||||
(def tabs-list-data
|
||||
(->>
|
||||
[{:nav-stack :chat-stack
|
||||
|
@ -49,119 +66,38 @@
|
|||
:icon :main-icons/user-profile}
|
||||
:count-subscription :get-profile-unread-messages-number
|
||||
:accessibility-label :profile-tab-button}]
|
||||
(remove nil?)))
|
||||
(remove nil?)
|
||||
(map-indexed vector)))
|
||||
|
||||
(defn new-tab
|
||||
[{:keys [icon label active? nav-stack
|
||||
accessibility-label count-subscription]}]
|
||||
(let [count (when count-subscription
|
||||
(re-frame/subscribe [count-subscription]))]
|
||||
[react/touchable-highlight
|
||||
{:style tabs.styles/touchable-container
|
||||
:disabled active?
|
||||
:on-press #(re-frame/dispatch-sync [:navigate-to nav-stack])
|
||||
:accessibility-label accessibility-label}
|
||||
[react/view
|
||||
{:style tabs.styles/new-tab-container}
|
||||
[react/view
|
||||
{:style tabs.styles/icon-container}
|
||||
[vector-icons/icon icon (tabs.styles/icon active?)]
|
||||
(when count
|
||||
(cond
|
||||
(or (pos? @count) (pos? (:other @count)))
|
||||
[react/view {:style (if (= nav-stack :chat-stack)
|
||||
tabs.styles/message-counter
|
||||
tabs.styles/counter)}
|
||||
[badge/message-counter (or (:other @count) @count) true]]
|
||||
(pos? (:public @count))
|
||||
[react/view {:style tabs.styles/counter-public-container}
|
||||
[react/view {:style tabs.styles/counter-public
|
||||
:accessibility-label :public-unread-badge}]]))]
|
||||
(when-not platform/desktop?
|
||||
[react/view {:style tabs.styles/tab-title-container}
|
||||
[react/text {:style (tabs.styles/new-tab-title active?)}
|
||||
label]])]]))
|
||||
(defn tab []
|
||||
(fn [{:keys [icon label active? nav-stack on-press
|
||||
accessibility-label count-subscription]}]
|
||||
(let [count (when count-subscription @(re-frame/subscribe [count-subscription]))]
|
||||
[react/touchable-highlight {:style tabs.styles/touchable-container
|
||||
:on-press on-press
|
||||
:accessibility-label accessibility-label}
|
||||
[react/view {:style tabs.styles/tab-container}
|
||||
[react/view {:style tabs.styles/icon-container}
|
||||
[vector-icons/icon icon (tabs.styles/icon active?)]
|
||||
(when count
|
||||
(cond
|
||||
(or (pos? count) (pos? (:other count)))
|
||||
[react/view {:style (if (= nav-stack :chat-stack)
|
||||
tabs.styles/message-counter
|
||||
tabs.styles/counter)}
|
||||
[badge/message-counter (or (:other count) count) true]]
|
||||
(pos? (:public count))
|
||||
[react/view {:style tabs.styles/counter-public-container}
|
||||
[react/view {:style tabs.styles/counter-public
|
||||
:accessibility-label :public-unread-badge}]]))]
|
||||
(when-not platform/desktop?
|
||||
[react/view {:style tabs.styles/tab-title-container}
|
||||
[react/text {:style (tabs.styles/tab-title active?)}
|
||||
label]])]])))
|
||||
|
||||
(defn tabs [current-view-id]
|
||||
[react/view
|
||||
{:style tabs.styles/new-tabs-container}
|
||||
[react/view {:style tabs.styles/tabs}
|
||||
(for [{:keys [nav-stack accessibility-label count-subscription]
|
||||
{:keys [icon title]} :content} tabs-list-data]
|
||||
^{:key nav-stack}
|
||||
[new-tab
|
||||
{:icon icon
|
||||
:label title
|
||||
:accessibility-label accessibility-label
|
||||
:count-subscription count-subscription
|
||||
:active? (= current-view-id nav-stack)
|
||||
:nav-stack nav-stack}])]])
|
||||
|
||||
(defn main-tab? [view-id]
|
||||
(contains?
|
||||
#{:home :wallet :open-dapp :my-profile :wallet-onboarding-setup}
|
||||
view-id))
|
||||
|
||||
(defn minimize-bar [view-id]
|
||||
(if (main-tab? view-id)
|
||||
(animate visible? 150 1)
|
||||
(animate visible? 150 tabs.styles/minimized-tab-ratio)))
|
||||
|
||||
(defn tabs-animation-wrapper-ios
|
||||
[content]
|
||||
[react/view {:style tabs.styles/title-cover-wrapper-ios}
|
||||
[react/view
|
||||
content
|
||||
(when platform/iphone-x?
|
||||
[react/view
|
||||
{:style tabs.styles/ios-titles-cover}])]])
|
||||
|
||||
(defn tabs-animation-wrapper-android
|
||||
[keyboard-shown? view-id content]
|
||||
[react/view
|
||||
{:style (tabs.styles/animation-wrapper
|
||||
keyboard-shown?
|
||||
(main-tab? view-id))}
|
||||
[react/view
|
||||
{:style tabs.styles/title-cover-wrapper-android}
|
||||
content]])
|
||||
|
||||
(defn tabs-animation-wrapper [keyboard-shown? view-id tab]
|
||||
(reagent.core/create-class
|
||||
{:component-will-update
|
||||
(fn [this new-params]
|
||||
(let [old-view-id (get (.-argv (.-props this)) 2)
|
||||
new-view-id (get new-params 2)]
|
||||
(when (not= new-view-id old-view-id)
|
||||
(minimize-bar new-view-id))))
|
||||
:reagent-render
|
||||
(fn [keyboard-shown? view-id tab]
|
||||
(when-not (contains? #{:enter-pin-settings} view-id)
|
||||
(case platform/os
|
||||
"ios" [tabs-animation-wrapper-ios
|
||||
[react/animated-view
|
||||
{:style (tabs.styles/animated-container visible? keyboard-shown?)}
|
||||
[tabs tab]]]
|
||||
"android" [tabs-animation-wrapper-android
|
||||
keyboard-shown?
|
||||
view-id
|
||||
[react/animated-view
|
||||
{:style (tabs.styles/animated-container visible? keyboard-shown?)}
|
||||
[tabs tab]]]
|
||||
"desktop"
|
||||
[tabs-animation-wrapper-android
|
||||
keyboard-shown?
|
||||
view-id
|
||||
[react/animated-view
|
||||
{:style (tabs.styles/animated-container visible? keyboard-shown?)}
|
||||
[tabs tab]]])))}))
|
||||
|
||||
(def disappearance-duration 150)
|
||||
(def appearance-duration 100)
|
||||
|
||||
(defn tabbar [_ view-id]
|
||||
(let [keyboard-shown? (reagent/atom false)
|
||||
listeners (atom [])]
|
||||
(defn tabs []
|
||||
(let [listeners (atom [])
|
||||
keyboard-shown? (reagent/atom false)]
|
||||
(reagent/create-class
|
||||
{:component-did-mount
|
||||
(fn []
|
||||
|
@ -170,16 +106,10 @@
|
|||
listeners
|
||||
[(.addListener react/keyboard "keyboardDidShow"
|
||||
(fn []
|
||||
(reset! keyboard-shown? true)
|
||||
(animate visible?
|
||||
disappearance-duration 0)))
|
||||
(reset! keyboard-shown? true)))
|
||||
(.addListener react/keyboard "keyboardDidHide"
|
||||
(fn []
|
||||
(reset! keyboard-shown? false)
|
||||
(animate visible? appearance-duration
|
||||
(if (main-tab? @view-id)
|
||||
1
|
||||
tabs.styles/minimized-tab-ratio))))])))
|
||||
(reset! keyboard-shown? false)))])))
|
||||
:component-will-unmount
|
||||
(fn []
|
||||
(when (not-empty @listeners)
|
||||
|
@ -187,14 +117,36 @@
|
|||
(when listener
|
||||
(.remove listener)))))
|
||||
:reagent-render
|
||||
(fn [args view-id]
|
||||
(let [idx (.. (:navigation args)
|
||||
-state
|
||||
-index)
|
||||
tab (case idx
|
||||
0 :chat-stack
|
||||
1 :browser-stack
|
||||
2 :wallet-stack
|
||||
3 :profile-stack
|
||||
:chat-stack)]
|
||||
[tabs-animation-wrapper @keyboard-shown? @view-id tab]))})))
|
||||
(fn [{:keys [navigate index inset]}]
|
||||
[react/animated-view {:style (tabs.styles/tabs-wrapper @keyboard-shown? @minimized-state inset)}
|
||||
[react/animated-view {:style (tabs.styles/animated-container visible?)}
|
||||
[react/view
|
||||
{:style tabs.styles/tabs-container}
|
||||
[react/view {:style tabs.styles/tabs}
|
||||
(for [[route-index
|
||||
{:keys [nav-stack accessibility-label count-subscription content]}]
|
||||
tabs-list-data
|
||||
|
||||
:let [{:keys [icon title]} content]]
|
||||
^{:key nav-stack}
|
||||
[tab
|
||||
{:icon icon
|
||||
:label title
|
||||
:on-press #(navigate (name nav-stack))
|
||||
:accessibility-label accessibility-label
|
||||
:count-subscription count-subscription
|
||||
:active? (= (str index) (str route-index))
|
||||
:nav-stack nav-stack}])]]]
|
||||
[react/view
|
||||
{:style (tabs.styles/ios-titles-cover inset)}]])})))
|
||||
|
||||
(defn tabbar [props]
|
||||
(let [navigate (oget props "navigation" "navigate")
|
||||
index (oget props "state" "index")]
|
||||
(reagent/as-element
|
||||
[react/safe-area-consumer
|
||||
(fn [insets]
|
||||
(reagent/as-element
|
||||
[tabs {:navigate navigate
|
||||
:index index
|
||||
:inset (oget insets "bottom")}]))])))
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
(def tabs-height
|
||||
(cond
|
||||
platform/android? 52
|
||||
platform/ios? 52
|
||||
platform/ios? 52
|
||||
platform/desktop? 36))
|
||||
|
||||
(def minimized-tabs-height 36)
|
||||
|
@ -17,30 +17,6 @@
|
|||
(def minimized-tab-ratio
|
||||
(/ minimized-tabs-height tabs-height))
|
||||
|
||||
(def tab-height (dec tabs-height))
|
||||
|
||||
(def tabs-container
|
||||
{:flex-direction :row
|
||||
:height tabs-height
|
||||
:background-color colors/white
|
||||
:border-top-width 1
|
||||
:border-top-color colors/black-transparent})
|
||||
|
||||
(def tab-container
|
||||
{:height tabs-height
|
||||
:justify-content :center
|
||||
:align-items :center})
|
||||
|
||||
(styles/defn tab-title [active?]
|
||||
{:ios {:font-size 11}
|
||||
:android {:font-size 11}
|
||||
:desktop {:font-size 12
|
||||
:font-weight (if active? "600" "400")}
|
||||
:text-align :center
|
||||
:color (if active?
|
||||
colors/blue
|
||||
colors/gray)})
|
||||
|
||||
(def counter
|
||||
{:right 0
|
||||
:top 0
|
||||
|
@ -76,7 +52,7 @@
|
|||
{:flex 1
|
||||
:height tabs-height})
|
||||
|
||||
(def new-tab-container
|
||||
(def tab-container
|
||||
{:flex 1
|
||||
:height tabs-height
|
||||
:align-items :center
|
||||
|
@ -101,72 +77,49 @@
|
|||
:align-items :center
|
||||
:justify-content :center})
|
||||
|
||||
(defn new-tab-title [active?]
|
||||
(defn tab-title [active?]
|
||||
{:color (if active? colors/blue colors/gray)
|
||||
:font-size 11})
|
||||
|
||||
(styles/def new-tabs-container
|
||||
{:height tabs-height
|
||||
:align-self :stretch
|
||||
:ios {:background-color :white
|
||||
:shadow-radius 4
|
||||
:shadow-offset {:width 0 :height -5}
|
||||
:shadow-opacity 0.3
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}
|
||||
:desktop {:background-color :white
|
||||
:shadow-radius 4
|
||||
:shadow-offset {:width 0 :height -5}
|
||||
:shadow-opacity 0.3
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}})
|
||||
(styles/def tabs-container
|
||||
{:height minimized-tabs-height
|
||||
:align-self :stretch
|
||||
:background-color :white
|
||||
:ios {:shadow-radius 4
|
||||
:shadow-offset {:width 0 :height -5}
|
||||
:shadow-opacity 0.3
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}
|
||||
:desktop {:background-color :white
|
||||
:shadow-radius 4
|
||||
:shadow-offset {:width 0 :height -5}
|
||||
:shadow-opacity 0.3
|
||||
:shadow-color "rgba(0, 9, 26, 0.12)"}})
|
||||
|
||||
(def tabs
|
||||
{:height tabs-height
|
||||
:align-self :stretch
|
||||
:padding-left 8
|
||||
:padding-right 8
|
||||
:flex-direction :row})
|
||||
{:align-self :stretch
|
||||
:padding-horizontal 8
|
||||
:flex-direction :row})
|
||||
|
||||
(defn animated-container [visible? keyboard-shown?]
|
||||
{:bottom 0
|
||||
:left 0
|
||||
:right 0
|
||||
:background-color :white
|
||||
:elevation 8
|
||||
:position (when (or platform/ios?
|
||||
keyboard-shown?)
|
||||
:absolute)
|
||||
:transform [{:translateY
|
||||
(animation/interpolate
|
||||
visible?
|
||||
{:inputRange [0 1]
|
||||
:outputRange [tabs-height 0]})}]})
|
||||
(defn animated-container [visible?]
|
||||
{:transform [{:translateY
|
||||
(animation/interpolate visible?
|
||||
{:inputRange [0 1]
|
||||
:outputRange [(- tabs-diff) 0]})}]})
|
||||
|
||||
(def ios-titles-cover
|
||||
(defn ios-titles-cover [inset]
|
||||
{:background-color :white
|
||||
:position :absolute
|
||||
:height (- tabs-height minimized-tabs-height)
|
||||
:height tabs-diff
|
||||
:align-self :stretch
|
||||
:top 0
|
||||
:bottom (- inset tabs-diff)
|
||||
:right 0
|
||||
:left 0})
|
||||
|
||||
(def title-cover-wrapper-ios
|
||||
{:left 0
|
||||
:right 0
|
||||
:bottom 0
|
||||
:padding-bottom (if platform/iphone-x? 34 0)
|
||||
:position :absolute
|
||||
:background-color :white})
|
||||
|
||||
(def title-cover-wrapper-android
|
||||
{:left 0
|
||||
:right 0
|
||||
:bottom 0
|
||||
:position :absolute})
|
||||
|
||||
(defn animation-wrapper [keyboard-shown? main-tab?]
|
||||
{:height (cond
|
||||
keyboard-shown? 0
|
||||
main-tab? tabs-height
|
||||
:else minimized-tabs-height)
|
||||
:align-self :stretch})
|
||||
(defn tabs-wrapper [keyboard minimized inset]
|
||||
(merge {:padding-bottom inset
|
||||
:elevation 8
|
||||
:padding-top (if minimized 0 tabs-diff)
|
||||
:background-color :white}
|
||||
(when keyboard
|
||||
{:position :absolute
|
||||
:bottom (- tabs-height)})))
|
||||
|
|
|
@ -60,3 +60,8 @@
|
|||
%
|
||||
new-identity
|
||||
@resolve-last-id])}})))))))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
::new-chat-focus
|
||||
(fn [{:keys [db]}]
|
||||
{:db (dissoc db :contacts/new-identity)}))
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
(ns status-im.ui.screens.add-new.new-chat.navigation
|
||||
(:require [status-im.ui.screens.navigation :as navigation]))
|
||||
|
||||
(defmethod navigation/preload-data! :new-chat
|
||||
[db _]
|
||||
(dissoc db :contacts/new-identity))
|
|
@ -8,7 +8,6 @@
|
|||
[status-im.ui.components.list.views :as list]
|
||||
[status-im.ui.components.common.common :as components.common]
|
||||
[status-im.ui.screens.wallet.components.views :as components]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[status-im.react-native.resources :as resources]
|
||||
[status-im.ui.components.list-item.views :as list-item]
|
||||
[status-im.ui.components.icons.vector-icons :as vector-icons]
|
||||
|
@ -70,7 +69,7 @@
|
|||
[react/view {:position :absolute
|
||||
:z-index 2
|
||||
:align-items :center
|
||||
:bottom (+ 16 tabs.styles/tabs-diff)
|
||||
:bottom 16
|
||||
:left 0
|
||||
:right 0
|
||||
:padding-horizontal 32}
|
||||
|
@ -106,7 +105,7 @@
|
|||
[list-header false]
|
||||
[list/flat-list {:data browsers
|
||||
:footer [react/view
|
||||
{:style {:height (+ tabs.styles/tabs-diff 64)
|
||||
{:style {:height 64
|
||||
:align-self :stretch}}]
|
||||
:key-fn :browser-id
|
||||
:end-fill-color colors/white
|
||||
|
|
|
@ -20,7 +20,6 @@
|
|||
|
||||
;; initial state of app-db
|
||||
(def app-db {:keyboard-height 0
|
||||
:navigation-stack '(:multiaccounts)
|
||||
:contacts/contacts {}
|
||||
:pairing/installations {}
|
||||
:qr-codes {}
|
||||
|
@ -63,7 +62,6 @@
|
|||
|
||||
;;;;GLOBAL
|
||||
|
||||
(spec/def ::was-modal? (spec/nilable boolean?))
|
||||
;;"http://localhost:8545"
|
||||
(spec/def ::rpc-url (spec/nilable string?))
|
||||
;;object? doesn't work
|
||||
|
@ -94,12 +92,6 @@
|
|||
|
||||
;;current view
|
||||
(spec/def :navigation/view-id (spec/nilable keyword?))
|
||||
;;modal view id
|
||||
(spec/def :navigation/modal (spec/nilable keyword?))
|
||||
;;stack of view's ids (keywords)
|
||||
(spec/def :navigation/navigation-stack (spec/nilable seq?))
|
||||
(spec/def :navigation/prev-tab-view-id (spec/nilable keyword?))
|
||||
(spec/def :navigation/prev-view-id (spec/nilable keyword?))
|
||||
;; navigation screen params
|
||||
(spec/def :navigation.screen-params/network-details (spec/keys :req [:networks/selected-network]))
|
||||
(spec/def :navigation.screen-params/browser (spec/nilable map?))
|
||||
|
@ -121,7 +113,6 @@
|
|||
|
||||
(spec/def :navigation.screen-params/collectibles-list map?)
|
||||
|
||||
(spec/def :navigation.screen-params/selection-modal-screen map?)
|
||||
(spec/def :navigation.screen-params/manage-dapps-permissions map?)
|
||||
|
||||
(spec/def :navigation/screen-params (spec/nilable (spec/keys :opt-un [:navigation.screen-params/network-details
|
||||
|
@ -131,7 +122,6 @@
|
|||
:navigation.screen-params/group-contacts
|
||||
:navigation.screen-params/edit-contact-group
|
||||
:navigation.screen-params/collectibles-list
|
||||
:navigation.screen-params/selection-modal-screen
|
||||
:navigation.screen-params/manage-dapps-permissions])))
|
||||
|
||||
(spec/def :desktop/desktop (spec/nilable any?))
|
||||
|
@ -257,7 +247,6 @@
|
|||
:popover/popover
|
||||
:wallet/sign-phrase-showed?]
|
||||
:opt-un [::modal
|
||||
::was-modal?
|
||||
::rpc-url
|
||||
::tooltips
|
||||
::initial-props
|
||||
|
@ -282,9 +271,6 @@
|
|||
::auth-method
|
||||
:multiaccount/multiaccount
|
||||
:navigation/view-id
|
||||
:navigation/navigation-stack
|
||||
:navigation/prev-tab-view-id
|
||||
:navigation/prev-view-id
|
||||
:chat/chats
|
||||
:chat/current-chat-id
|
||||
:chat/chat-id
|
||||
|
|
|
@ -19,7 +19,6 @@
|
|||
[status-im.ui.components.toolbar.view :as toolbar]
|
||||
[status-im.ui.screens.chat.message.message :as message]
|
||||
[status-im.ui.screens.profile.components.views :as profile.components]
|
||||
[status-im.utils.navigation :as navigation]
|
||||
[status-im.ui.components.list-item.views :as list-item]
|
||||
[status-im.ui.screens.chat.photos :as photos]
|
||||
[status-im.multiaccounts.core :as multiaccounts]
|
||||
|
@ -186,10 +185,11 @@
|
|||
[react/view {:flex-direction :row :justify-content :center}
|
||||
;;NOTE required so that the keyboards shows up when navigating
|
||||
;;back from checkout screen
|
||||
[:> navigation/navigation-events
|
||||
{:on-did-focus
|
||||
(fn []
|
||||
(.focus @input-ref))}]
|
||||
;; TODO: navigation-events were deprecated
|
||||
;; [:> navigation/navigation-events
|
||||
;; {:on-did-focus
|
||||
;; (fn []
|
||||
;; (.focus @input-ref))}]
|
||||
;;NOTE setting the key as placeholder forces the component to remount
|
||||
;;when the placeholder changes, this prevents the placeholder from
|
||||
;;disappearing when switching between stateofus and custom domain
|
||||
|
|
|
@ -4,12 +4,9 @@
|
|||
status-im.ui.screens.group.chat-settings.events
|
||||
status-im.ui.screens.group.events
|
||||
status-im.utils.universal-links.events
|
||||
status-im.ui.screens.add-new.new-chat.navigation
|
||||
status-im.ui.screens.profile.events
|
||||
status-im.ui.screens.wallet.navigation
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.chat.models :as chat]
|
||||
[status-im.chat.models.loading :as chat.loading]
|
||||
[status-im.hardwallet.core :as hardwallet]
|
||||
[status-im.mailserver.core :as mailserver]
|
||||
[status-im.multiaccounts.recover.core :as recovery]
|
||||
|
@ -194,14 +191,12 @@
|
|||
(fn [{:keys [db]} [_ enabled?]]
|
||||
{:db (assoc db :two-pane-ui-enabled? enabled?)}))
|
||||
|
||||
;; NOTE: Will be removed with the keycard PR
|
||||
(handlers/register-handler-fx
|
||||
:screens/on-will-focus
|
||||
(fn [{:keys [db] :as cofx} [_ view-id]]
|
||||
(fx/merge cofx
|
||||
{:db (assoc db :view-id view-id)}
|
||||
#(case view-id
|
||||
:chat (chat.loading/load-messages cofx)
|
||||
:home (chat.loading/offload-all-messages cofx)
|
||||
:keycard-settings (hardwallet/settings-screen-did-load %)
|
||||
:reset-card (hardwallet/reset-card-screen-did-load %)
|
||||
:enter-pin-settings (hardwallet/enter-pin-screen-did-load %)
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
(ns status-im.ui.screens.group.events
|
||||
(:require [status-im.utils.handlers :as handlers]
|
||||
[status-im.ui.screens.group.navigation]))
|
||||
(:require [status-im.utils.handlers :as handlers]))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:deselect-contact
|
||||
|
@ -21,3 +20,8 @@
|
|||
:select-participant
|
||||
(fn [{:keys [db]} [_ id]]
|
||||
{:db (update db :selected-participants conj id)}))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
::add-participants-toggle-list
|
||||
(fn [{db :db}]
|
||||
{:db (assoc db :selected-participants #{})}))
|
||||
|
|
|
@ -1,6 +0,0 @@
|
|||
(ns status-im.ui.screens.group.navigation
|
||||
(:require [status-im.ui.screens.navigation :as nav]))
|
||||
|
||||
(defmethod nav/preload-data! :add-participants-toggle-list
|
||||
[db _]
|
||||
(assoc db :selected-participants #{}))
|
|
@ -41,7 +41,7 @@
|
|||
[react/i18n-text {:style styles/welcome-text-description
|
||||
:key :welcome-to-status-description}]]
|
||||
[react/view {:align-items :center :margin-bottom 50}
|
||||
[components.common/button {:on-press #(re-frame/dispatch [:navigate-back])
|
||||
[components.common/button {:on-press #(re-frame/dispatch [:navigate-reset :tabs])
|
||||
:accessibility-label :lets-go-button
|
||||
:label (i18n/label :t/lets-go)}]]])
|
||||
|
||||
|
|
|
@ -17,14 +17,6 @@
|
|||
[status-im.ui.components.topbar :as topbar])
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs]]))
|
||||
|
||||
(defn login-toolbar [can-navigate-back?]
|
||||
[topbar/topbar
|
||||
{:navigation (if can-navigate-back?
|
||||
{:icon :main-icons/back
|
||||
:accessibility-label :back-button
|
||||
:handler #(re-frame/dispatch [:navigate-reset :multiaccounts])}
|
||||
:none)}])
|
||||
|
||||
(defn login-multiaccount [password-text-input]
|
||||
(.blur password-text-input)
|
||||
(re-frame/dispatch [:multiaccounts.login.ui/password-input-submitted]))
|
||||
|
@ -46,14 +38,13 @@
|
|||
|
||||
(defview login []
|
||||
(letsubs [{:keys [error processing save-password?] :as multiaccount} [:multiaccounts/login]
|
||||
can-navigate-back? [:can-navigate-back?]
|
||||
password-text-input (atom nil)
|
||||
sign-in-enabled? [:sign-in-enabled?]
|
||||
auth-method [:auth-method]
|
||||
view-id [:view-id]
|
||||
supported-biometric-auth [:supported-biometric-auth]]
|
||||
[react/keyboard-avoiding-view {:style ast/multiaccounts-view}
|
||||
[login-toolbar can-navigate-back?]
|
||||
[topbar/topbar {}]
|
||||
[react/scroll-view {:keyboardShouldPersistTaps :always
|
||||
:style styles/login-view}
|
||||
[react/view styles/login-badge-container
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
(ns status-im.ui.screens.navigation
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.utils.handlers :as handlers]
|
||||
[status-im.utils.navigation :as navigation]
|
||||
[status-im.ui.screens.routing.core :as navigation]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.utils.fx :as fx]))
|
||||
|
||||
|
@ -10,54 +10,29 @@
|
|||
|
||||
(defmethod unload-data! :default [db] db)
|
||||
|
||||
(defmulti preload-data!
|
||||
(fn [db [_ view-id]] (or view-id (:view-id db))))
|
||||
|
||||
(defmethod preload-data! :default [db _] db)
|
||||
|
||||
(defn- -preload-data! [{:keys [was-modal?] :as db} & args]
|
||||
(if was-modal?
|
||||
(dissoc db :was-modal?)
|
||||
(apply preload-data! db args)))
|
||||
|
||||
(fx/defn navigate-to-cofx
|
||||
[{:keys [db]} go-to-view-id screen-params]
|
||||
(let [view-id (:view-id db)
|
||||
db (cond-> (assoc db :view-id go-to-view-id)
|
||||
(let [db (cond-> (assoc db :view-id go-to-view-id)
|
||||
|
||||
;; TODO: Inspect the need of screen-params
|
||||
(seq screen-params)
|
||||
(assoc-in [:navigation/screen-params go-to-view-id]
|
||||
screen-params))]
|
||||
{:db (if (= view-id go-to-view-id)
|
||||
db
|
||||
(-> db
|
||||
(update :navigation-stack conj go-to-view-id)
|
||||
(assoc :view-id go-to-view-id)))
|
||||
{:db db
|
||||
::navigate-to [go-to-view-id screen-params]}))
|
||||
|
||||
(fx/defn navigate-replace-cofx
|
||||
[{:keys [db]} go-to-view-id screen-params]
|
||||
(let [view-id (:view-id db)
|
||||
db (cond-> (assoc db :view-id go-to-view-id)
|
||||
(seq screen-params)
|
||||
(assoc-in [:navigation/screen-params go-to-view-id]
|
||||
screen-params))]
|
||||
{:db (if (= view-id go-to-view-id)
|
||||
db
|
||||
(-> db
|
||||
(update :navigation-stack conj go-to-view-id)
|
||||
(assoc :view-id go-to-view-id)))
|
||||
(let [db (cond-> (assoc db :view-id go-to-view-id)
|
||||
(seq screen-params)
|
||||
(assoc-in [:navigation/screen-params go-to-view-id]
|
||||
screen-params))]
|
||||
{:db db
|
||||
::navigate-replace [go-to-view-id screen-params]}))
|
||||
|
||||
(fx/defn navigate-reset
|
||||
[{:keys [db]} {:keys [index actions] :as config}]
|
||||
(let [stack (into '() (map :routeName actions))
|
||||
view-id (get stack index)]
|
||||
{:db (assoc db
|
||||
:view-id view-id
|
||||
;;NOTE: stricly needs to be a list
|
||||
;;because navigate-back pops it
|
||||
:navigation-stack stack)
|
||||
::navigate-reset config}))
|
||||
[_ config]
|
||||
{::navigate-reset config})
|
||||
|
||||
(def unload-data-interceptor
|
||||
(re-frame/->interceptor
|
||||
|
@ -68,7 +43,7 @@
|
|||
(re-frame/assoc-coeffect context :db (unload-data! db))))))
|
||||
|
||||
(def navigation-interceptors
|
||||
[unload-data-interceptor (re-frame/enrich preload-data!)])
|
||||
[unload-data-interceptor])
|
||||
|
||||
(re-frame/reg-fx
|
||||
::navigate-to
|
||||
|
@ -76,6 +51,12 @@
|
|||
(log/debug :navigate-to view-id params)
|
||||
(navigation/navigate-to (name view-id) params)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::navigate-replace
|
||||
(fn [[view-id params]]
|
||||
(log/debug :navigate-replace view-id params)
|
||||
(navigation/navigate-replace (name view-id) params)))
|
||||
|
||||
(re-frame/reg-fx
|
||||
::navigate-back
|
||||
(fn []
|
||||
|
@ -100,40 +81,20 @@
|
|||
(fn [cofx [_ & [go-to-view-id screen-params]]]
|
||||
(navigate-to-cofx cofx go-to-view-id screen-params)))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-replace
|
||||
navigation-interceptors
|
||||
(fn [cofx [_ & [go-to-view-id screen-params]]]
|
||||
(navigate-replace-cofx cofx go-to-view-id screen-params)))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-to-modal
|
||||
navigation-interceptors
|
||||
(fn [{:keys [db]} [_ modal-view]]
|
||||
{:db (assoc db :modal modal-view)}))
|
||||
|
||||
(fx/defn navigate-back
|
||||
[{{:keys [navigation-stack view-id] :as db} :db}]
|
||||
{::navigate-back nil
|
||||
:db (let [[previous-view-id :as navigation-stack'] (pop navigation-stack)
|
||||
first-in-stack (first navigation-stack)]
|
||||
(if (= view-id first-in-stack)
|
||||
(-> db
|
||||
(assoc :view-id previous-view-id)
|
||||
(assoc :navigation-stack navigation-stack'))
|
||||
(assoc db :view-id first-in-stack)))})
|
||||
[_]
|
||||
{::navigate-back nil})
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-back
|
||||
(re-frame/enrich -preload-data!)
|
||||
(fn [cofx _]
|
||||
(navigate-back cofx)))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-reset
|
||||
(fn [cofx [_ view-id]]
|
||||
(navigate-reset cofx {:index 0
|
||||
:actions [{:routeName view-id}]})))
|
||||
(navigate-reset cofx {:index 0
|
||||
:routes [{:name view-id}]})))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-to-clean
|
||||
|
@ -141,11 +102,7 @@
|
|||
(navigate-to-cofx cofx view-id params)))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
:navigate-to-tab
|
||||
:navigate-replace
|
||||
navigation-interceptors
|
||||
(fn [{:keys [db] :as cofx} [_ view-id]]
|
||||
(fx/merge cofx
|
||||
{:db (-> db
|
||||
(assoc :prev-tab-view-id (:view-id db))
|
||||
(assoc :prev-view-id (:view-id db)))}
|
||||
(navigate-to-cofx view-id {}))))
|
||||
(fn [cofx [_ & [go-to-view-id screen-params]]]
|
||||
(navigate-replace-cofx cofx go-to-view-id screen-params)))
|
||||
|
|
|
@ -52,7 +52,8 @@
|
|||
(defn footer [syncing]
|
||||
[react/touchable-highlight {:on-press (when-not @syncing
|
||||
synchronize-installations!)
|
||||
:style main-tabs.styles/tabs-container}
|
||||
;; TODO: Inspect the need of coupling with tabbar here
|
||||
:style main-tabs.styles/tabs-container}
|
||||
[react/view
|
||||
{:style styles/footer-content}
|
||||
[react/text
|
||||
|
|
|
@ -4,8 +4,6 @@
|
|||
[status-im.i18n :as i18n]
|
||||
[status-im.ui.components.list.views :as list]
|
||||
[status-im.utils.utils :as utils]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[status-im.ui.components.icons.vector-icons :as icons]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.large-toolbar.view :as large-toolbar]
|
||||
|
@ -145,8 +143,6 @@
|
|||
list-ref)]
|
||||
[react/view
|
||||
{:style
|
||||
(merge {:flex 1}
|
||||
(when platform/ios?
|
||||
{:margin-bottom tabs.styles/tabs-diff}))}
|
||||
(merge {:flex 1})}
|
||||
(:minimized-toolbar generated-view)
|
||||
(:content-with-header generated-view)]))))
|
||||
|
|
|
@ -12,7 +12,6 @@
|
|||
[status-im.ui.components.list.views :as list.views]
|
||||
[status-im.ui.components.qr-code-viewer.views :as qr-code-viewer]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[status-im.ui.components.toolbar.view :as toolbar]
|
||||
[status-im.ui.screens.chat.photos :as photos]
|
||||
[status-im.ui.screens.profile.components.views :as profile.components]
|
||||
|
@ -210,17 +209,15 @@
|
|||
anim-opacity]))
|
||||
|
||||
(defn content-with-header [list-ref scroll-y]
|
||||
(let [{:keys [public-key
|
||||
preferred-name
|
||||
(let [{:keys [preferred-name
|
||||
mnemonic
|
||||
keycard-pairing
|
||||
address
|
||||
notifications-enabled?]
|
||||
:as multiaccount} @(re-frame/subscribe [:multiaccount])
|
||||
:as multiaccount} @(re-frame/subscribe [:multiaccount])
|
||||
active-contacts-count @(re-frame/subscribe [:contacts/active-count])
|
||||
tribute-to-talk @(re-frame/subscribe [:tribute-to-talk/profile])
|
||||
registrar @(re-frame/subscribe [:ens.stateofus/registrar])
|
||||
photo-added? @(re-frame/subscribe [:profile/photo-added?])]
|
||||
tribute-to-talk @(re-frame/subscribe [:tribute-to-talk/profile])
|
||||
registrar @(re-frame/subscribe [:ens.stateofus/registrar])
|
||||
photo-added? @(re-frame/subscribe [:profile/photo-added?])]
|
||||
[large-toolbar/flat-list-with-header-handler
|
||||
(header multiaccount photo-added?)
|
||||
(flat-list-content
|
||||
|
@ -231,15 +228,11 @@
|
|||
scroll-y]))
|
||||
|
||||
(defn my-profile []
|
||||
(let [list-ref (reagent/atom nil)
|
||||
(let [list-ref (reagent/atom nil)
|
||||
anim-opacity (animation/create-value 0)
|
||||
scroll-y (animation/create-value 0)]
|
||||
scroll-y (animation/create-value 0)]
|
||||
(large-toolbar/add-listener anim-opacity scroll-y)
|
||||
(fn []
|
||||
[react/view
|
||||
{:style
|
||||
(merge {:flex 1}
|
||||
(when platform/ios?
|
||||
{:margin-bottom tabs.styles/tabs-diff}))}
|
||||
[react/view {:style {:flex 1}}
|
||||
[minimized-toolbar-handler anim-opacity]
|
||||
[content-with-header list-ref scroll-y]])))
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
(ns status-im.ui.screens.progress.styles
|
||||
(:require [status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.toolbar.styles :as toolbar.styles]))
|
||||
(:require [status-im.ui.components.colors :as colors]))
|
||||
|
||||
(def container
|
||||
{:flex 1
|
||||
|
|
|
@ -44,15 +44,15 @@
|
|||
{:keys [height width]} [:dimensions/window]
|
||||
camera-flashlight [:wallet.send/camera-flashlight]
|
||||
opts [:get-screen-params]]
|
||||
[react/view {:style {:flex 1 :background-color colors/black}}
|
||||
[react/safe-area-view {:style {:flex 1
|
||||
:background-color colors/black}}
|
||||
[topbar camera-flashlight opts]
|
||||
[react/with-activity-indicator
|
||||
{}
|
||||
[camera/camera
|
||||
{:style {:flex 1}
|
||||
;:torchMode (camera/set-torch camera-flashlight)
|
||||
:captureAudio false
|
||||
:onBarCodeRead #(when-not @read-once?
|
||||
(reset! read-once? true)
|
||||
(on-barcode-read opts %))}]]
|
||||
[viewfinder (int (* 2 (/ (min height width) 3)))]]))
|
||||
[viewfinder (int (* 2 (/ (min height width) 3)))]]))
|
||||
|
|
|
@ -1,30 +0,0 @@
|
|||
(ns status-im.ui.screens.routing.back-actions)
|
||||
|
||||
(def back-actions {:chat :default
|
||||
:login :default
|
||||
:recover-multiaccount-enter-phrase :default
|
||||
:create-multiaccount-generate-key :default
|
||||
:new-chat :default
|
||||
:new-public-chat :default
|
||||
:wallet-account :default
|
||||
:add-new-account :default
|
||||
:add-new-account-pin :default
|
||||
:about-app :default
|
||||
:help-center :default
|
||||
:glossary :default
|
||||
:advanced-settings :default
|
||||
:sync-settings :default
|
||||
:mobile-network-settings :default
|
||||
:offline-messaging-settings :default
|
||||
:edit-mailserver :default
|
||||
:installations :default
|
||||
:privacy-and-security :default
|
||||
:dapps-permissions :default
|
||||
:contacts-list :default
|
||||
:blocked-users-list :default
|
||||
:ens-main :default
|
||||
:ens-register :default
|
||||
:wallet-settings-assets :default
|
||||
:wallet-add-custom-token :default
|
||||
:currency-settings :default
|
||||
:backup-seed :default})
|
|
@ -1,7 +1,14 @@
|
|||
(ns status-im.ui.screens.routing.browser-stack)
|
||||
(ns status-im.ui.screens.routing.browser-stack
|
||||
(:require [status-im.ui.screens.routing.core :as navigation]
|
||||
[status-im.ui.screens.browser.open-dapp.views :as open-dapp]
|
||||
[status-im.ui.screens.browser.views :as browser]))
|
||||
|
||||
(def browser-stack
|
||||
{:name :browser-stack
|
||||
:screens [:open-dapp
|
||||
:browser]
|
||||
:config {:initialRouteName :open-dapp}})
|
||||
(defonce stack (navigation/create-stack))
|
||||
|
||||
(defn browser-stack []
|
||||
[stack {:initial-route-name :open-dapp
|
||||
:header-mode :none}
|
||||
[{:name :open-dapp
|
||||
:component open-dapp/open-dapp}
|
||||
{:name :browser
|
||||
:component browser/browser}]])
|
||||
|
|
|
@ -1,15 +1,37 @@
|
|||
(ns status-im.ui.screens.routing.chat-stack)
|
||||
(ns status-im.ui.screens.routing.chat-stack
|
||||
(:require [status-im.ui.screens.routing.core :as navigation]
|
||||
[status-im.ui.screens.home.views :as home]
|
||||
[status-im.ui.screens.chat.views :as chat]
|
||||
[status-im.ui.screens.profile.contact.views :as profile.contact]
|
||||
[status-im.ui.screens.group.views :as group]
|
||||
[status-im.ui.screens.profile.group-chat.views :as profile.group-chat]
|
||||
[status-im.chat.models.loading :as chat.loading]
|
||||
[status-im.ui.screens.group.events :as group.events]
|
||||
[status-im.ui.screens.stickers.views :as stickers]))
|
||||
|
||||
(def chat-stack
|
||||
{:name :chat-stack
|
||||
:screens [:home
|
||||
:chat
|
||||
:profile
|
||||
:take-picture
|
||||
:new-group
|
||||
:add-participants-toggle-list
|
||||
:contact-toggle-list
|
||||
:group-chat-profile
|
||||
:stickers
|
||||
:stickers-pack]
|
||||
:config {:initialRouteName :home}})
|
||||
(defonce stack (navigation/create-stack))
|
||||
|
||||
(defn chat-stack []
|
||||
[stack {:initial-route-name :home
|
||||
:header-mode :none}
|
||||
[{:name :home
|
||||
:on-focus [::chat.loading/offload-all-messages]
|
||||
:component home/home}
|
||||
{:name :chat
|
||||
:on-focus [::chat.loading/load-messages]
|
||||
:component chat/chat}
|
||||
{:name :profile
|
||||
:component profile.contact/profile}
|
||||
{:name :new-group
|
||||
:component group/new-group}
|
||||
{:name :add-participants-toggle-list
|
||||
:on-focus [::group.events/add-participants-toggle-list]
|
||||
:component group/add-participants-toggle-list}
|
||||
{:name :contact-toggle-list
|
||||
:component group/contact-toggle-list}
|
||||
{:name :group-chat-profile
|
||||
:component profile.group-chat/group-chat-profile}
|
||||
{:name :stickers
|
||||
:component stickers/packs}
|
||||
{:name :stickers-pack
|
||||
:component stickers/pack}]])
|
||||
|
|
|
@ -1,247 +1,131 @@
|
|||
(ns status-im.ui.screens.routing.core
|
||||
(:require
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.screens.routing.back-actions :as back-actions]
|
||||
[status-im.ui.components.styles :as common-styles]
|
||||
[status-im.utils.navigation :as navigation]
|
||||
[cljs-react-navigation.reagent :as nav-reagent]
|
||||
[re-frame.core :as re-frame]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.core :as utils]
|
||||
[status-im.ui.screens.routing.screens :as screens]
|
||||
[status-im.ui.screens.routing.intro-login-stack :as intro-login-stack]
|
||||
[status-im.ui.screens.routing.chat-stack :as chat-stack]
|
||||
[status-im.ui.screens.routing.wallet-stack :as wallet-stack]
|
||||
[status-im.ui.screens.routing.profile-stack :as profile-stack]
|
||||
[status-im.ui.screens.routing.browser-stack :as browser-stack]
|
||||
[status-im.ui.screens.routing.modals :as modals]
|
||||
[status-im.ui.components.tabbar.core :as tabbar]
|
||||
[status-im.ui.components.status-bar.view :as status-bar]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[oops.core :refer [ocall oget]]
|
||||
[status-im.react-native.js-dependencies :as js-dependencies]))
|
||||
|
||||
(defonce view-id (reagent.core/atom nil))
|
||||
(defonce back-button-listener (atom nil))
|
||||
(defonce native js-dependencies/react-navigation-native)
|
||||
(defonce stack js-dependencies/react-navigation-stack)
|
||||
(defonce bottom-tabs js-dependencies/react-navigation-bottom-tabs)
|
||||
|
||||
(defn navigation-events [current-view-id modal? screen-focused?]
|
||||
[:> navigation/navigation-events
|
||||
{:on-will-focus
|
||||
(fn [payload]
|
||||
(reset! screen-focused? true)
|
||||
(when (not= @view-id current-view-id)
|
||||
(reset! view-id current-view-id))
|
||||
(log/debug :on-will-focus current-view-id)
|
||||
(when modal?
|
||||
(status-bar/set-status-bar current-view-id))
|
||||
(re-frame/dispatch [:screens/on-will-focus current-view-id]))
|
||||
:on-did-focus
|
||||
(def navigation-container (reagent/adapt-react-class
|
||||
(oget native "NavigationContainer")))
|
||||
|
||||
(def use-focus-effect (oget native "useFocusEffect"))
|
||||
(def use-callback (oget js-dependencies/react "useCallback"))
|
||||
|
||||
(def add-back-handler-listener (oget js-dependencies/back-handler "addEventListener"))
|
||||
(def remove-back-handler-listener (oget js-dependencies/back-handler "removeEventListener"))
|
||||
|
||||
(def transition-presets (oget stack "TransitionPresets"))
|
||||
|
||||
(def modal-presentation-ios (merge (js->clj (oget transition-presets "ModalPresentationIOS"))
|
||||
{:gestureEnabled true
|
||||
:cardOverlayEnabled true}))
|
||||
|
||||
;; TODO(Ferossgp): Unify with topbar back icon. Maybe dispatch the same event and move the all logic inside the event.
|
||||
(defn handle-on-screen-focus
|
||||
[{:keys [back-handler on-focus name]}]
|
||||
(use-focus-effect
|
||||
(use-callback
|
||||
(fn []
|
||||
(when @back-button-listener (.remove @back-button-listener))
|
||||
(reset!
|
||||
back-button-listener
|
||||
(.addEventListener
|
||||
js-dependencies/back-handler
|
||||
"hardwareBackPress"
|
||||
#(not (get back-actions/back-actions current-view-id))))
|
||||
(when-not modal?
|
||||
(status-bar/set-status-bar current-view-id)))
|
||||
:on-will-blur
|
||||
(fn [payload]
|
||||
(reset! screen-focused? false)
|
||||
(log/debug :on-will-blur current-view-id)
|
||||
;; Reset currently mounted text inputs to their default values
|
||||
;; on navigating away; this is a privacy measure
|
||||
(doseq [[text-input default-value] @react/text-input-refs]
|
||||
(.setNativeProps text-input (clj->js {:text default-value}))))}])
|
||||
(log/debug :on-screen-focus name)
|
||||
(let [on-back-press (fn []
|
||||
(when (and back-handler
|
||||
(not= back-handler :noop))
|
||||
(re-frame/dispatch back-handler))
|
||||
(boolean back-handler))]
|
||||
(when on-focus (re-frame/dispatch on-focus))
|
||||
(add-back-handler-listener "hardwareBackPress" on-back-press)
|
||||
(fn []
|
||||
(remove-back-handler-listener "hardwareBackPress" on-back-press))))
|
||||
#js [])))
|
||||
|
||||
(defn wrap
|
||||
"Wraps screen with main view and adds navigation-events component"
|
||||
[view-id component]
|
||||
(fn [args]
|
||||
(let [main-view (react/create-main-screen-view view-id)
|
||||
;; params passed to :navigate-to
|
||||
params (get-in args [:navigation :state :params])
|
||||
screen-focused? (reagent.core/atom true)]
|
||||
(if platform/ios?
|
||||
[main-view (assoc common-styles/flex
|
||||
:margin-bottom
|
||||
(cond
|
||||
;; there is no need to show bottom nav bar on
|
||||
;; `intro-login-stack` screens
|
||||
(contains?
|
||||
intro-login-stack/all-screens
|
||||
view-id)
|
||||
0
|
||||
(defn wrapped-screen-style [{:keys [insets]} insets-obj]
|
||||
(merge
|
||||
{:background-color :white
|
||||
:flex 1}
|
||||
(when (get insets :bottom)
|
||||
{:padding-bottom (oget insets-obj "bottom")})
|
||||
(when (get insets :top true)
|
||||
{:padding-top (oget insets-obj "top")})))
|
||||
|
||||
;; :wallet-onboarding-setup is the only screen
|
||||
;; except main tabs which requires maximised
|
||||
;; bottom nav bar, that's why it requires an extra
|
||||
;; bottom margin, otherwise bottom nav bar will
|
||||
;; partially cover the screen
|
||||
(contains?
|
||||
#{:wallet-onboarding-setup}
|
||||
view-id)
|
||||
tabs.styles/tabs-height
|
||||
(defn presentation-type [{:keys [transition] :as opts}]
|
||||
(if (and platform/ios? (= transition :presentation-ios))
|
||||
(-> opts
|
||||
(update :options merge modal-presentation-ios)
|
||||
(assoc-in [:insets :top] false))
|
||||
opts))
|
||||
|
||||
:else
|
||||
tabs.styles/minimized-tabs-height))
|
||||
[component params screen-focused?]
|
||||
[navigation-events view-id false screen-focused?]]
|
||||
(defn wrap-screen [{:keys [component] :as options}]
|
||||
(assoc options :component
|
||||
(fn [props]
|
||||
(handle-on-screen-focus options)
|
||||
(let [props' (js->clj props :keywordize-keys true)
|
||||
focused? (oget props "navigation" "isFocused")]
|
||||
(reagent/as-element
|
||||
[react/safe-area-consumer
|
||||
(fn [insets]
|
||||
(reagent/as-element
|
||||
[react/view {:style (wrapped-screen-style options insets)}
|
||||
[component props' (focused?)]]))])))))
|
||||
|
||||
[main-view common-styles/flex
|
||||
[component params screen-focused?]
|
||||
[navigation-events view-id false screen-focused?]]))))
|
||||
(defn- get-screen [navigator]
|
||||
(let [screen (reagent/adapt-react-class (oget navigator "Screen"))]
|
||||
(fn [props]
|
||||
[screen (-> props presentation-type wrap-screen)])))
|
||||
|
||||
(defn wrap-modal [modal-view component]
|
||||
"Wraps modal screen with necessary styling and adds :on-request-close handler
|
||||
on Android"
|
||||
(fn [args]
|
||||
(let [params (get-in args [:navigation :state :params])
|
||||
active? (reagent.core/atom true)]
|
||||
[react/main-screen-modal-view modal-view
|
||||
[component params active?]
|
||||
[navigation-events modal-view true active?]])))
|
||||
(defn- get-navigator [nav-object]
|
||||
(let [navigator (reagent/adapt-react-class (oget nav-object "Navigator"))
|
||||
screen (get-screen nav-object)]
|
||||
(fn [props children]
|
||||
(into [navigator props]
|
||||
(mapv screen children)))))
|
||||
|
||||
(defn prepare-config [config]
|
||||
(-> config
|
||||
(utils/update-if-present :initialRouteName name)
|
||||
(utils/update-if-present :mode name)))
|
||||
(defn create-stack []
|
||||
(let [nav-obj (ocall stack "createStackNavigator")]
|
||||
(get-navigator nav-obj)))
|
||||
|
||||
(defn new-get-state-for-action [default-get-state-for-action]
|
||||
(fn [action state]
|
||||
(let [event (get back-actions/back-actions @view-id)]
|
||||
(when (and (= (.-type action) (.-BACK navigation/navigation-actions)) event (not= :default event))
|
||||
(re-frame/dispatch [event]))
|
||||
(default-get-state-for-action action state))))
|
||||
(defn create-bottom-tabs []
|
||||
(let [nav-obj (ocall bottom-tabs "createBottomTabNavigator")]
|
||||
(get-navigator nav-obj)))
|
||||
|
||||
(defn stack-navigator [routes config]
|
||||
(let [res (nav-reagent/stack-navigator
|
||||
routes
|
||||
(merge {:headerMode "none"
|
||||
:cardStyle {:backgroundColor :white}
|
||||
#_:transitionConfig
|
||||
#_(fn []
|
||||
#js {:transitionSpec #js{:duration 10}})
|
||||
:onTransitionStart (fn [n]
|
||||
(let [idx (.. n
|
||||
-navigation
|
||||
-state
|
||||
-index)
|
||||
routes (.. n
|
||||
-navigation
|
||||
-state
|
||||
-routes)]
|
||||
(when (and (array? routes) (int? idx))
|
||||
(let [route (aget routes idx)
|
||||
route-name (keyword (.-routeName route))]
|
||||
(tabbar/minimize-bar route-name)))))}
|
||||
(prepare-config config)))]
|
||||
(set! (-> res .-router .-getStateForAction) (new-get-state-for-action (.-getStateForAction (.-router res))))
|
||||
res))
|
||||
(def common-actions (oget native "CommonActions"))
|
||||
(def stack-actions (oget native "StackActions"))
|
||||
|
||||
(defn twopane-navigator [routes config]
|
||||
(navigation/twopane-navigator
|
||||
routes
|
||||
(merge {:headerMode "none"
|
||||
:cardStyle {:backgroundColor :white}
|
||||
:onTransitionStart (fn [n]
|
||||
(let [idx (.. n
|
||||
-navigation
|
||||
-state
|
||||
-index)
|
||||
routes (.. n
|
||||
-navigation
|
||||
-state
|
||||
-routes)]
|
||||
(when (and (array? routes) (int? idx))
|
||||
(let [route (aget routes idx)
|
||||
route-name (keyword (.-routeName route))]
|
||||
(tabbar/minimize-bar route-name)))))}
|
||||
(prepare-config config))))
|
||||
(defonce navigator-ref (reagent/atom nil))
|
||||
|
||||
(defn switch-navigator [routes config]
|
||||
(nav-reagent/switch-navigator
|
||||
routes
|
||||
(prepare-config config)))
|
||||
(defn set-navigator-ref [ref]
|
||||
(reset! navigator-ref ref))
|
||||
|
||||
(defn tab-navigator [routes config]
|
||||
(nav-reagent/tab-navigator
|
||||
routes
|
||||
(assoc (prepare-config config) :lazy false)))
|
||||
(defn can-be-called? []
|
||||
(boolean @navigator-ref))
|
||||
|
||||
(declare stack-screens)
|
||||
(defn navigate-to [route params]
|
||||
(when (can-be-called?)
|
||||
(ocall @navigator-ref "dispatch"
|
||||
(ocall common-actions "navigate"
|
||||
#js {:name (name route)
|
||||
:params (clj->js params)}))))
|
||||
|
||||
(defn build-screen [navigator screen]
|
||||
"Builds screen from specified configuration. Currently screen can be
|
||||
- keyword, which points to some specific route
|
||||
- vector of [:modal :screen-key] type when screen should be wrapped as modal
|
||||
- map with `name`, `screens`, `config` keys, where `screens` is a vector
|
||||
of children and `config` is `stack-navigator` configuration"
|
||||
(let [[screen-name screen-config]
|
||||
(cond (keyword? screen)
|
||||
[screen (screens/get-screen screen)]
|
||||
(map? screen)
|
||||
[(:name screen) screen]
|
||||
:else screen)]
|
||||
(let [res (cond
|
||||
(map? screen-config)
|
||||
(let [{:keys [screens config]} screen-config]
|
||||
(navigator
|
||||
(stack-screens navigator screens)
|
||||
config))
|
||||
(defn navigate-reset [state]
|
||||
(when (can-be-called?)
|
||||
(ocall @navigator-ref "dispatch"
|
||||
(ocall common-actions "reset"
|
||||
(clj->js state)))))
|
||||
|
||||
(vector? screen-config)
|
||||
(let [[_ screen] screen-config]
|
||||
(nav-reagent/stack-screen
|
||||
(wrap-modal screen-name screen)))
|
||||
(defn navigate-back []
|
||||
(when (can-be-called?)
|
||||
(ocall @navigator-ref "dispatch"
|
||||
(ocall common-actions "goBack"))))
|
||||
|
||||
:else
|
||||
(nav-reagent/stack-screen (wrap screen-name screen-config)))]
|
||||
[screen-name (cond-> {:screen res}
|
||||
(not (get back-actions/back-actions screen-name))
|
||||
(assoc :navigationOptions {:gesturesEnabled false})
|
||||
(:navigation screen-config)
|
||||
(assoc :navigationOptions
|
||||
(:navigation screen-config)))])))
|
||||
|
||||
(defn stack-screens [navigator screens-map]
|
||||
(->> screens-map
|
||||
(map (partial build-screen navigator))
|
||||
(into {})))
|
||||
|
||||
(defn wrap-tabbar
|
||||
[nav]
|
||||
[tabbar/tabbar nav view-id])
|
||||
|
||||
(defn app-container [navigator]
|
||||
(.createAppContainer js-dependencies/react-navigation navigator))
|
||||
|
||||
(defn get-main-component [view-id two-pane?]
|
||||
(log/debug :component view-id)
|
||||
(app-container
|
||||
(switch-navigator
|
||||
(into {}
|
||||
[(build-screen stack-navigator (intro-login-stack/login-stack view-id))
|
||||
(build-screen stack-navigator (intro-login-stack/intro-stack))
|
||||
[:tabs-and-modals
|
||||
{:screen
|
||||
(stack-navigator
|
||||
(merge
|
||||
{:tabs
|
||||
{:screen (tab-navigator
|
||||
(->> [(build-screen (if two-pane? twopane-navigator stack-navigator) chat-stack/chat-stack)
|
||||
(build-screen stack-navigator browser-stack/browser-stack)
|
||||
(build-screen stack-navigator wallet-stack/wallet-stack)
|
||||
(build-screen stack-navigator profile-stack/profile-stack)]
|
||||
(into {}))
|
||||
{:initialRouteName :chat-stack
|
||||
:tabBarComponent (reagent.core/reactify-component
|
||||
wrap-tabbar)})}}
|
||||
(stack-screens stack-navigator modals/modal-screens))
|
||||
{:mode :modal
|
||||
:initialRouteName :tabs
|
||||
:onTransitionStart (fn [])})}]])
|
||||
{:initialRouteName (if (= view-id :intro)
|
||||
:intro-stack
|
||||
:login-stack)})))
|
||||
(defn navigate-replace [route params]
|
||||
(when (can-be-called?)
|
||||
(ocall @navigator-ref "dispatch"
|
||||
(ocall stack-actions "replace"
|
||||
#js {:name (name route)
|
||||
:params (clj->js params)}))))
|
||||
|
|
|
@ -1,91 +1,112 @@
|
|||
(ns status-im.ui.screens.routing.intro-login-stack
|
||||
(:require [status-im.utils.config :as config]))
|
||||
(:require-macros [status-im.utils.views :as views])
|
||||
(:require [re-frame.core :as re-frame]
|
||||
[status-im.ui.screens.multiaccounts.login.views :as login]
|
||||
[status-im.ui.screens.progress.views :as progress]
|
||||
[status-im.ui.screens.multiaccounts.views :as multiaccounts]
|
||||
[status-im.ui.screens.intro.views :as intro]
|
||||
[status-im.ui.screens.keycard.onboarding.views :as keycard.onboarding]
|
||||
[status-im.ui.screens.keycard.recovery.views :as keycard.recovery]
|
||||
[status-im.ui.screens.keycard.views :as keycard]
|
||||
[status-im.ui.screens.hardwallet.authentication-method.views
|
||||
:as
|
||||
hardwallet.authentication]
|
||||
[status-im.ui.screens.routing.core :as navigation]))
|
||||
|
||||
(def all-screens
|
||||
#{:login
|
||||
:progress
|
||||
:create-multiaccount
|
||||
:create-multiaccount-generate-key
|
||||
:create-multiaccount-choose-key
|
||||
:create-multiaccount-select-key-storage
|
||||
:create-multiaccount-create-code
|
||||
:create-multiaccount-confirm-code
|
||||
:recover-multiaccount-enter-phrase
|
||||
:recover-multiaccount-select-storage
|
||||
:recover-multiaccount-enter-password
|
||||
:recover-multiaccount-confirm-password
|
||||
:recover-multiaccount-success
|
||||
:multiaccounts
|
||||
:intro
|
||||
:intro-wizard
|
||||
:hardwallet-authentication-method
|
||||
:keycard-pairing
|
||||
:keycard-blank
|
||||
:keycard-wrong
|
||||
:keycard-unpaired
|
||||
:keycard-login-pin
|
||||
:not-keycard
|
||||
:keycard-onboarding-intro
|
||||
:keycard-onboarding-puk-code
|
||||
:keycard-onboarding-pin
|
||||
:keycard-onboarding-recovery-phrase
|
||||
:keycard-onboarding-recovery-phrase-confirm-word1
|
||||
:keycard-onboarding-recovery-phrase-confirm-word2
|
||||
:keycard-recovery-intro
|
||||
:keycard-recovery-pair
|
||||
:keycard-recovery-success
|
||||
:keycard-recovery-no-key
|
||||
:keycard-recovery-pin})
|
||||
(defonce stack (navigation/create-stack))
|
||||
|
||||
(defn login-stack [view-id]
|
||||
{:name :login-stack
|
||||
:screens (cond-> [:login
|
||||
:multiaccounts
|
||||
:intro-wizard
|
||||
:progress
|
||||
:keycard-recovery-intro
|
||||
:create-multiaccount
|
||||
:create-multiaccount-generate-key
|
||||
:create-multiaccount-choose-key
|
||||
:create-multiaccount-select-key-storage
|
||||
:create-multiaccount-create-code
|
||||
:create-multiaccount-confirm-code
|
||||
:recover-multiaccount-enter-phrase
|
||||
:recover-multiaccount-select-storage
|
||||
:recover-multiaccount-enter-password
|
||||
:recover-multiaccount-confirm-password
|
||||
:recover-multiaccount-success]
|
||||
;; NOTE(Ferossgp): There is a point at init when we do not know if there are
|
||||
;; multiaccounts or no, and we show intro - we could show progress at this time
|
||||
;; for a better UX
|
||||
(views/defview intro-stack []
|
||||
(views/letsubs [multiaccounts [:multiaccounts/multiaccounts]
|
||||
loading [:multiaccounts/loading]]
|
||||
[stack {:header-mode :none}
|
||||
[(cond
|
||||
loading
|
||||
{:name :progress-start
|
||||
:component progress/progress}
|
||||
|
||||
config/hardwallet-enabled?
|
||||
(concat [:hardwallet-authentication-method
|
||||
:keycard-login-pin
|
||||
:keycard-blank
|
||||
:keycard-wrong
|
||||
:keycard-unpaired
|
||||
:not-keycard]))
|
||||
:config (if
|
||||
;; add view-id here if you'd like that view to be
|
||||
;; first view when app is started
|
||||
(#{:login :progress :multiaccounts :keycard-login-pin} view-id)
|
||||
{:initialRouteName view-id}
|
||||
{:initialRouteName :login})})
|
||||
(empty? multiaccounts)
|
||||
{:name :intro
|
||||
:component intro/intro}
|
||||
|
||||
(defn intro-stack []
|
||||
(-> (login-stack :intro)
|
||||
(update :screens conj
|
||||
:intro
|
||||
:intro-wizard
|
||||
:keycard-pairing
|
||||
:keycard-onboarding-intro
|
||||
:keycard-onboarding-puk-code
|
||||
:keycard-onboarding-pin
|
||||
:keycard-onboarding-recovery-phrase
|
||||
:keycard-onboarding-recovery-phrase-confirm-word1
|
||||
:keycard-onboarding-recovery-phrase-confirm-word2
|
||||
:keycard-recovery-intro
|
||||
:keycard-recovery-pair
|
||||
:keycard-recovery-success
|
||||
:keycard-recovery-no-key
|
||||
:keycard-recovery-pin)
|
||||
(assoc :name :intro-stack)
|
||||
(assoc :config {:initialRouteName :intro})))
|
||||
:else
|
||||
{:name :multiaccounts
|
||||
:component multiaccounts/multiaccounts})
|
||||
{:name :progress
|
||||
:component progress/progress}
|
||||
{:name :login
|
||||
:component login/login}
|
||||
{:name :create-multiaccount-generate-key
|
||||
:options {:stackPresentation "modal"}
|
||||
:component intro/wizard-generate-key}
|
||||
{:name :create-multiaccount-choose-key
|
||||
:back-handler :noop
|
||||
:component intro/wizard-choose-key}
|
||||
{:name :create-multiaccount-select-key-storage
|
||||
:back-handler :noop
|
||||
:component intro/wizard-select-key-storage}
|
||||
{:name :create-multiaccount-create-code
|
||||
:back-handler :noop
|
||||
:component intro/wizard-create-code}
|
||||
{:name :create-multiaccount-confirm-code
|
||||
:back-handler :noop
|
||||
:component intro/wizard-confirm-code}
|
||||
{:name :recover-multiaccount-enter-phrase
|
||||
:component intro/wizard-enter-phrase}
|
||||
{:name :recover-multiaccount-select-storage
|
||||
:back-handler :noop
|
||||
:component intro/wizard-select-key-storage}
|
||||
{:name :recover-multiaccount-enter-password
|
||||
:back-handler :noop
|
||||
:component intro/wizard-create-code}
|
||||
{:name :recover-multiaccount-confirm-password
|
||||
:back-handler :noop
|
||||
:component intro/wizard-confirm-code}
|
||||
{:name :recover-multiaccount-success
|
||||
:back-handler :noop
|
||||
:component intro/wizard-recovery-success}
|
||||
{:name :keycard-onboarding-intro
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/intro}
|
||||
{:name :keycard-onboarding-puk-code
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/puk-code}
|
||||
{:name :keycard-onboarding-pin
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/pin}
|
||||
{:name :keycard-onboarding-recovery-phrase
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/recovery-phrase}
|
||||
{:name :keycard-onboarding-recovery-phrase-confirm-word1
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/recovery-phrase-confirm-word}
|
||||
{:name :keycard-onboarding-recovery-phrase-confirm-word2
|
||||
:back-handler :noop
|
||||
:component keycard.onboarding/recovery-phrase-confirm-word}
|
||||
{:name :keycard-recovery-intro
|
||||
:back-handler :noop
|
||||
:component keycard.recovery/intro}
|
||||
{:name :keycard-recovery-pair
|
||||
:back-handler :noop
|
||||
:component keycard.recovery/pair}
|
||||
{:name :keycard-recovery-success
|
||||
:back-handler :noop
|
||||
:component keycard.recovery/success}
|
||||
{:name :keycard-recovery-no-key
|
||||
:component keycard.recovery/no-key}
|
||||
{:name :keycard-recovery-pin
|
||||
:component keycard.recovery/pin}
|
||||
{:name :hardwallet-authentication-method
|
||||
:component hardwallet.authentication/hardwallet-authentication-method}
|
||||
{:name :keycard-login-pin
|
||||
:component keycard/login-pin}
|
||||
{:name :keycard-blank
|
||||
:component keycard/blank}
|
||||
{:name :keycard-wrong
|
||||
:component keycard/wrong}
|
||||
{:name :keycard-unpaired
|
||||
:component keycard/unpaired}
|
||||
{:name :not-keycard
|
||||
:component keycard/not-keycard}]]))
|
||||
|
|
|
@ -0,0 +1,78 @@
|
|||
(ns status-im.ui.screens.routing.main
|
||||
(:require-macros [status-im.utils.views :as views])
|
||||
(:require [reagent.core :as reagent]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ui.screens.profile.tribute-to-talk.views :as tr-to-talk]
|
||||
[status-im.ui.screens.add-new.new-public-chat.view :as new-public-chat]
|
||||
[status-im.ui.screens.wallet.components.views :as wallet.components]
|
||||
[status-im.ui.screens.qr-scanner.views :as qr-scanner]
|
||||
[status-im.ui.screens.stickers.views :as stickers]
|
||||
[status-im.ui.screens.home.views :as home]
|
||||
[status-im.ui.screens.add-new.new-chat.views :as new-chat]
|
||||
[status-im.ui.screens.add-new.new-chat.events :as new-chat.events]
|
||||
[status-im.ui.screens.progress.views :as progress]
|
||||
[status-im.ui.screens.routing.intro-login-stack :as intro-login-stack]
|
||||
[status-im.ui.screens.routing.chat-stack :as chat-stack]
|
||||
[status-im.ui.screens.routing.wallet-stack :as wallet-stack]
|
||||
[status-im.ui.screens.wallet.events :as wallet.events]
|
||||
[status-im.ui.screens.routing.profile-stack :as profile-stack]
|
||||
[status-im.ui.screens.routing.browser-stack :as browser-stack]
|
||||
[status-im.chat.models.loading :as chat.loading]
|
||||
[status-im.ui.components.tabbar.core :as tabbar]
|
||||
[status-im.ui.screens.routing.core :as navigation]))
|
||||
|
||||
(defonce main-stack (navigation/create-stack))
|
||||
(defonce modals-stack (navigation/create-stack))
|
||||
(defonce bottom-tabs (navigation/create-bottom-tabs))
|
||||
|
||||
;; TODO(Ferossgp): Add two-pane navigator on chat-stack
|
||||
(defn tabs []
|
||||
[bottom-tabs {:initial-route-name :chat-stack
|
||||
:lazy false
|
||||
:header-mode :none
|
||||
:tab-bar tabbar/tabbar}
|
||||
[{:name :chat-stack
|
||||
:insets {:top false}
|
||||
:component chat-stack/chat-stack}
|
||||
{:name :browser-stack
|
||||
:insets {:top false}
|
||||
:component browser-stack/browser-stack}
|
||||
{:name :wallet-stack
|
||||
:on-focus [::wallet.events/wallet-stack]
|
||||
:insets {:top false}
|
||||
:component wallet-stack/wallet-stack}
|
||||
{:name :profile-stack
|
||||
:insets {:top false}
|
||||
:component profile-stack/profile-stack}]])
|
||||
|
||||
(views/defview get-main-component [_]
|
||||
(views/letsubs [logged-in? [:multiaccount/logged-in?]]
|
||||
[main-stack {:header-mode :none
|
||||
:mode :modal}
|
||||
[(if logged-in?
|
||||
{:name :tabs
|
||||
:insets {:top false}
|
||||
:component tabs}
|
||||
{:name :intro-stack
|
||||
:insets {:top false
|
||||
:bottom true}
|
||||
:component intro-login-stack/intro-stack})
|
||||
{:name :stickers-pack-modal
|
||||
:component stickers/pack-modal}
|
||||
{:name :tribute-learn-more
|
||||
:component tr-to-talk/learn-more}
|
||||
{:name :welcome
|
||||
:back-handler :noop
|
||||
:component home/welcome}
|
||||
{:name :new-chat
|
||||
:on-focus [::new-chat.events/new-chat-focus]
|
||||
:transition :presentation-ios
|
||||
:component new-chat/new-chat}
|
||||
{:name :new-public-chat
|
||||
:transition :presentation-ios
|
||||
:component new-public-chat/new-public-chat}
|
||||
{:name :contact-code
|
||||
:component wallet.components/contact-code}
|
||||
{:name :qr-scanner
|
||||
:insets {:top false}
|
||||
:component qr-scanner/qr-scanner}]]))
|
|
@ -1,13 +0,0 @@
|
|||
(ns status-im.ui.screens.routing.modals)
|
||||
|
||||
(def modal-screens
|
||||
[:stickers-pack-modal
|
||||
:tribute-learn-more
|
||||
:selection-modal-screen
|
||||
:wallet-transactions-filter
|
||||
:welcome
|
||||
:keycard-welcome
|
||||
:new-chat
|
||||
:new-public-chat
|
||||
:contact-code
|
||||
:qr-scanner])
|
|
@ -1,46 +1,122 @@
|
|||
(ns status-im.ui.screens.routing.profile-stack
|
||||
(:require [status-im.utils.config :as config]))
|
||||
(:require [status-im.utils.config :as config]
|
||||
[status-im.ui.screens.profile.user.views :as profile.user]
|
||||
[status-im.ui.screens.ens.views :as ens]
|
||||
[status-im.ui.screens.contacts-list.views :as contacts-list]
|
||||
[status-im.ui.screens.profile.photo-capture.views :as photo-capture]
|
||||
[status-im.ui.screens.bootnodes-settings.edit-bootnode.views
|
||||
:as
|
||||
edit-bootnode]
|
||||
[status-im.ui.screens.bootnodes-settings.views :as bootnodes-settings]
|
||||
[status-im.ui.screens.pairing.views :as pairing]
|
||||
[status-im.ui.screens.offline-messaging-settings.edit-mailserver.views
|
||||
:as
|
||||
edit-mailserver]
|
||||
[status-im.ui.screens.offline-messaging-settings.views
|
||||
:as
|
||||
offline-messaging-settings]
|
||||
[status-im.ui.screens.dapps-permissions.views :as dapps-permissions]
|
||||
[status-im.ui.screens.privacy-and-security-settings.views :as privacy-and-security]
|
||||
[status-im.ui.screens.language-settings.views :as language-settings]
|
||||
[status-im.ui.screens.notifications-settings.views :as notifications-settings]
|
||||
[status-im.ui.screens.sync-settings.views :as sync-settings]
|
||||
[status-im.ui.screens.advanced-settings.views :as advanced-settings]
|
||||
[status-im.ui.screens.help-center.views :as help-center]
|
||||
[status-im.ui.screens.glossary.view :as glossary]
|
||||
[status-im.ui.screens.about-app.views :as about-app]
|
||||
[status-im.ui.screens.mobile-network-settings.view
|
||||
:as
|
||||
mobile-network-settings]
|
||||
[status-im.network.module :as network]
|
||||
[status-im.ui.screens.network-info.views :as network-info]
|
||||
[status-im.ui.screens.log-level-settings.views :as log-level-settings]
|
||||
[status-im.ui.screens.fleet-settings.views :as fleet-settings]
|
||||
[status-im.ui.screens.profile.seed.views :as profile.seed]
|
||||
[status-im.ui.screens.profile.tribute-to-talk.views :as tr-to-talk]
|
||||
[status-im.ui.screens.hardwallet.pin.views :as hardwallet.pin]
|
||||
[status-im.ui.screens.hardwallet.settings.views :as hardwallet.settings]
|
||||
[status-im.ui.screens.routing.core :as navigation]))
|
||||
|
||||
(def profile-stack
|
||||
{:name :profile-stack
|
||||
:screens (cond-> [:my-profile
|
||||
:contacts-list
|
||||
:ens-main
|
||||
:ens-search
|
||||
:ens-checkout
|
||||
:ens-confirmation
|
||||
:ens-terms
|
||||
:ens-name-details
|
||||
:blocked-users-list
|
||||
:profile-photo-capture
|
||||
:bootnodes-settings
|
||||
:installations
|
||||
:edit-bootnode
|
||||
:offline-messaging-settings
|
||||
:edit-mailserver
|
||||
:dapps-permissions
|
||||
:privacy-and-security
|
||||
:language-settings
|
||||
:notifications-settings
|
||||
:sync-settings
|
||||
:advanced-settings
|
||||
:help-center
|
||||
:glossary
|
||||
:about-app
|
||||
:manage-dapps-permissions
|
||||
:network-settings
|
||||
:network-details
|
||||
:network-info
|
||||
:edit-network
|
||||
:log-level-settings
|
||||
:fleet-settings
|
||||
:mobile-network-settings
|
||||
:backup-seed
|
||||
:tribute-to-talk
|
||||
:my-profile-ext-settings]
|
||||
(defonce stack (navigation/create-stack))
|
||||
|
||||
config/hardwallet-enabled?
|
||||
(concat [:keycard-settings
|
||||
:reset-card
|
||||
:enter-pin-settings]))
|
||||
:config {:initialRouteName :my-profile}})
|
||||
(defn profile-stack []
|
||||
[stack {:initial-route-name :my-profile
|
||||
:header-mode :none}
|
||||
[{:name :my-profile
|
||||
:component profile.user/my-profile}
|
||||
{:name :contacts-list
|
||||
:component contacts-list/contacts-list}
|
||||
{:name :ens-main
|
||||
:component ens/main}
|
||||
{:name :ens-search
|
||||
:component ens/search}
|
||||
{:name :ens-checkout
|
||||
:component ens/checkout}
|
||||
{:name :ens-confirmation
|
||||
:component ens/confirmation}
|
||||
{:name :ens-terms
|
||||
:component ens/terms}
|
||||
{:name :ens-name-details
|
||||
:component ens/name-details}
|
||||
{:name :blocked-users-list
|
||||
:component contacts-list/blocked-users-list}
|
||||
{:name :profile-photo-capture
|
||||
:component photo-capture/profile-photo-capture}
|
||||
{:name :bootnodes-settings
|
||||
:component bootnodes-settings/bootnodes-settings}
|
||||
{:name :installations
|
||||
:component pairing/installations}
|
||||
{:name :edit-bootnode
|
||||
:component edit-bootnode/edit-bootnode}
|
||||
{:name :offline-messaging-settings
|
||||
:component offline-messaging-settings/offline-messaging-settings}
|
||||
{:name :edit-mailserver
|
||||
:component edit-mailserver/edit-mailserver}
|
||||
{:name :dapps-permissions
|
||||
:component dapps-permissions/dapps-permissions}
|
||||
{:name :privacy-and-security
|
||||
:component privacy-and-security/privacy-and-security}
|
||||
{:name :language-settings
|
||||
:component language-settings/language-settings}
|
||||
{:name :notifications-settings
|
||||
:component notifications-settings/notifications-settings}
|
||||
{:name :sync-settings
|
||||
:component sync-settings/sync-settings}
|
||||
{:name :advanced-settings
|
||||
:component advanced-settings/advanced-settings}
|
||||
{:name :help-center
|
||||
:component help-center/help-center}
|
||||
{:name :glossary
|
||||
:component glossary/glossary}
|
||||
{:name :about-app
|
||||
:component about-app/about-app}
|
||||
{:name :manage-dapps-permissions
|
||||
:component dapps-permissions/manage}
|
||||
{:name :network-settings
|
||||
:component network/network-settings-view}
|
||||
{:name :network-details
|
||||
:component network/network-details-view}
|
||||
{:name :network-info
|
||||
:component network-info/network-info}
|
||||
{:name :edit-network
|
||||
:component network/edit-network-view}
|
||||
{:name :log-level-settings
|
||||
:component log-level-settings/log-level-settings}
|
||||
{:name :fleet-settings
|
||||
:component fleet-settings/fleet-settings}
|
||||
{:name :mobile-network-settings
|
||||
:component mobile-network-settings/mobile-network-settings}
|
||||
{:name :backup-seed
|
||||
:component profile.seed/backup-seed}
|
||||
{:name :tribute-to-talk
|
||||
:component tr-to-talk/tribute-to-talk}
|
||||
;; {:name:my-profile-ext-settings
|
||||
;; :component}
|
||||
|
||||
;; KEYCARD
|
||||
{:name :keycard-settings
|
||||
:component hardwallet.settings/keycard-settings}
|
||||
{:name :reset-card
|
||||
:component hardwallet.settings/reset-card}
|
||||
{:name :enter-pin-settings
|
||||
:component hardwallet.pin/enter-pin}]])
|
||||
|
|
|
@ -1,172 +0,0 @@
|
|||
(ns status-im.ui.screens.routing.screens
|
||||
(:require [status-im.ui.screens.about-app.views :as about-app]
|
||||
[status-im.ui.screens.multiaccounts.login.views :as login]
|
||||
[status-im.ui.screens.multiaccounts.views :as multiaccounts]
|
||||
[status-im.ui.screens.add-new.new-chat.views :as new-chat]
|
||||
[status-im.ui.screens.add-new.new-public-chat.view :as new-public-chat]
|
||||
[status-im.ui.screens.bootnodes-settings.edit-bootnode.views
|
||||
:as
|
||||
edit-bootnode]
|
||||
[status-im.ui.screens.bootnodes-settings.views :as bootnodes-settings]
|
||||
[status-im.ui.screens.browser.open-dapp.views :as open-dapp]
|
||||
[status-im.ui.screens.browser.views :as browser]
|
||||
[status-im.ui.screens.chat.views :as chat]
|
||||
[status-im.ui.screens.ens.views :as ens]
|
||||
[status-im.ui.screens.contacts-list.views :as contacts-list]
|
||||
[status-im.ui.screens.currency-settings.views :as currency-settings]
|
||||
[status-im.ui.screens.dapps-permissions.views :as dapps-permissions]
|
||||
[status-im.ui.screens.privacy-and-security-settings.views :as privacy-and-security]
|
||||
[status-im.ui.screens.language-settings.views :as language-settings]
|
||||
[status-im.ui.screens.notifications-settings.views :as notifications-settings]
|
||||
[status-im.ui.screens.sync-settings.views :as sync-settings]
|
||||
[status-im.ui.screens.advanced-settings.views :as advanced-settings]
|
||||
[status-im.ui.screens.fleet-settings.views :as fleet-settings]
|
||||
[status-im.ui.screens.group.views :as group]
|
||||
[status-im.ui.screens.hardwallet.authentication-method.views
|
||||
:as
|
||||
hardwallet.authentication]
|
||||
[status-im.ui.screens.hardwallet.pin.views :as hardwallet.pin]
|
||||
[status-im.ui.screens.hardwallet.settings.views :as hardwallet.settings]
|
||||
[status-im.ui.screens.keycard.onboarding.views :as keycard.onboarding]
|
||||
[status-im.ui.screens.keycard.recovery.views :as keycard.recovery]
|
||||
[status-im.ui.screens.keycard.views :as keycard]
|
||||
[status-im.ui.screens.help-center.views :as help-center]
|
||||
[status-im.ui.screens.glossary.view :as glossary]
|
||||
[status-im.ui.screens.home.views :as home]
|
||||
[status-im.ui.screens.intro.views :as intro]
|
||||
[status-im.ui.screens.log-level-settings.views :as log-level-settings]
|
||||
[status-im.ui.screens.mobile-network-settings.view
|
||||
:as
|
||||
mobile-network-settings]
|
||||
[status-im.network.module :as network]
|
||||
[status-im.ui.screens.offline-messaging-settings.edit-mailserver.views
|
||||
:as
|
||||
edit-mailserver]
|
||||
[status-im.ui.screens.offline-messaging-settings.views
|
||||
:as
|
||||
offline-messaging-settings]
|
||||
[status-im.ui.screens.pairing.views :as pairing]
|
||||
[status-im.ui.screens.profile.contact.views :as profile.contact]
|
||||
[status-im.ui.screens.profile.group-chat.views :as profile.group-chat]
|
||||
[status-im.ui.screens.profile.photo-capture.views :as photo-capture]
|
||||
[status-im.ui.screens.profile.seed.views :as profile.seed]
|
||||
[status-im.ui.screens.profile.tribute-to-talk.views :as tr-to-talk]
|
||||
[status-im.ui.screens.profile.user.views :as profile.user]
|
||||
[status-im.ui.screens.progress.views :as progress]
|
||||
[status-im.ui.screens.qr-scanner.views :as qr-scanner]
|
||||
[status-im.ui.screens.stickers.views :as stickers]
|
||||
[status-im.ui.screens.wallet.collectibles.views :as collectibles]
|
||||
[status-im.ui.screens.wallet.components.views :as wallet.components]
|
||||
[status-im.ui.screens.wallet.settings.views :as wallet-settings]
|
||||
[status-im.ui.screens.wallet.transactions.views :as wallet-transactions]
|
||||
[status-im.ui.screens.wallet.custom-tokens.views :as custom-tokens]
|
||||
[status-im.ui.screens.wallet.accounts.views :as wallet.accounts]
|
||||
[status-im.ui.screens.wallet.account.views :as wallet.account]
|
||||
[status-im.ui.screens.wallet.add-new.views :as add-account]
|
||||
[status-im.ui.screens.wallet.account-settings.views :as account-settings]
|
||||
[status-im.ui.screens.network-info.views :as network-info]))
|
||||
|
||||
(def all-screens
|
||||
{:login login/login
|
||||
:progress progress/progress
|
||||
:create-multiaccount-generate-key intro/wizard-generate-key
|
||||
:create-multiaccount-choose-key intro/wizard-choose-key
|
||||
:create-multiaccount-select-key-storage intro/wizard-select-key-storage
|
||||
:create-multiaccount-create-code intro/wizard-create-code
|
||||
:create-multiaccount-confirm-code intro/wizard-confirm-code
|
||||
:recover-multiaccount-enter-phrase intro/wizard-enter-phrase
|
||||
:recover-multiaccount-success intro/wizard-recovery-success
|
||||
:recover-multiaccount-select-storage intro/wizard-select-key-storage
|
||||
:recover-multiaccount-enter-password intro/wizard-create-code
|
||||
:recover-multiaccount-confirm-password intro/wizard-confirm-code
|
||||
:multiaccounts multiaccounts/multiaccounts
|
||||
:intro intro/intro
|
||||
:hardwallet-authentication-method hardwallet.authentication/hardwallet-authentication-method
|
||||
:enter-pin-settings hardwallet.pin/enter-pin
|
||||
:keycard-onboarding-intro keycard.onboarding/intro
|
||||
:keycard-onboarding-puk-code keycard.onboarding/puk-code
|
||||
:keycard-onboarding-pin keycard.onboarding/pin
|
||||
:keycard-onboarding-recovery-phrase keycard.onboarding/recovery-phrase
|
||||
:keycard-onboarding-recovery-phrase-confirm-word1 keycard.onboarding/recovery-phrase-confirm-word
|
||||
:keycard-onboarding-recovery-phrase-confirm-word2 keycard.onboarding/recovery-phrase-confirm-word
|
||||
:keycard-recovery-intro keycard.recovery/intro
|
||||
:keycard-recovery-pair keycard.recovery/pair
|
||||
:keycard-recovery-success keycard.recovery/success
|
||||
:keycard-recovery-no-key keycard.recovery/no-key
|
||||
:keycard-recovery-pin keycard.recovery/pin
|
||||
:keycard-blank keycard/blank
|
||||
:keycard-wrong keycard/wrong
|
||||
:keycard-unpaired keycard/unpaired
|
||||
:keycard-login-pin keycard/login-pin
|
||||
:not-keycard keycard/not-keycard
|
||||
:home home/home
|
||||
:chat chat/chat
|
||||
:profile profile.contact/profile
|
||||
:new-chat [:modal new-chat/new-chat]
|
||||
:qr-scanner [:modal qr-scanner/qr-scanner]
|
||||
:new-group group/new-group
|
||||
:add-participants-toggle-list group/add-participants-toggle-list
|
||||
:contact-toggle-list group/contact-toggle-list
|
||||
:group-chat-profile profile.group-chat/group-chat-profile
|
||||
:new-public-chat [:modal new-public-chat/new-public-chat]
|
||||
:open-dapp open-dapp/open-dapp
|
||||
:browser browser/browser
|
||||
:stickers stickers/packs
|
||||
:stickers-pack stickers/pack
|
||||
:stickers-pack-modal [:modal stickers/pack-modal]
|
||||
:tribute-learn-more [:modal tr-to-talk/learn-more]
|
||||
:wallet wallet.accounts/accounts-overview
|
||||
:wallet-account wallet.account/account
|
||||
:collectibles-list collectibles/collectibles-list
|
||||
:contact-code [:modal wallet.components/contact-code]
|
||||
:wallet-transaction-details wallet-transactions/transaction-details
|
||||
:wallet-settings-assets wallet-settings/manage-assets
|
||||
:wallet-add-custom-token custom-tokens/add-custom-token
|
||||
:wallet-custom-token-details custom-tokens/custom-token-details
|
||||
:wallet-transactions-filter [:modal wallet-transactions/filter-history]
|
||||
:my-profile profile.user/my-profile
|
||||
:contacts-list contacts-list/contacts-list
|
||||
:ens-main ens/main
|
||||
:ens-search ens/search
|
||||
:ens-checkout ens/checkout
|
||||
:ens-confirmation ens/confirmation
|
||||
:ens-terms ens/terms
|
||||
:ens-name-details ens/name-details
|
||||
:blocked-users-list contacts-list/blocked-users-list
|
||||
:profile-photo-capture photo-capture/profile-photo-capture
|
||||
:bootnodes-settings bootnodes-settings/bootnodes-settings
|
||||
:installations pairing/installations
|
||||
:edit-bootnode edit-bootnode/edit-bootnode
|
||||
:offline-messaging-settings offline-messaging-settings/offline-messaging-settings
|
||||
:edit-mailserver edit-mailserver/edit-mailserver
|
||||
:dapps-permissions dapps-permissions/dapps-permissions
|
||||
:privacy-and-security privacy-and-security/privacy-and-security
|
||||
:language-settings language-settings/language-settings
|
||||
:notifications-settings notifications-settings/notifications-settings
|
||||
:sync-settings sync-settings/sync-settings
|
||||
:advanced-settings advanced-settings/advanced-settings
|
||||
:help-center help-center/help-center
|
||||
:glossary glossary/glossary
|
||||
:about-app about-app/about-app
|
||||
:manage-dapps-permissions dapps-permissions/manage
|
||||
:network-settings network/network-settings-view
|
||||
:network-details network/network-details-view
|
||||
:network-info network-info/network-info
|
||||
:edit-network network/edit-network-view
|
||||
:log-level-settings log-level-settings/log-level-settings
|
||||
:fleet-settings fleet-settings/fleet-settings
|
||||
:currency-settings currency-settings/currency-settings
|
||||
:backup-seed profile.seed/backup-seed
|
||||
:tribute-to-talk tr-to-talk/tribute-to-talk
|
||||
:reset-card hardwallet.settings/reset-card
|
||||
:keycard-settings hardwallet.settings/keycard-settings
|
||||
:mobile-network-settings mobile-network-settings/mobile-network-settings
|
||||
:welcome [:modal home/welcome]
|
||||
:keycard-welcome keycard/welcome
|
||||
:add-new-account add-account/add-account
|
||||
:add-new-account-pin add-account/pin
|
||||
:account-settings account-settings/account-settings})
|
||||
|
||||
(defn get-screen [screen]
|
||||
(get all-screens screen #(throw (str "Screen " screen " is not defined."))))
|
||||
|
|
@ -1,18 +1,42 @@
|
|||
(ns status-im.ui.screens.routing.wallet-stack)
|
||||
(ns status-im.ui.screens.routing.wallet-stack
|
||||
(:require [status-im.utils.config :as config]
|
||||
[status-im.ui.screens.currency-settings.views :as currency-settings]
|
||||
[status-im.ui.screens.wallet.collectibles.views :as collectibles]
|
||||
[status-im.ui.screens.wallet.settings.views :as wallet-settings]
|
||||
[status-im.ui.screens.wallet.transactions.views :as wallet-transactions]
|
||||
[status-im.ui.screens.wallet.custom-tokens.views :as custom-tokens]
|
||||
[status-im.ui.screens.wallet.accounts.views :as wallet.accounts]
|
||||
[status-im.ui.screens.wallet.account.views :as wallet.account]
|
||||
[status-im.ui.screens.wallet.add-new.views :as add-account]
|
||||
[status-im.ui.screens.wallet.account-settings.views :as account-settings]
|
||||
[status-im.ui.screens.wallet.events :as wallet.events]
|
||||
[status-im.ui.screens.routing.core :as navigation]))
|
||||
|
||||
(def wallet-stack
|
||||
{:name :wallet-stack
|
||||
:screens (cond-> [:wallet
|
||||
:wallet-account
|
||||
:add-new-account
|
||||
:add-new-account-pin
|
||||
:account-settings
|
||||
:collectibles-list
|
||||
:wallet-onboarding-setup
|
||||
:wallet-transaction-details
|
||||
:wallet-settings-hook
|
||||
:wallet-settings-assets
|
||||
:wallet-add-custom-token
|
||||
:wallet-custom-token-details
|
||||
:currency-settings])
|
||||
:config {:initialRouteName :wallet}})
|
||||
(defonce stack (navigation/create-stack))
|
||||
|
||||
(defn wallet-stack []
|
||||
[stack {:initial-route-name :wallet
|
||||
:header-mode :none}
|
||||
[{:name :wallet
|
||||
:component wallet.accounts/accounts-overview}
|
||||
{:name :wallet-account
|
||||
:component wallet.account/account}
|
||||
{:name :add-new-account
|
||||
:component add-account/add-account}
|
||||
{:name :add-new-account-pin
|
||||
:component add-account/pin}
|
||||
{:name :account-settings
|
||||
:component account-settings/account-settings}
|
||||
{:name :collectibles-list
|
||||
:component collectibles/collectibles-list}
|
||||
{:name :wallet-transaction-details
|
||||
:component wallet-transactions/transaction-details}
|
||||
{:name :wallet-settings-assets
|
||||
:component wallet-settings/manage-assets}
|
||||
{:name :wallet-add-custom-token
|
||||
:on-focus [::wallet.events/wallet-add-custom-token]
|
||||
:component custom-tokens/add-custom-token}
|
||||
{:name :wallet-custom-token-details
|
||||
:component custom-tokens/custom-token-details}
|
||||
{:name :currency-settings
|
||||
:component currency-settings/currency-settings}]])
|
||||
|
|
|
@ -1,36 +1,30 @@
|
|||
(ns status-im.ui.screens.views
|
||||
(:require-macros [status-im.utils.views :refer [defview letsubs] :as views])
|
||||
(:require [re-frame.core :refer [dispatch]]
|
||||
[status-im.utils.platform :refer [android?]]
|
||||
[status-im.utils.universal-links.core :as utils.universal-links]
|
||||
(:require [status-im.utils.universal-links.core :as utils.universal-links]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.ui.screens.about-app.views :as about-app]
|
||||
[status-im.ui.components.react :as react]
|
||||
[status-im.ui.components.bottom-sheet.core :as bottom-sheet]
|
||||
[status-im.utils.navigation :as navigation]
|
||||
[status-im.ui.screens.routing.core :as navigation]
|
||||
[reagent.core :as reagent]
|
||||
[status-im.utils.random :as rand]
|
||||
[re-frame.core :as re-frame]
|
||||
[taoensso.timbre :as log]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.ui.screens.mobile-network-settings.view :as mobile-network-settings]
|
||||
[status-im.ui.screens.keycard.views :as keycard]
|
||||
[status-im.ui.screens.home.sheet.views :as home.sheet]
|
||||
[status-im.ui.screens.routing.core :as routing]
|
||||
[status-im.ui.screens.routing.main :as routing]
|
||||
[status-im.ui.screens.signing.views :as signing]
|
||||
[status-im.ui.screens.popover.views :as popover]
|
||||
[status-im.ui.screens.multiaccounts.recover.views :as recover.views]
|
||||
[status-im.utils.dimensions :as dimensions]
|
||||
[status-im.ui.screens.wallet.send.views :as wallet]
|
||||
[status-im.ui.components.tabbar.core :as tabbar]
|
||||
[status-im.ui.components.status-bar.view :as statusbar]
|
||||
status-im.ui.screens.wallet.collectibles.etheremon.views
|
||||
status-im.ui.screens.wallet.collectibles.cryptostrikers.views
|
||||
status-im.ui.screens.wallet.collectibles.cryptokitties.views
|
||||
status-im.ui.screens.wallet.collectibles.superrare.views
|
||||
status-im.ui.screens.wallet.collectibles.kudos.views))
|
||||
|
||||
(defonce rand-label (when js/goog.DEBUG (rand/id)))
|
||||
|
||||
(defonce initial-view-id (atom nil))
|
||||
|
||||
(defview bottom-sheet []
|
||||
(letsubs [{:keys [show? view]} [:bottom-sheet]]
|
||||
(let [opts (cond-> {:show? show?
|
||||
|
@ -58,95 +52,74 @@
|
|||
(merge (recover.views/bottom-sheet)))]
|
||||
[bottom-sheet/bottom-sheet opts])))
|
||||
|
||||
(defn reset-component-on-mount [view-id component two-pane?]
|
||||
(when (and @initial-view-id
|
||||
(or
|
||||
js/goog.DEBUG
|
||||
(not @component)))
|
||||
(reset! component (routing/get-main-component
|
||||
(if js/goog.DEBUG
|
||||
@initial-view-id
|
||||
@view-id)
|
||||
two-pane?))))
|
||||
(def debug? ^boolean js/goog.DEBUG)
|
||||
|
||||
(defn reset-component-on-update [view-id component two-pane?]
|
||||
(when (and @initial-view-id (not @component))
|
||||
(reset! component (routing/get-main-component
|
||||
(if js/goog.DEBUG
|
||||
@initial-view-id
|
||||
@view-id)
|
||||
two-pane?))))
|
||||
;; Persist navigation state in dev mode
|
||||
(when debug?
|
||||
(defonce state (atom nil))
|
||||
(defn- persist-state! [state-obj]
|
||||
(js/Promise.
|
||||
(fn [resolve _]
|
||||
(reset! state state-obj)
|
||||
(resolve true)))))
|
||||
|
||||
(defonce state (atom nil))
|
||||
(defn get-active-route-name [state]
|
||||
(let [index (get state "index")
|
||||
route (get-in state ["routes" index])]
|
||||
(if-let [state' (get route "state")]
|
||||
(get-active-route-name state')
|
||||
(some-> (get route "name") keyword))))
|
||||
|
||||
(defn persist-state [state-obj]
|
||||
(js/Promise.
|
||||
(fn [resolve reject]
|
||||
(reset! state state-obj)
|
||||
(resolve true))))
|
||||
(defn on-state-change [state]
|
||||
(let [route-name (get-active-route-name (js->clj state))]
|
||||
(tabbar/minimize-bar route-name)
|
||||
|
||||
(defn load-state []
|
||||
(js/Promise.
|
||||
(fn [resolve reject]
|
||||
(resolve @state))))
|
||||
;; NOTE(Ferossgp): Keycard did-load events backward compatibility
|
||||
(re-frame/dispatch [:screens/on-will-focus route-name])
|
||||
|
||||
;; NOTE(Ferossgp): Both calls are for backward compatibility, should be reworked in future
|
||||
(statusbar/set-status-bar route-name)
|
||||
(re-frame/dispatch [:set :view-id route-name]))
|
||||
(when debug?
|
||||
(persist-state! state)))
|
||||
|
||||
(defonce main-app-navigator (partial routing/get-main-component false))
|
||||
(defonce twopane-app-navigator (partial routing/get-main-component true))
|
||||
|
||||
(defn main []
|
||||
(let [view-id (re-frame/subscribe [:view-id])
|
||||
main-component (atom nil)
|
||||
main-component-two-pane (atom nil)
|
||||
two-pane? (reagent/atom (dimensions/fit-two-pane?))]
|
||||
(let [two-pane? (reagent/atom (dimensions/fit-two-pane?))]
|
||||
(.addEventListener react/dimensions
|
||||
"change"
|
||||
(fn [dimensions]
|
||||
(fn [_]
|
||||
(let [two-pane-enabled? (dimensions/fit-two-pane?)]
|
||||
(do
|
||||
(re-frame/dispatch [:set-two-pane-ui-enabled two-pane-enabled?])
|
||||
(log/debug ":set-two-pane " two-pane-enabled?)
|
||||
(reset! two-pane? two-pane-enabled?)))))
|
||||
|
||||
(when-not @initial-view-id
|
||||
(reset! initial-view-id @view-id))
|
||||
(reset-component-on-mount view-id main-component false)
|
||||
(reset-component-on-mount view-id main-component-two-pane true)
|
||||
(re-frame/dispatch [:set-two-pane-ui-enabled two-pane-enabled?])
|
||||
(reset! two-pane? two-pane-enabled?))))
|
||||
(reagent/create-class
|
||||
{:component-did-mount
|
||||
(fn []
|
||||
(re-frame/dispatch [:set-two-pane-ui-enabled @two-pane?])
|
||||
(log/debug :main-component-did-mount @view-id)
|
||||
(utils.universal-links/initialize))
|
||||
|
||||
:component-will-unmount
|
||||
utils.universal-links/finalize
|
||||
:component-will-update
|
||||
(fn []
|
||||
(when-not @initial-view-id
|
||||
(reset! initial-view-id @view-id))
|
||||
|
||||
(reset-component-on-update view-id main-component false)
|
||||
(reset-component-on-update view-id main-component-two-pane true)
|
||||
(when-not platform/desktop?
|
||||
(react/dismiss-keyboard!)))
|
||||
:component-did-update
|
||||
(fn []
|
||||
(log/debug :main-component-did-update @view-id))
|
||||
:reagent-render
|
||||
(fn []
|
||||
(when (and @view-id main-component)
|
||||
[react/safe-area-provider
|
||||
[react/view {:flex 1}
|
||||
[:> (if @two-pane? @main-component-two-pane @main-component)
|
||||
{:ref (fn [r]
|
||||
(navigation/set-navigator-ref r)
|
||||
(when (and
|
||||
platform/android?
|
||||
(not js/goog.DEBUG)
|
||||
(not (contains? #{:intro :login :progress} @view-id)))
|
||||
(navigation/navigate-to @view-id nil)))
|
||||
;; see https://reactnavigation.org/docs/en/state-persistence.html#development-mode
|
||||
:persistNavigationState (when js/goog.DEBUG persist-state)
|
||||
:loadNavigationState (when js/goog.DEBUG load-state)}]
|
||||
[wallet/prepare-transaction]
|
||||
[wallet/request-transaction]
|
||||
[wallet/select-account]
|
||||
[signing/signing]
|
||||
[bottom-sheet]
|
||||
[popover/popover]]]))})))
|
||||
[react/safe-area-provider
|
||||
[react/view {:flex 1
|
||||
:background-color :black}
|
||||
[navigation/navigation-container
|
||||
(merge {:ref (fn [r]
|
||||
(navigation/set-navigator-ref r))
|
||||
:onStateChange on-state-change
|
||||
:enableURLHandling false}
|
||||
(when debug?
|
||||
{:enableURLHandling true
|
||||
:initialState @state}))
|
||||
[(if @two-pane? twopane-app-navigator main-app-navigator)]]
|
||||
[wallet/prepare-transaction]
|
||||
[wallet/request-transaction]
|
||||
[wallet/select-account]
|
||||
[signing/signing]
|
||||
[bottom-sheet]
|
||||
[popover/popover]]])})))
|
||||
|
|
|
@ -6,7 +6,6 @@
|
|||
[status-im.ui.screens.wallet.accounts.views :as accounts]
|
||||
[status-im.ui.screens.wallet.accounts.sheets :as sheets]
|
||||
[reagent.core :as reagent]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[status-im.ui.components.list.views :as list]
|
||||
[status-im.i18n :as i18n]
|
||||
[status-im.ui.components.icons.vector-icons :as icons]
|
||||
|
@ -105,18 +104,12 @@
|
|||
[list/flat-list {:data tokens
|
||||
:default-separator? false
|
||||
:key-fn :name
|
||||
:footer [react/view
|
||||
{:style {:height tabs.styles/tabs-diff
|
||||
:align-self :stretch}}]
|
||||
:render-fn (accounts/render-asset (:code currency))}]
|
||||
(= tab :nft)
|
||||
(if (seq nfts)
|
||||
[list/flat-list {:data nfts
|
||||
:default-separator? false
|
||||
:key-fn :name
|
||||
:footer [react/view
|
||||
{:style {:height tabs.styles/tabs-diff
|
||||
:align-self :stretch}}]
|
||||
:render-fn (render-collectible address)}]
|
||||
[react/view {:align-items :center :margin-top 32}
|
||||
[react/text {:style {:color colors/gray}}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
(ns status-im.ui.screens.wallet.accounts.styles
|
||||
(:require [status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]))
|
||||
(:require [status-im.ui.components.colors :as colors]))
|
||||
|
||||
(def card-common
|
||||
{:margin-vertical 16
|
||||
|
@ -35,7 +34,7 @@
|
|||
:justify-content :center
|
||||
:left 0
|
||||
:right 0
|
||||
:bottom (+ 16 tabs.styles/tabs-diff)
|
||||
:bottom 16
|
||||
:height 40})
|
||||
|
||||
(def send-button
|
||||
|
|
|
@ -9,7 +9,6 @@
|
|||
[status-im.ui.components.chat-icon.screen :as chat-icon]
|
||||
[status-im.ui.components.list-item.views :as list-item]
|
||||
[status-im.wallet.utils :as wallet.utils]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[reagent.core :as reagent]
|
||||
[re-frame.core :as re-frame]
|
||||
[status-im.ui.screens.wallet.accounts.sheets :as sheets]
|
||||
|
@ -83,9 +82,6 @@
|
|||
[list/flat-list {:data tokens
|
||||
:default-separator? false
|
||||
:key-fn :name
|
||||
:footer [react/view
|
||||
{:style {:height tabs.styles/tabs-diff
|
||||
:align-self :stretch}}]
|
||||
:render-fn (render-asset (:code currency))}]))
|
||||
|
||||
(views/defview total-value []
|
||||
|
|
|
@ -0,0 +1,19 @@
|
|||
(ns status-im.ui.screens.wallet.events
|
||||
(:require [status-im.ui.screens.wallet.signing-phrase.views :as signing-phrase]
|
||||
[status-im.utils.handlers :as handlers]))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
::wallet-stack
|
||||
(fn [{:keys [db]}]
|
||||
(let [wallet-set-up-passed? (get-in db [:multiaccount :wallet-set-up-passed?])
|
||||
sign-phrase-showed? (get db :wallet/sign-phrase-showed?)]
|
||||
{:dispatch [:wallet.ui/pull-to-refresh] ;TODO temporary simple fix for v1
|
||||
:db (if (or wallet-set-up-passed? sign-phrase-showed?)
|
||||
db
|
||||
(assoc db :popover/popover {:view [signing-phrase/signing-phrase]}
|
||||
:wallet/sign-phrase-showed? true))})))
|
||||
|
||||
(handlers/register-handler-fx
|
||||
::wallet-add-custom-token
|
||||
(fn [{:keys [db]}]
|
||||
{:db (dissoc db :wallet/custom-token-screen)}))
|
|
@ -1,23 +0,0 @@
|
|||
(ns status-im.ui.screens.wallet.navigation
|
||||
(:require [status-im.ui.screens.navigation :as navigation]
|
||||
[status-im.ui.screens.wallet.signing-phrase.views :as signing-phrase]
|
||||
[re-frame.core :as re-frame]))
|
||||
|
||||
(defmethod navigation/preload-data! :wallet-stack
|
||||
[db [event]]
|
||||
(let [wallet-set-up-passed? (get-in db [:multiaccount :wallet-set-up-passed?])
|
||||
sign-phrase-showed? (get db :wallet/sign-phrase-showed?)]
|
||||
;;TODO temporary simple fix for v1
|
||||
(re-frame/dispatch [:wallet.ui/pull-to-refresh])
|
||||
(if (or (= event :navigate-back) wallet-set-up-passed? sign-phrase-showed?)
|
||||
db
|
||||
(assoc db :popover/popover {:view [signing-phrase/signing-phrase]}
|
||||
:wallet/sign-phrase-showed? true))))
|
||||
|
||||
(defmethod navigation/preload-data! :wallet-add-custom-token
|
||||
[db [event]]
|
||||
(dissoc db :wallet/custom-token-screen))
|
||||
|
||||
(defmethod navigation/preload-data! :add-new-account
|
||||
[db [event]]
|
||||
(dissoc db :add-account))
|
|
@ -1,11 +1,17 @@
|
|||
(ns status-im.ui.screens.wallet.transactions.styles
|
||||
(:require [status-im.ui.components.colors :as colors]
|
||||
[status-im.ui.components.tabbar.styles :as tabs.styles]
|
||||
[status-im.utils.platform :as platform]
|
||||
[status-im.utils.styles :as styles]))
|
||||
|
||||
(def tabs-height
|
||||
(cond
|
||||
platform/android? 52
|
||||
platform/ios? 52
|
||||
platform/desktop? 36))
|
||||
|
||||
(defn tab [active?]
|
||||
{:flex 1
|
||||
:height tabs.styles/tab-height
|
||||
:height tabs-height
|
||||
:justify-content :center
|
||||
:align-items :center
|
||||
:padding-bottom (if active? 0 1)
|
||||
|
@ -16,7 +22,7 @@
|
|||
|
||||
(def tabs-container
|
||||
{:flex-direction :row
|
||||
:height tabs.styles/tab-height})
|
||||
:height tabs-height})
|
||||
|
||||
(defn tab-title
|
||||
[active?]
|
||||
|
|
|
@ -142,6 +142,7 @@
|
|||
[list/item-primary-only {:accessibility-label :filter-name-text}
|
||||
label]]]]])
|
||||
|
||||
;; NOTE: Is this needed?
|
||||
(defview filter-history []
|
||||
(letsubs [{:keys [filters all-filters? on-touch-select-all]}
|
||||
[:wallet.transactions.filters/screen]]
|
||||
|
|
|
@ -49,7 +49,6 @@
|
|||
:initial-props
|
||||
:keyboard-height
|
||||
:keyboard-max-height
|
||||
:navigation-stack
|
||||
:network
|
||||
:network-status
|
||||
:peers-count
|
||||
|
|
|
@ -1,63 +0,0 @@
|
|||
(ns status-im.utils.navigation
|
||||
(:require [status-im.react-native.js-dependencies :as js-dependencies]
|
||||
[status-im.utils.platform :as platform]
|
||||
[goog.object :as gobj]))
|
||||
|
||||
(def navigation-actions
|
||||
(.-NavigationActions js-dependencies/react-navigation))
|
||||
|
||||
(def navigation-events
|
||||
(.-NavigationEvents js-dependencies/react-navigation))
|
||||
|
||||
(def stack-actions
|
||||
(.-StackActions js-dependencies/react-navigation))
|
||||
|
||||
(def navigator-ref (atom nil))
|
||||
|
||||
(defn set-navigator-ref [ref]
|
||||
(reset! navigator-ref ref))
|
||||
|
||||
(defn can-be-called? []
|
||||
@navigator-ref)
|
||||
|
||||
(defn navigate-to [route params]
|
||||
(when (can-be-called?)
|
||||
(.dispatch
|
||||
@navigator-ref
|
||||
(.navigate
|
||||
navigation-actions
|
||||
#js {:routeName (name route)
|
||||
:params (clj->js params)}))))
|
||||
|
||||
(defn navigate-replace [route params]
|
||||
(when (can-be-called?)
|
||||
(.dispatch
|
||||
@navigator-ref
|
||||
(.replace
|
||||
stack-actions
|
||||
#js {:routeName (name route)
|
||||
:params (clj->js params)}))))
|
||||
|
||||
(defn- navigate [params]
|
||||
(when (can-be-called?)
|
||||
(.navigate navigation-actions (clj->js params))))
|
||||
|
||||
(defn navigate-reset [state]
|
||||
(when (can-be-called?)
|
||||
(let [state' (update state :actions #(mapv navigate %))]
|
||||
(.dispatch
|
||||
@navigator-ref
|
||||
(.reset
|
||||
stack-actions
|
||||
(clj->js state'))))))
|
||||
|
||||
(defn navigate-back []
|
||||
(when (can-be-called?)
|
||||
(.dispatch
|
||||
@navigator-ref
|
||||
(.back navigation-actions))))
|
||||
|
||||
(defonce TwoPaneNavigator (gobj/get js-dependencies/react-native-navigation-twopane #js ["createTwoPaneNavigator"]))
|
||||
|
||||
(defn twopane-navigator [routeConfigs stackNavigatorConfig]
|
||||
(TwoPaneNavigator (clj->js routeConfigs) (clj->js stackNavigatorConfig)))
|
|
@ -47,7 +47,6 @@
|
|||
(def keychain #js {:setGenericPassword (constantly (.resolve js/Promise true))
|
||||
"ACCESSIBLE" {}
|
||||
"ACCESS_CONTROL" {}})
|
||||
(def react-navigation #js {:NavigationActions #js {}})
|
||||
(def desktop-menu #js {})
|
||||
(def desktop-config #js {})
|
||||
(def react-native-mail #js {:mail #js {}})
|
||||
|
@ -57,3 +56,14 @@
|
|||
(def net-info #js {})
|
||||
(def touchid #js {})
|
||||
(def safe-area-context #js {})
|
||||
|
||||
(def back-handler #js {:addEventListener identity
|
||||
:removeEventListener identity})
|
||||
(def react #js {:useCallback nil})
|
||||
(def react-navigation-native #js {:NavigationContainer #js {}
|
||||
:useFocusEffect identity
|
||||
:CommonActions #js {}
|
||||
:StackActions #js {}})
|
||||
(def react-navigation-stack #js {:createStackNavigator identity
|
||||
:TransitionPresets #js {:ModalPresentationIOS #js {}}})
|
||||
(def react-navigation-bottom-tabs #js {:createBottomTabNavigator identity})
|
||||
|
|
|
@ -32,8 +32,9 @@
|
|||
efx (login.core/multiaccount-login-success cofx)
|
||||
new-db (:db efx)
|
||||
json-rpc (into #{} (map :method (::json-rpc/call efx)))]
|
||||
(testing ":accounts/login cleared."
|
||||
(is (not (contains? new-db :multiaccounts/login))))
|
||||
;; TODO: Account is now cleared only after all sign in fx are executed.
|
||||
;; (testing ":accounts/login cleared."
|
||||
;; (is (not (contains? new-db :multiaccounts/login))))
|
||||
(testing "Check the rest of effects."
|
||||
(is (json-rpc "web3_clientVersion"))))))
|
||||
|
||||
|
|
Loading…
Reference in New Issue